Improve agent reliability and token efficiency
Some checks failed
quality / test (3.10) (push) Has been cancelled
quality / test (3.12) (push) Has been cancelled

This commit is contained in:
kandrusyak
2026-07-27 19:20:48 +03:00
parent 701cdd35d2
commit d1c1ef68d3
9 changed files with 1023 additions and 173 deletions

View File

@@ -16,6 +16,7 @@ class FakeCompletion:
self.configuration = None
self.messages = None
self.timeout = None
self.result = [SimpleNamespace(text=" готово ")]
def configure(self, **kwargs):
self.configuration = kwargs
@@ -24,7 +25,7 @@ class FakeCompletion:
async def run(self, messages, timeout):
self.messages = messages
self.timeout = timeout
return [SimpleNamespace(text=" готово ")]
return self.result
class FakeChatCompletions:
@@ -131,6 +132,38 @@ class YandexAIClientTests(unittest.IsolatedAsyncioTestCase):
["gpt://folder-id/qwen3.6-35b-a3b/latest"],
)
async def test_chat_logs_reported_token_usage(self) -> None:
class FakeResult(list):
pass
completion = FakeCompletion()
completion.result = FakeResult(
[SimpleNamespace(text="готово")]
)
completion.result.usage = SimpleNamespace(
prompt_tokens=120,
completion_tokens=8,
total_tokens=128,
)
completions = FakeChatCompletions(completion, self._list_models)
sdk = SimpleNamespace(
chat=SimpleNamespace(completions=completions),
)
client = YandexAIClient(folder_id="folder-id", sdk=sdk)
with self.assertLogs(
"assistant_bot.yandex_ai",
level="INFO",
) as captured:
await client.chat(
"yandexgpt",
[{"role": "user", "content": "Привет"}],
)
self.assertIn("input_tokens=120", captured.output[0])
self.assertIn("output_tokens=8", captured.output[0])
self.assertIn("total_tokens=128", captured.output[0])
async def test_list_models_returns_sorted_uris(self) -> None:
sdk = SimpleNamespace(
chat=SimpleNamespace(