Skip to main content

Second Opinion: a cross-referencing debate CLI where two frontier models debate, a cheaper judge rules, orchestrates, and synthesizes.

Project description

Second Opinion

A cross-referencing debate CLI. Two frontier debater models (e.g. Opus 4.8, GPT 5.2) independently answer your question, then debate it — critiquing and rebutting each other with evidence and live web search. A separate, cheaper judge model (e.g. Sonnet 4.6) rules on each round, asks clarifying questions when needed, and synthesizes the final answer with a stated confidence and any unresolved disagreement.

Every question debates by default. For a simple lookup where you don't need a second opinion, prefix it with ! (or pass --direct) to get a single direct answer from the judge — one cheap call, no debate.

Agreement is the stop condition, not a correctness proof. Two models can be confidently and identically wrong, and the judge is a single point of bias — so every ruling is rationale-backed and the final answer states its confidence.

Install

Requires Python 3.12+.

uv tool install 2nd-opinion-cli   # recommended — isolated, global `2op`
pipx install 2nd-opinion-cli      # same idea, via pipx
uvx --from 2nd-opinion-cli 2op    # run once without installing

Set your keys (ANTHROPIC_API_KEY / OPENAI_API_KEY) in the environment, or run 2op apikey to store them.

Usage

Run 2op to open an interactive session. Type a question to run a full debate, prefix it with ! for a direct single-judge answer (no debate), or use a slash command — type / for an autocompleting palette:

Command Description
/help List commands
/models Choose the debater/judge models and save them
/apikey View (masked) and add/update API keys
/status Show current models, keys, and flags
/clear Clear the screen
/exit Leave the session (or Ctrl-D)

For scripting, 2op -q "your question" runs a single debate and exits (as does any piped/non-TTY run). Set slots inline:

2op --debater-a opus-4.8 --debater-b gpt-5.2 --judge sonnet-4.6 -v -q "…"

Configuration

Model selection is saved after the first run to ~/.config/secondop/config.json and reused silently. Re-choose with /models (or -m at launch), or override a single slot with --debater-a / --debater-b / --judge.

API keys are read from the environment or a .env file first, then from the config file (set via /apikey). Environment/.env values take precedence.

Develop

python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env   # then add your keys
pytest

Pricing note

Model rates live in src/secondop/config.py and are verified against the 2026 catalog captured in pricing/*.json. Provider prices change — re-confirm against the live pricing pages before relying on cost figures.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

2nd_opinion_cli-0.1.0.tar.gz (64.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

2nd_opinion_cli-0.1.0-py3-none-any.whl (41.6 kB view details)

Uploaded Python 3

File details

Details for the file 2nd_opinion_cli-0.1.0.tar.gz.

File metadata

  • Download URL: 2nd_opinion_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 64.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for 2nd_opinion_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0ff9b409ada3361d1117b8214e50ab7ac0e6ea3e074248b9b05fc22ae6fd7d4d
MD5 d04aa76084064e2c715b185077ff91f7
BLAKE2b-256 3b4542b2bc770a84e52aa74a2c24530a98cc3f25fe802631100a5e6c4d85944c

See more details on using hashes here.

Provenance

The following attestation bundles were made for 2nd_opinion_cli-0.1.0.tar.gz:

Publisher: workflow.yml on Meaetin/2nd-opinion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file 2nd_opinion_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: 2nd_opinion_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for 2nd_opinion_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64e7e79d9361d7a9343f2aff8cdaa6fc293fb8547306a4ef7f287994c038679d
MD5 af60b69ca5e5de59b2905ac242481579
BLAKE2b-256 fd355f6399d6e8fb8d24bbe165c65ff13a6b81969b9242d63cbff7481f7ff719

See more details on using hashes here.

Provenance

The following attestation bundles were made for 2nd_opinion_cli-0.1.0-py3-none-any.whl:

Publisher: workflow.yml on Meaetin/2nd-opinion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page