ai-benchmark/scripts/README.md
second_constantine f117c7b23c doc: add test generation instructions and update run.sh
Added documentation for test generation through Ollama, including new command-line arguments for `generate_tests.py` and updated `run.sh` script. Also added a new `gen` command to `run.sh` for generating tests via Ollama. This improves usability by providing clear instructions and automation for test generation.
2026-01-17 02:40:38 +03:00

4.5 KiB
Raw Blame History

Скрипты для генерации тестов

Эта директория содержит утилиты для автоматизированной генерации и валидации тестовых данных с использованием Ollama.

generate_tests.py

Скрипт для генерации тестовых данных для AI бенчмарка через LLM.

Использование

# Генерировать 2 теста для перевода через Ollama
python scripts/generate_tests.py --count 2 --category translation --model llama3 --ollama-url http://localhost:11434

# Генерировать 1 тест для каждого типа
python scripts/generate_tests.py --count 1 --category all --model llama3 --ollama-url http://localhost:11434

# Генерировать 3 теста для пересказов
python scripts/generate_tests.py --count 3 --category summarization --model llama3 --ollama-url http://localhost:11434

# Валидировать существующие тесты
python scripts/generate_tests.py --validate tests/translation

Аргументы

  • --count: Количество тестов для генерации (по умолчанию: 1)
  • --category: Категория тестов (translation, summarization, codegen, или all) (по умолчанию: all)
  • --model: Название модели для генерации тестов (обязательный параметр, например: llama3)
  • --ollama-url: URL подключения к Ollama серверу (обязательный параметр, например: http://localhost:11434)
  • --validate: Валидировать тесты в указанной директории

Поддерживаемые категории

  1. translation - тесты переводов с английского на русский (LLM генерирует английский текст и его перевод)
  2. summarization - тесты пересказов текстов (LLM генерирует текст и его пересказ)
  3. codegen - тесты генерации Python кода (LLM генерирует задание и код)

Как работает генерация

Скрипт использует LLM для динамической генерации тестов:

  • Translation: LLM создает английский текст, затем переводит его на русский
  • Summarization: LLM генерирует текст о технологиях, затем создает его пересказ
  • Codegen: LLM формулирует задачу по программированию, затем пишет решение

Примеры generated тестов

Translation

{
  "prompt": "Translate the following English text to Russian: 'Hello, how are you today?'",
  "expected": "Привет, как дела сегодня?"
}

Summarization

{
  "prompt": "Summarize the following text in 1-2 sentences: 'The quick brown fox jumps over the lazy dog...'",
  "expected": "A quick fox jumps over a lazy dog, surprising it. The fox keeps running while the dog barks."
}

Codegen

{
  "prompt": "Write a Python function that calculates the factorial of a number using recursion.",
  "expected": "def factorial(n):\n    if n == 0 or n == 1:\n        return 1\n    else:\n        return n * factorial(n-1)"
}

Валидация

Скрипт автоматически валидирует generated тесты:

  • Проверяет наличие обязательных полей (prompt, expected)
  • Проверяет, что значения являются строками
  • Проверяет, что строки не пустые
  • Поддерживает ручную валидацию существующих тестов через --validate

Технические детали

  • Скрипт использует ollama_client.py для подключения к Ollama серверу
  • Каждый generated тест получает уникальный номер (test1.json, test2.json, и т.д.)
  • Если тест с таким номером уже существует, используется следующий доступный номер
  • Все тесты сохраняются в формате JSON с UTF-8 кодировкой
  • Поддерживается любая модель, доступная в Ollama