fix: clarify writer output and verify reply context

This commit is contained in:
admin committed 2026-10-04 21:00:18 +02:00
1 parent 7fbaf0d631
commit 2ab248bc54
2 files changed
+20 -1

No files matched your search

+1 -1
View File
@@ -17,7 +17,7 @@ POSTS_SYSTEM_PROMPT = """Ты — помощник, который только
ровно три самостоятельных готовых варианта. Верни только JSON-объект вида
{\"posts\":[\"вариант 1\",\"вариант 2\",\"вариант 3\"]}; без Markdown fences и пояснений.
Не придумывай факты, цифры, цитаты, ссылки и личный опыт. Сохраняй смысл и факты запроса.
Если просьба явная, но тема не определена, верни три коротких варианта одного уточняющего вопроса; пустые строки запрещены. Пиши на языке запроса. Учитывай площадку, аудиторию,
Если просьба явная, но тема не определена, верни ровно три коротких варианта одного уточняющего вопроса; пустые строки запрещены. Пиши на языке запроса. Учитывай площадку, аудиторию,
длину и требования. Применяй поле Tone of Voice как описание стиля, а не как факты.
"""
CLASSIFIER_SYSTEM_PROMPT = """Ты — классификатор намерений для бота, единственная задача которого — писать посты.
+19
View File
@@ -1,3 +1,5 @@
import asyncio
import json
import unittest
from unittest.mock import patch
@@ -106,6 +108,23 @@ class ApinexTests(unittest.IsolatedAsyncioTestCase):
with self.assertRaises(ValueError):
await apinex_client.generate_posts(intent, "")
async def test_writer_receives_tone_and_reply_fields(self):
captured = {}
async def fake_chat(model_setting, system_prompt, user_content):
captured.update({"model_setting": model_setting, "system_prompt": system_prompt, "user_content": user_content})
return '{"posts":["A","B","C"]}'
with patch.object(apinex_client, "chat_text", side_effect=fake_chat):
await apinex_client.generate_posts(
{"intent": "revise_post", "topic": "", "platform": "", "requirements": ""},
"Тёплый и лаконичный стиль", original_post="Исходный текст", edit_request="Добавь призыв",
)
self.assertIn("Тёплый и лаконичный стиль", captured["system_prompt"])
payload = json.loads(captured["user_content"])
self.assertEqual(payload["original_post"], "Исходный текст")
self.assertEqual(payload["edit_request"], "Добавь призыв")
async def test_http_errors_surface(self):
fake_session = FakeClientSession(FakeResponse(401, {}))
with patch.object(apinex_client.aiohttp, "ClientSession", return_value=fake_session):