Added code samples for AI-Agents

This commit is contained in:
2025-12-17 20:22:46 +03:00
parent d66aed35d6
commit 0885618b25
29 changed files with 2007 additions and 0 deletions

62
tests/test_chat_agent.py Normal file
View File

@@ -0,0 +1,62 @@
"""Тесты для чат-агента."""
import pytest
from unittest.mock import AsyncMock
from uuid import uuid4
from agents.chat_agent import ChatAgent
from agents.gigachat_client import GigaChatClient
from models.gigachat_types import GigaChatMessage, GigaChatResponse, GigaChatUsage, GigaChatChoice
from services.cache_service import CacheService
@pytest.fixture
def mock_gigachat():
"""Фикстура для мокового GigaChat клиента."""
return AsyncMock(spec=GigaChatClient)
@pytest.fixture
def mock_cache():
"""Фикстура для мокового CacheService."""
return AsyncMock(spec=CacheService)
@pytest.fixture
def chat_agent(mock_gigachat, mock_cache):
"""Фикстура для ChatAgent."""
return ChatAgent(gigachat=mock_gigachat, cache=mock_cache)
@pytest.mark.asyncio
async def test_chat_basic(chat_agent, mock_gigachat, mock_cache):
"""Тест базового чата."""
user_id = uuid4()
message = "Привет!"
mock_response = GigaChatResponse(
id="test_id",
object="chat.completion",
created=1234567890,
model="GigaChat-2-Lite",
choices=[
GigaChatChoice(
message=GigaChatMessage(role="assistant", content="Привет! Как дела? 🌍"),
index=0,
)
],
usage=GigaChatUsage(prompt_tokens=50, completion_tokens=10, total_tokens=60),
)
mock_gigachat.chat_with_response.return_value = mock_response
mock_cache.get_context.return_value = []
response, tokens = await chat_agent.chat(
user_id=user_id,
message=message,
conversation_id="test_conv",
)
assert response == "Привет! Как дела? 🌍"
assert tokens == 60
mock_cache.add_message.assert_called()