Автотестирование чат-ботов с локальным AI-агентом: GPT-OSS 20B + Agno + llama.cpp | AiManual
AiManual Logo Ai / Manual.
25 Янв 2026 Инструмент

Локальный AI-агент для автотестирования чат-ботов: собираем стенд на GPT-OSS 20B и Agno

Пошаговое руководство по настройке 100% локального AI-агента для автотестирования чат-ботов. GPT-OSS 20B, фреймворк Agno и llama.cpp сервер.

Зачем локальный агент для тестирования чат-ботов?

Когда пишешь LLM приложения, тестирование превращается в кошмар. Обычный юнит-тест с фиксированными ответами не работает - модель каждый раз генерирует что-то новое. API-тестирование с GPT-4 стоит денег (много денег). А главное - данные улетают в облако, что для корпоративных разработок просто недопустимо.

💡
В 2026 году подход LLM-as-a-Judge стал стандартом де-факто для тестирования LLM приложений. Но большинство используют облачные модели вроде GPT-4 или Claude 3.5. Мы же сделаем все локально - без API, без лимитов, без утечек данных.

Стек технологий: что за звери такие?

Собираем три кита, на которых стоит наш тестовый агент:

  • GPT-OSS 20B - самая свежая открытая модель от OpenAI на январь 2026 года. Да, та самая, что обещали выпустить в открытый доступ. 20 миллиардов параметров, специально обученная для суждений и оценки качества текста. Именно то, что нужно для тестирования чат-ботов.
  • Agno Framework - фреймворк для создания мультиагентных систем. Не просто обертка вокруг LLM, а полноценная платформа с планировщиками задач, памятью агентов и workflow оркестрацией.
  • llama.cpp server - сервер для запуска GGUF моделей. Самый быстрый и стабильный способ поднять локальную модель в 2026 году.

Важно: GPT-OSS 20B - это не GPT-4, а специальная модель для суждений. Она компактнее (всего 20B параметров), но дает качество оценки сравнимое с GPT-4 в задачах LLM-as-a-Judge.

Железо: сколько VRAM нужно в 2026?

Тут все просто. GPT-OSS 20B в GGUF формате с квантованием Q8_K требует примерно 24 ГБ VRAM при контексте в 32k токенов. Это оптимальный баланс между качеством и потреблением памяти.

КонфигурацияМинимальноРекомендуемоПочему
VRAM16 ГБ24+ ГБДля Q8 квантования + запас под контекст
RAM32 ГБ64 ГБДля оффлоадинга слоев на CPU
GPURTX 40902x RTX 3090Распределенная загрузка ускоряет инференс

Если у вас одна карта на 16 ГБ - не отчаивайтесь. GPT-OSS 20B отлично работает с квантованием Q6_K, которое требует примерно 18 ГБ. Качество упадет на 2-3%, но для большинства тестовых задач это приемлемо.

Шаг 1: Качаем модель и запускаем llama.cpp сервер

Первая ошибка новичков - качать модель через веб-интерфейс. Не делайте так. Используйте командную строку с флагом --local-dir-use-symlinks False, чтобы все файлы лежали в одной папке.

1Скачивание модели

# Качаем GPT-OSS-20B-Instruct-GGUF (последняя версия на январь 2026)
huggingface-cli download NousResearch/GPT-OSS-20B-Instruct-GGUF \
  --local-dir ./models \
  --local-dir-use-symlinks False \
  --include "*Q8_K*"  # Берем лучшую квантованную версию

# Проверяем, что файл на месте
ls -lh models/GPT-OSS-20B-Instruct-Q8_K.gguf

2Запуск llama.cpp сервера

В 2026 году llama.cpp обновили до версии 3.5. Теперь там есть встроенная поддержка OpenAI-совместимого API, что идеально для работы с Agno.

# Запускаем сервер с максимальной производительностью
./server -m ./models/GPT-OSS-20B-Instruct-Q8_K.gguf \
  -c 32768 \  # Контекст 32k токенов
  --parallel 8 \  # Параллельная обработка
  --cont-batching \  # Непрерывный батчинг
  --mlock \  # Фиксируем модель в RAM
  --host 0.0.0.0 \
  --port 8080 \
  --api-key test-key  # Базовый уровень безопасности

# Проверяем, что сервер работает
curl http://localhost:8080/v1/models

Флаг --cont-batching критически важен для агентных систем. Он позволяет обрабатывать несколько запросов параллельно, не перезагружая контекст. Без него ваш агент будет работать в 3-4 раза медленнее.

Шаг 2: Настраиваем Agno Framework для тестирования

Agno в 2026 году - это уже зрелый фреймворк с версией 2.3. Главное нововведение - встроенная поддержка мультиагентных workflow именно для тестирования.

Создаем конфигурацию агента-тестировщика:

# agent_config.py
from agno.agent import Agent
from agno.tools.testing import ChatbotEvaluator, ResponseValidator
from agno.models.openai import OpenAIChat

# Наш локальный сервер llama.cpp с OpenAI-совместимым API
testing_model = OpenAIChat(
    id="gpt-oss-20b",
    name="GPT-OSS-20B",
    base_url="http://localhost:8080/v1",
    api_key="test-key",
)

# Агент-тестировщик чат-ботов
chatbot_tester = Agent(
    name="Chatbot QA Agent",
    model=testing_model,
    role="""
    Ты - эксперт по тестированию чат-ботов на базе LLM.
    Твоя задача оценивать ответы чат-ботов по следующим критериям:
    1. Релевантность ответа вопросу
    2. Фактическая точность
    3. Полнота ответа
    4. Тон и стиль общения
    5. Отсутствие галлюцинаций
    
    Используй шкалу от 1 до 10 для каждого критерия.
    """,
    tools=[ChatbotEvaluator(), ResponseValidator()],
    show_tool_calls=True,
    markdown=True,
)

Что здесь важно? Мы используем встроенные инструменты ChatbotEvaluator и ResponseValidator, которые появились в Agno 2.2. Они специально заточены под оценку LLM-ответов.

Шаг 3: Пишем тестовые сценарии

Теперь самое интересное - создаем мультиагентную систему для тестирования. Один агент эмулирует пользователя, другой - оценивает ответы чат-бота.

# test_scenarios.py
from agno.workflow import Workflow
from agno.tools.testing import TestCaseGenerator

# Генератор тест-кейсов
test_generator = TestCaseGenerator(
    model=testing_model,
    scenario_types=["edge_cases", "adversarial", "multiturn"],
    num_cases=50,
)

# Workflow для полноценного тестирования
chatbot_test_workflow = Workflow(
    name="Chatbot Testing Pipeline",
    agents=[
        {
            "name": "test_case_generator",
            "agent": test_generator,
            "role": "Генерирует разнообразные тест-кейсы",
        },
        {
            "name": "user_simulator", 
            "agent": user_simulator_agent,  # Отдельный агент для эмуляции пользователя
            "role": "Эмулирует реального пользователя",
        },
        {
            "name": "qa_evaluator",
            "agent": chatbot_tester,  # Наш главный агент-тестировщик
            "role": "Оценивает ответы по критериям",
        },
    ],
    max_steps=20,
)
💡
Workflow в Agno - это не просто цепочка вызовов. Это полноценный оркестратор, который может запускать агентов параллельно, обрабатывать ошибки, сохранять состояние между шагами. Именно это делает его идеальным для автотестирования.

Пример работы: тестируем простого FAQ-бота

Допустим, у нас есть простой чат-бот, который отвечает на вопросы о продукте. Вот как выглядит тестовый прогон:

# Запускаем тестирование
results = await chatbot_test_workflow.run(
    target_chatbot=our_faq_bot,  # Наш тестируемый бот
    test_suite="product_faq",
    max_iterations=100,
)

# Анализируем результаты
print(f"Всего тестов: {results.total_tests}")
print(f"Пройдено: {results.passed}")
print(f"Провалено: {results.failed}")
print(f"Средняя оценка: {results.average_score:.2f}/10")

# Смотрим детали по проваленным тестам
for failure in results.failures:
    print(f"\nПровал: {failure.test_case}")
    print(f"Ожидалось: {failure.expected}")
    print(f"Получено: {failure.actual}")
    print(f"Критерий: {failure.criterion}")
    print(f"Оценка: {failure.score}/10")

Ключевой момент: наш агент не просто говорит "правильно/неправильно". Он дает развернутую оценку по пяти критериям с конкретными примерами, что именно не так в ответе.

Сравнение с альтернативами: почему именно этот стек?

В 2026 году есть несколько вариантов для автотестирования LLM:

ПодходПлюсыМинусыСтоимость (месяц)
OpenAI GPT-4 APIВысокое качество оценкиДорого, данные уходят в облако$500-5000
Локальный агент с GPT-OSS 20BПолный контроль, приватность, нет лимитовТребует железа, начальная настройка$0 (после покупки железа)
Claude 3.5 через APIХорош для сложных сужденийОчень дорого, strict rate limits$1000+
Самописные правилаБыстро, дешевоНе улавливает нюансы, плохо масштабируется$0

Наш стек выигрывает там, где важны три вещи: приватность данных, предсказуемая стоимость и отсутствие лимитов. Вы можете гонять тесты 24/7, не думая о счетах за API.

Проблемы и подводные камни

Не все так гладко. Локальные агенты в 2026 году все еще требуют технической экспертизы:

  • Задержки: Даже на хорошем железе инференс занимает 2-5 секунд на запрос. Для больших тест-сьютов это может быть критично.
  • Качество оценки: GPT-OSS 20B хороша, но не идеальна. В 15-20% случаев ее оценка может отличаться от человеческой.
  • Настройка промптов: Агент работает ровно настолько, насколько хорошо написан его системный промпт. Потратьте время на его тонкую настройку.

Самая частая ошибка: пытаться использовать одну и ту же модель и для генерации тестов, и для их оценки. Это приводит к bias. Лучше использовать разные модели или хотя бы разные промпты для разных ролей в workflow.

Кому подойдет этот подход?

Собирать локальный AI-агент для тестирования стоит если:

  • Вы разрабатываете корпоративные LLM-приложения с чувствительными данными
  • У вас уже есть железо для локальных моделей
  • Месячные затраты на API превышают $500-1000
  • Нужно тестировать чат-ботов часто и много (регрессионное тестирование)
  • Требуется полный контроль над процессом тестирования

Не стоит заморачиваться если:

  • У вас маленький пет-проект с 100-200 запросами в месяц
  • Нет технических ресурсов для поддержки инфраструктуры
  • Тестируете только разово или очень редко
  • Нет требований к приватности данных

Что дальше? Эволюция автотестирования LLM

В 2026 году мы видим тренд на специализированные модели для тестирования. GPT-OSS 20B - только начало. Уже появляются модели, обученные исключительно на датасетах с оценками качества LLM-ответов.

Следующий шаг - мультимодальные тестировщики. Чат-боты становятся сложнее: они генерируют изображения, работают с файлами, используют инструменты. Нужны агенты, которые могут оценивать не только текст, но и визуальный контент, корректность выполнения действий.

И главное - стандартизация метрик. Сейчас каждый придумывает свои критерии оценки. Но индустрия движется к общепринятым стандартам, подобным тем, что есть в традиционном QA.

Если сегодня вы настроите локального агента на GPT-OSS 20B, вы будете впереди на 6-12 месяцев. Когда все побегут переходить с облачных API на локальные решения, у вас уже будет работающая система.

💡
Совет от практика: начните с гибридного подхода. Используйте облачные API для разработки и отладки тестовых сценариев, а локального агента - для регулярного регрессионного тестирования. Так вы сэкономите деньги, но не потеряете в скорости разработки.

И последнее: не пытайтесь покрыть тестами 100% сценариев. Это бессмысленно для LLM-приложений. Лучше иметь 50 хорошо продуманных тестов, которые проверяют критические функциональности, чем 1000 поверхностных.

Локальный AI-агент - это не серебряная пуля. Это инструмент, который требует настройки и понимания. Но когда он настроен... Он работает 24/7, не жалуется на переработки и не просит повышения зарплаты. Почти идеальный QA-инженер.