SNHP
Consultor gratuito de negociação baseado em teoria dos jogos para agentes de IA, além de sessões pagas com recibo e memória de agente.
Documentação
SNHP
Matemática de negociação gratuita para agentes de IA. Uma chamada, sem conta. Seu agente traz o LLM; o SNHP traz a teoria dos jogos — seu próximo movimento matematicamente ótimo em qualquer negociação, preço único e multi-questão, sem LLM, roda localmente. Quando você precisar com registro: sessões com recibo por $2. Quando você precisar que ele lembre: memória do agente (custódia cega — você criptografa antes de salvar; armazenamos apenas o texto cifrado e não podemos lê-lo).
🏆 O Ranking de Negociação
arena.snhp.dev/leaderboard.html — qual IA sai com mais dinheiro? Modelos Claude, um divisor ingênuo, um genoma evoluído em uma simulação ao vivo e bots da comunidade negociam os mesmos acordos multi-questão retidos contra o motor SNHP, pontuados contra a fronteira exata de Pareto. Cada partida é uma negociação real registrada, reproduzível no navegador. Resultado principal: modelos de fronteira, sozinhos, perdem para o bot ingênuo de dividir a diferença — conectados ao motor no meio do acordo, ficam quase ótimos.
Coloque seu bot no ranking: exponha um endpoint HTTP que fale snhp-gauntlet/1 e envie por DM para @ryuxik a URL. O executor vive em arena/gauntlet/ — protocolo, assentos, pontuação e o bot inicial de 25 linhas. Especificação legível por máquina: arena.snhp.dev/llms.txt.
Instalação
uvx snhp # zero-install: runs the stdio MCP server on demand
# or
pip install snhp
Conecte-o a qualquer cliente MCP (Claude Desktop, Cursor, Cline, …):
{ "mcpServers": { "snhp": { "command": "uvx", "args": ["snhp"] } } }
Ou chame a matemática diretamente — dólares simples entram, o movimento sai (a ferramenta negotiate):
from gametheory.negotiation.plain_terms import negotiate_turn
negotiate_turn(
side="sell", walk_away=4000, target=6000,
counterparty_offers=[4200, 4500], rounds_left=6,
)
# -> {'action': 'counter', 'recommended_price': 5752.2,
# 'message': 'Thanks for the offer. The best I can do on this is $5,752.20.', ...}
Acordos multi-questão fazem logrolling automaticamente — o SNHP infere as prioridades do outro lado e propõe o pacote que maximiza o excedente conjunto (conceda o que você menos valoriza para segurar o que você mais valoriza):
from gametheory.negotiation.bundle import negotiate_bundle
negotiate_bundle(
issues=[
{"name": "price", "options": [100, 120, 140], "my_utility": [1.0, 0.5, 0.0], "their_utility": [0.0, 0.5, 1.0]},
{"name": "support", "options": ["basic", "priority"], "my_utility": [1.0, 0.0], "their_utility": [0.0, 1.0]},
],
my_priorities={"price": 0.8, "support": 0.2},
)
# -> recommended_offer {'price': 100, 'support': 'priority'} + the trade logic behind it
Cartão de agente hospedado, MCP transmissível e uma demonstração ao vivo: snhp.dev.
O que há aqui
snhp/ Core algorithm + NegMAS agent + B2B tournament harness
gametheory/ Productization layer (FastAPI, MCP, Tier 1/2/3 endpoints)
gametheory/negotiation/ Plain-terms single- + multi-issue (logrolling) engines
gametheory/server/ HTTP + MCP entry points
gametheory/tests/ pytest suite
SNHP_Whitepaper/ Protocol description + 3 component PRDs
Desenvolver a partir do código-fonte
git clone https://github.com/ryuxik/snhp && cd snhp
python -m venv venv && source venv/bin/activate
pip install -e ".[test]"
python -m pytest gametheory/tests/ # test suite
uvicorn gametheory.server.http:app --reload # local API (catalog at /v1/catalog)
snhp # stdio MCP server
Âncora empírica
Vários números diferentes — mantenha-os separados
Estas são medições distintas; confundi-las é o erro fácil. Elas estão ordenadas por quanto peso podem carregar, não por quando as executamos. A primeira foi pré-registrada e validada em dados que nunca tinha visto; as demais não foram, e são relatadas aqui com as ressalvas que isso implica.
1. O desafio de certificação (pré-registrado, retido) — o número em que confiar. A utilidade própria média de um agente certificado supera uma linha de base de dividir a diferença em +0.1086 em n=360 negociações semeadas (60 cenários × 2 papéis × 3 oponentes roteirizados congelados: ingênuo, linha-dura, concessor), p=0.0001, separando tanto no conjunto público quanto em um conjunto retido que nunca havia sido usado. O pool de contrapartes e a estatística foram congelados em arena/gauntlet/PREREG-pool.md antes de o código existir. Ele carrega mais peso precisamente porque poderia ter falhado no registro — e um corte anterior deste certificado falhou (três estatísticas saturadas contra uma contraparte fixa; veja arena/gauntlet/certs/SEPARATION.md), razão pela qual o protocolo foi re-registrado em vez de reajustado. O escopo é exatamente o pool declarado e nada mais amplo.
2. Margem competitiva frente a frente (não registrada antecipadamente). Em um LLM com suporte SNHP vs um LLM sem SNHP, quanto mais do excedente o lado SNHP captura? Na execução comprometida entre fornecedores (gametheory/server/static/e6_cross_vendor.json, Sonnet+SNHP vs Haiku, n=20 sementes pareadas), a margem agrupada é ~+12,5% (mean h3_margin ≈ 0.125, 29/40 sinais positivos). Algum texto publicado ainda cita isso como "~12% melhor frente a frente." Leia com as ressalvas: n=20, LLM-vs-LLM, preço de questão única, sem pré-registro, e o oponente é um prompt geral vanilla — contra um competente, a vantagem cai pela metade (veja o teste de linha de base forte abaixo). Onde isso e (1) discordarem, prefira (1).
3. Ganho de bem-estar conjunto em autojogo (uma métrica de cooperação, NÃO a mesma coisa). Negociação de contrato B2B com dois Sonnet, n=20 sementes pareadas:
| Condição | Bem-estar conjunto (fronteira ≈ 1,57, estimada) |
|---|---|
| Sonnet vanilla (prompt geral, sem SNHP) | 1,40 |
| SNHP puro vs SNHP puro (apenas matemática) | 1,45 |
| Sonnet + ferramenta MCP SNHP (ambos os lados) | 1,59 |
| Haiku + ferramenta MCP SNHP (entre modelos) | 1,61 |
Ganho de ambos os lados adotando a ferramenta SNHP: +0,186 de bem-estar conjunto, teste de sinais 18/20, p=0,0004. (Os 1,59/1,61 excedem ligeiramente a estimativa da fronteira de 1,57 — a fronteira foi estimada em uma grade grosseira, então trate-os como "na fronteira", não "além dela".) Custo: $0,025 por confronto no preço de 2026-04.
4. O teste de construir vs comprar: SNHP vs um prompt de produção FORTE
Os números (2) e (3) acima são contra um prompt geral vanilla. A questão mais afiada — "por que não apenas dar um bom prompt ao LLM?" — é respondida executando o SNHP contra um prompt de produção forte (snhp/llm_strong_baseline.py, cujo prompt de sistema até inclui conselhos de logrolling). No contrato de 4 questões, Haiku+ferramenta SNHP vs Haiku+prompt forte, n=12 sementes pareadas (python -m snhp.strong_baseline_headtohead, resultado comprometido em gametheory/server/static/strong_baseline_headtohead.json):
| Métrica | Valor |
|---|---|
| Margem de utilidade (SNHP − linha de base forte) | +0,077, IC 95% [+0,039, +0,115] (exclui 0) |
| Participação do SNHP no excedente conjunto | 54% (IC [52%, 56%]) |
| Teste de sinais | 8/12 positivos, 0 negativos |
O SNHP vence até um prompt de produção forte — mas por aproximadamente metade da vantagem que mostra contra um fraco. Ressalvas: n=12, Haiku (não Sonnet), um domínio de contrato; reexecute com n maior / um modelo mais forte para apertar o IC.
Efeito de rede: o prêmio de cooperação exige que ambos os lados estejam ancorados no SNHP. Confrontos assimétricos (Sonnet+SNHP vs Sonnet vanilla) perdem 0,11 de utilidade vs jogo simétrico com suporte. O modo conselheiro entre pares só dispara quando a contraparte publicou uma atestação SNHP verificável.
Demonstração ao vivo (reprodução do trace real da API na semente=42): https://snhp.dev/demo.html
Classificação no torneio (honesta, por mercado)
No round-robin comprometido (leaderboard/results/leaderboard.json, n_rounds=20), a classificação do SNHP por utilidade média depende do mercado:
| Mercado (BATNA) | Classificação SNHP | Topo do campo |
|---|---|---|
| Mercado do comprador (assimétrico) | #1 de 21 | SNHP 0,508 |
| Mercado do vendedor (assimétrico) | #1 de 21 | SNHP 0,520 |
| Simétrico (neutro) | 5º de 21 | Logroller 0,525, The Closer, Cialdini, Principled, depois SNHP 0,512 |
Então o SNHP é #1 nos mercados assimétricos e no meio do pacote no simétrico — não leia isso como "#1 geral." Sua variância é a menor do campo. Em n_rounds=100 o campo simétrico se reestabiliza ainda mais e Aspiration lidera.
Este agente NegMAS (snhp/negmas_agent.py) é um artefato de pesquisa e NÃO é o recomendador do produto enviado — as alegações do produto abaixo são medidas no código enviado, não neste torneio.
Veja gametheory/evals/README.md para o runbook de avaliação/ajuste.
Níveis
- Nível 1 — Negociação: recomendadores do lado vendedor + comprador, detecção de ataque de âncora, commit-reveal criptográfico de primeiro movimento, e-mails de resposta redigidos por LLM (pagos).
- Nível 2 — Leilões: Vickrey / BNE de primeiro preço / ascendente inglês, reserva ótima de Myerson, recomendação de formato, simulação MC.
- Nível 3 — Design de mecanismos: Gale-Shapley, leilão ótimo assimétrico de Myerson, preço fixado de Gallego-van Ryzin.
Nível 4 (jogos de coalizão) adiado até um comprador pagante pedir.
mcp-name: io.github.ryuxik/snhp-negotiation