Skip to content

Fix chat agent: improve prompt, strip DSML leaks#141

Closed
ohld wants to merge 1 commit intoproductionfrom
fix/chat-agent-prompt
Closed

Fix chat agent: improve prompt, strip DSML leaks#141
ohld wants to merge 1 commit intoproductionfrom
fix/chat-agent-prompt

Conversation

@ohld
Copy link
Copy Markdown
Member

@ohld ohld commented Mar 28, 2026

Summary

  • DSML leak fix: DeepSeek иногда выводит внутренний XML (<|DSML|function_calls>...) как текст вместо использования tool_calls API. Добавлен _clean_response() с regex, который стрипает эти артефакты перед отправкой в чат
  • Промпт переписан: убран "ассистентский" тон, добавлена явная персона ("чувак в чате"), антикринж-правила ("не пиши 'отличный вопрос', 'рад помочь'"), правило "мем сам за себя говорит" (не дублировать текстом после отправки мема)
  • Параметры: temperature 0.8→0.7 (меньше рандома), max_tokens 500→300 (ответы должны быть короткими), MAX_TURNS 8→5
  • Tool descriptions: добавлены подсказки по использованию ("Use short queries, 1-3 words", "If you send a meme, you don't need to also write a text reply")

Что было не так

  1. Бот иногда отправлял сырой XML в чат:
<|DSML|function_calls>
<|DSML|invoke name="send_meme">
<|DSML|parameter name="meme_id" string="true">9741509</|DSML|parameter>
</|DSML|invoke>
</|DSML|function_calls>
  1. Ответы были сухими и кринжовыми — промпт был слишком rule-based, 10 правил через "не делай X", без примеров тона

Changes

File What
prompts.py Полная переработка system prompt
runner.py _clean_response() + regex для DSML, tuning параметров
tools.py Улучшены описания инструментов

Test plan

  • Проверить что DSML regex матчит паттерн <|DSML|...> (unit test или manual)
  • Задеплоить на стейдж, потыкать бота в чате — ответы не должны содержать XML
  • Проверить что тон ответов стал менее "ассистентским"
  • Проверить что мем + текст не дублируются (бот не пишет "вот мем" после send_meme)

- Rewrite system prompt: less rule-heavy, more natural persona voice,
  explicit anti-assistant-cringe guidance, "meme speaks for itself" rule
- Add _clean_response() to strip DSML XML artifacts that DeepSeek
  sometimes outputs as text instead of using tool_calls API
- Lower temperature 0.8→0.7 and max_tokens 500→300 for shorter replies
- Reduce MAX_TURNS 8→5 (agent shouldn't need 8 rounds)
- Improve tool descriptions with usage hints
@ohld
Copy link
Copy Markdown
Member Author

ohld commented Mar 30, 2026

Superseded by #142 which migrates to OpenAI Agents SDK. All fixes from this PR (DSML cleanup, prompt rewrite, parameter tuning, tool descriptions) are included in the SDK migration with a cleaner architecture.

@ohld ohld closed this Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant