Two LLMs enter. One verdict leaves.
Project description
versus-llm
versus запускает спор двух LLM прямо в терминале. Один агент защищает идею, второй спорит с ним, потом судья дает короткий вердикт.
Обычно запускай без аргументов, чтобы открыть главное меню:
versus
В меню можно ввести вопрос, выбрать число раундов и добавить файл с контекстом.
Установка
Нужен Python 3.10 или новее.
pip install versus-llm
Проверь, что команда установилась:
versus --version
Ожидаемый вывод:
versus-llm 1.2.1
Настройка OpenRouter
versus работает через OpenRouter, поэтому нужен свой API-ключ. Это не сложно: один раз создаешь ключ, вставляешь его в versus setup, дальше CLI сам его хранит.
Как получить ключ
- Открой страницу: https://openrouter.ai/keys
- Войди в аккаунт OpenRouter.
- Нажми кнопку создания ключа.
- Скопируй ключ.
По сути, это делается в 2 клика: создать ключ и скопировать его. Вручную создавать .env не нужно.
Как сохранить ключ в versus
versus setup
CLI спросит:
Вставь API-ключ OpenRouter:
Вставь ключ и нажми Enter. Символы при вводе скрыты, но после сохранения versus покажет короткую маску ключа, например:
API-ключ OpenRouter сохранен (sk-o...abcd): C:\Users\...\versus-llm\.env
Команда versus login делает то же самое:
versus login
Если ключ не настроен, versus напишет:
API-ключ OpenRouter не настроен.
Запусти:
versus setup
Первый запуск
После настройки ключа лучше запускать versus без вопроса:
versus
Откроется главное меню. В нем можно ввести вопрос, указать файл с контекстом и выбрать число раундов. Это основной способ пользоваться приложением.
Что произойдет:
- Агент A даст сильный аргумент.
- Агент B разберет слабые места и возразит.
- Раунды повторятся заданное число раз.
- Судья прочитает спор и даст вердикт.
Если вопрос на русском, судья должен отвечать на русском.
Основной запуск
Открыть главное меню
versus
Главное меню удобнее прямого CLI-запуска: там можно управлять вопросом, файлом с контекстом и количеством раундов без длинной команды.
Быстрый CLI-вариант
Если нужно запустить спор одной командой, можно сразу передать вопрос:
versus "Стоит ли учить Rust в 2026?"
Указать число раундов из CLI
versus "React или Vue?" --rounds 3
По умолчанию используется 2 раунда.
Добавить файл с контекстом из CLI
versus "Какая база лучше подходит под эту схему?" --file schema.sql
Файл должен быть не больше 200 КБ. Его текст добавляется к вопросу как контекст для обоих агентов.
Сохранить спор в Markdown из CLI
versus "PostgreSQL или MongoDB?" --output debate.md
После завершения появится файл debate.md с вопросом, ответами агентов и вердиктом судьи.
Выбрать модели вручную из CLI
versus "React или Vue?" --models openai/gpt-oss-120b:free nvidia/nemotron-3-super-120b-a12b:free google/gemma-4-31b-it:free
Порядок важен:
--models MODEL_A MODEL_B [JUDGE_MODEL]
Первая модель отвечает за агента A, вторая за агента B, третья за судью. Если указать только две модели, судья использует модель по умолчанию.
Главное меню
Это рекомендуемый режим после versus setup. Если запустить versus без вопроса, откроется полноэкранное меню:
versus
Там можно ввести вопрос, путь к файлу с контекстом и число раундов. Для обычного использования этого достаточно.
Горячие клавиши:
| Клавиша | Что делает |
|---|---|
S |
сохранить спор в debate.md |
r |
вернуться к новому вопросу |
q |
выйти |
Ctrl+C |
выйти после повторного нажатия |
Параметры CLI
| Параметр | Что делает | По умолчанию |
|---|---|---|
question |
вопрос для спора | открывает главное меню, если вопрос не указан |
--file |
путь к файлу с контекстом | нет |
--rounds |
число раундов | 2 |
--models |
две или три модели OpenRouter: агент A, агент B и опционально судья | openai/gpt-oss-120b:free, nvidia/nemotron-3-super-120b-a12b:free, google/gemma-4-31b-it:free |
--output |
путь для сохранения Markdown-файла | нет |
--version |
показать версию | 1.2.1 |
Где хранится ключ
versus setup сохраняет ключ локально:
| Система | Путь |
|---|---|
| Windows | %APPDATA%/versus-llm/.env |
| macOS/Linux | ~/.config/versus-llm/.env |
Также работают старые способы:
OPENROUTER_API_KEY=your_key_here
и файл .env в текущей папке.
Приоритет такой:
- Переменная окружения
OPENROUTER_API_KEY. .envв текущей папке.- Конфиг, созданный через
versus setup.
Если бесплатная модель не отвечает
Бесплатные модели OpenRouter иногда возвращают 429: провайдер временно ограничил запросы. versus сам делает повторные попытки, но иногда нужно подождать и запустить команду еще раз.
Если проблема повторяется:
versus "твой вопрос" --models openai/gpt-oss-120b:free nvidia/nemotron-3-super-120b-a12b:free google/gemma-4-31b-it:free
Можно выбрать другие модели OpenRouter через --models.
Локальная разработка
Если ты клонировал репозиторий:
pip install -e .
Проверки:
python -m py_compile versus.py
python -m unittest discover tests
versus --version
Лицензия
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file versus_llm-1.2.1.tar.gz.
File metadata
- Download URL: versus_llm-1.2.1.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2f7d107871a35488985f18e2170798c0e35207bbcd9db9987f8f5dfdeb64959
|
|
| MD5 |
b0755701b0d0d1fb2b104dad9c4badea
|
|
| BLAKE2b-256 |
05184b44a9198339bab3dff5179d108735d73d1743534d313846cc7573564aaf
|
File details
Details for the file versus_llm-1.2.1-py3-none-any.whl.
File metadata
- Download URL: versus_llm-1.2.1-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c04dace82567a3d4edf37cfc81c056655cb3835a82a6947f7c3a5497318cc269
|
|
| MD5 |
ea812a0f439a199ffd5cbb33c339e8b5
|
|
| BLAKE2b-256 |
c67412356a2e7ab83728ab8270d67ce4f0964de43ad8daffa24b8b5bd46e0e3d
|