SNHP
Asesor gratuito de negociación basado en teoría de juegos para agentes de IA, más sesiones pagadas con recibo y memoria de agentes.
Documentación
SNHP
Matemáticas de negociación gratuitas para agentes de IA. Una llamada, sin cuenta. Tu agente aporta el LLM; SNHP aporta la teoría de juegos: tu próximo movimiento matemáticamente óptimo en cualquier negociación, de precio único y de múltiples temas, sin LLM, se ejecuta localmente. Cuando lo necesites para que conste: sesiones con recibo por $2. Cuando lo necesites para recordar: memoria del agente (custodia ciega: tú cifras antes de guardar; nosotros almacenamos solo el texto cifrado y no podemos leerlo).
· snhp.dev · Manifiesto
🏆 El Ranking de Negociación
arena.snhp.dev/leaderboard.html — ¿qué IA se lleva más dinero? Los modelos Claude, un divisor ingenuo, un genoma evolucionado en una simulación en vivo y bots de la comunidad negocian los mismos acuerdos de múltiples temas retenidos contra el motor SNHP, puntuados según la frontera de Pareto exacta. Cada partida es una negociación real grabada, reproducible en el navegador. Resultado principal: los modelos frontera, en solitario, pierden contra el bot ingenuo de dividir la diferencia — conectados al motor a mitad del acuerdo, son casi óptimos.
Pon tu bot en el ranking: expón un endpoint HTTP que hable snhp-gauntlet/1 y envía por mensaje directo a @ryuxik la URL. El ejecutor vive en arena/gauntlet/ — protocolo, asientos, puntuación y el bot inicial de 25 líneas. Especificación legible por máquina: arena.snhp.dev/llms.txt.
Instalación
uvx snhp # zero-install: runs the stdio MCP server on demand
# or
pip install snhp
Conéctalo a cualquier cliente MCP (Claude Desktop, Cursor, Cline, …):
{ "mcpServers": { "snhp": { "command": "uvx", "args": ["snhp"] } } }
O llama a las matemáticas directamente — dólares simples de entrada, el movimiento de salida (la herramienta 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.', ...}
Los acuerdos de múltiples temas se compensan automáticamente — SNHP infiere las prioridades de la otra parte y propone el paquete que maximiza el excedente conjunto (concede lo que menos valoras para conservar lo que más valoras):
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
Tarjeta de agente alojada, MCP transmisible y una demo en vivo: snhp.dev.
Qué hay aquí
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
Desarrollar desde el código fuente
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
Anclaje empírico
Varios números distintos — no los confundas
Estas son mediciones diferentes; confundirlas es el error fácil. Están ordenadas por cuánto peso pueden soportar, no por cuándo las ejecutamos. La primera fue pre-registrada y validada con datos que nunca había visto; las demás no lo fueron, y se reportan aquí con las advertencias que eso implica.
1. El desafío de certificación (pre-registrado, retenido) — el número en el que confiar. La utilidad propia media de un agente certificado supera la línea base de dividir la diferencia en +0.1086 en n=360 negociaciones sembradas (60 escenarios × 2 roles × 3 oponentes scripteados congelados: ingenuo, duro, condescendiente), p=0.0001, separando tanto en el conjunto público como en un conjunto retenido que nunca se había usado. El grupo de contrapartes y el estadístico se congelaron en arena/gauntlet/PREREG-pool.md antes de que el código existiera. Lleva el mayor peso precisamente porque podría haber fallado en el registro — y un corte anterior de este certificado sí falló (tres estadísticos saturados contra una contraparte fija; ver arena/gauntlet/certs/SEPARATION.md), por lo que el protocolo se re-registró en lugar de re-ajustarse. El alcance es exactamente el grupo declarado y nada más amplio.
2. Margen competitivo cara a cara (no registrado de antemano). En un LLM con andamiaje SNHP vs un LLM sin SNHP, ¿cuánto más del excedente captura el lado SNHP? En la ejecución comprometida entre proveedores (gametheory/server/static/e6_cross_vendor.json, Sonnet+SNHP vs Haiku, n=20 semillas pareadas) el margen agrupado es ~+12.5% (mean h3_margin ≈ 0.125, 29/40 signos positivos). Parte del texto publicado aún cita esto como "~12% mejor cara a cara." Léelo con las advertencias: n=20, LLM-vs-LLM, precio de un solo tema, sin pre-registro, y el oponente es un prompt general estándar — contra uno competente la ventaja se reduce aproximadamente a la mitad (ver la prueba de línea base fuerte abajo). Donde esto y (1) difieran, prefiere (1).
3. Mejora del bienestar conjunto en auto-juego (una métrica de cooperación, NO lo mismo). Negociación de contrato B2B con dos Sonnet, n=20 semillas pareadas:
| Condición | Bienestar conjunto (frontera ≈ 1.57, estimada) |
|---|---|
| Sonnet estándar (prompt general, sin SNHP) | 1.40 |
| SNHP puro vs SNHP puro (solo matemáticas) | 1.45 |
| Sonnet + herramienta MCP SNHP (ambos lados) | 1.59 |
| Haiku + herramienta MCP SNHP (entre modelos) | 1.61 |
Mejora por adoptar ambos lados la herramienta SNHP: +0.186 de bienestar conjunto, prueba de signos 18/20, p=0.0004. (Los 1.59/1.61 superan ligeramente la estimación de la frontera de 1.57 — la frontera se estimó en una cuadrícula gruesa, así que trátalos como "en la frontera," no "más allá de ella.") Costo: $0.025 por enfrentamiento al precio de 2026-04.
4. La prueba de construir vs comprar: SNHP contra un prompt de producción FUERTE
Los números (2) y (3) anteriores son contra un prompt general estándar. La pregunta más aguda — "¿por qué no simplemente escribir bien el prompt del LLM?" — se responde ejecutando SNHP contra un prompt de producción fuerte (snhp/llm_strong_baseline.py, cuyo prompt de sistema incluso incluye consejos de compensación). En el contrato de 4 temas, Haiku+herramienta SNHP vs Haiku+prompt fuerte, n=12 semillas pareadas (python -m snhp.strong_baseline_headtohead, resultado comprometido en gametheory/server/static/strong_baseline_headtohead.json):
| Métrica | Valor |
|---|---|
| Margen de utilidad (SNHP − línea base fuerte) | +0.077, IC 95% [+0.039, +0.115] (excluye 0) |
| Participación de SNHP en el excedente conjunto | 54% (IC [52%, 56%]) |
| Prueba de signos | 8/12 positivos, 0 negativos |
SNHP supera incluso un prompt de producción fuerte — pero por aproximadamente la mitad de la ventaja que muestra contra uno débil. Advertencias: n=12, Haiku (no Sonnet), un dominio de contrato; re-ejecutar con n mayor / un modelo más fuerte para estrechar el IC.
Efecto de red: la prima de cooperación requiere que ambos lados estén respaldados por SNHP. Los enfrentamientos asimétricos (Sonnet+SNHP vs Sonnet estándar) pierden 0.11 de utilidad frente al juego simétrico con andamiaje. El modo asesor entre pares solo se activa cuando la contraparte ha publicado una atestación SNHP verificable.
Demo en vivo (reproducción del rastro real de la API en semilla=42): https://snhp.dev/demo.html
Rango en torneo (honesto, por mercado)
En el round-robin comprometido (leaderboard/results/leaderboard.json, n_rounds=20), el rango de SNHP por utilidad media depende del mercado:
| Mercado (BATNA) | Rango SNHP | Mejor del campo |
|---|---|---|
| Mercado del comprador (asimétrico) | #1 de 21 | SNHP 0.508 |
| Mercado del vendedor (asimétrico) | #1 de 21 | SNHP 0.520 |
| Simétrico (neutral) | 5º de 21 | Logroller 0.525, The Closer, Cialdini, Principled, luego SNHP 0.512 |
Así que SNHP es #1 en los mercados asimétricos y en medio del grupo en el simétrico — no lo leas como "#1 en general." Su varianza es la más pequeña del campo. En n_rounds=100 el campo simétrico se reestabiliza aún más y Aspiration lidera.
Este agente NegMAS (snhp/negmas_agent.py) es un artefacto de investigación y NO es el recomendador del producto enviado — las afirmaciones del producto a continuación se miden en el código enviado, no en este torneo.
Ver gametheory/evals/README.md para el manual de ejecución de evaluación/ajuste.
Niveles
- Nivel 1 — Negociación: recomendadores de lado vendedor + comprador, detección de ataques de anclaje, compromiso-revelación criptográfico de primer movimiento, correos de respuesta redactados por LLM (de pago).
- Nivel 2 — Subastas: Vickrey / primer precio BNE / ascendente inglés, reserva óptima de Myerson, recomendación de formato, simulación MC.
- Nivel 3 — Diseño de mecanismos: Gale-Shapley, subasta óptima asimétrica de Myerson, precio publicado de Gallego-van Ryzin.
Nivel 4 (juegos de coalición) diferido hasta que un comprador de pago lo solicite.
mcp-name: io.github.ryuxik/snhp-negotiation