-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.yaml
More file actions
114 lines (105 loc) · 4.29 KB
/
Copy pathsettings.yaml
File metadata and controls
114 lines (105 loc) · 4.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# Single source of truth for swappable architectural choices.
# See docs/07-decision-agnosticism.md for the swap-cost matrix.
# ---------------------------------------------------------------------------
# LLM tiering — currently configured for OpenRouter free tier per Riverline's
# email recommending free providers (NVIDIA NIM / Cloudflare Workers AI /
# OpenRouter). To swap to Anthropic, replace each role with the commented-out
# block beneath it.
#
# Free-tier rate limits are tight (~20 req/min on OpenRouter free models). If
# you hit them, either (a) reduce eval cycle size, (b) swap to NVIDIA NIM (more
# generous limits), or (c) swap to a paid provider.
llm:
agent:
provider: openai_compatible
model: openai/gpt-oss-120b:free
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
max_tokens: 1500
temperature: 0.0
sim:
provider: openai_compatible
model: openai/gpt-oss-20b:free
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
max_tokens: 1500
temperature: 0.7
judge:
provider: openai_compatible
model: minimax/minimax-m2.5:free
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
max_tokens: 2000
temperature: 0.0
# MiniMax is on a separate rate-limit pool from the gpt-oss family used
# by agent + sim, so judge calls don't compete with simulation calls.
# Cross-family also reduces same-family-judge bias.
mutator:
provider: openai_compatible
model: nvidia/nemotron-3-super-120b-a12b:free
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
max_tokens: 4000
temperature: 0.5
# Nemotron is reasoning-tuned and works well for reflective prompt
# mutation. Different rate-limit pool from minimax (judge).
# ---------------------------------------------------------------------------
# Voice-specialized agent. Voice cannot tolerate free-tier OpenRouter
# throttle backoff (8-28s per call) — Twilio webhook timeouts and borrower
# patience both fail. Groq runs Llama 3.3 70B on custom LPU silicon at
# 250-400 tokens/sec; per-call latency is typically 0.5-1.5s including
# network. Free tier: 30 RPM, 6,000 TPM — comfortable for voice.
#
# Get a key at console.groq.com (Google login works), paste as
# GROQ_API_KEY in .env. If the key is missing, voice sessions fall back
# to the default `agent` role automatically (see chat_session.py).
agent_voice:
provider: openai_compatible
model: llama-3.3-70b-versatile
base_url: https://api.groq.com/openai/v1
api_key_env: GROQ_API_KEY
max_tokens: 250
temperature: 0.0
# To switch to Anthropic Claude tiered (requires ANTHROPIC_API_KEY in .env):
# llm:
# agent: {provider: anthropic, model: claude-sonnet-4-6, max_tokens: 1500, temperature: 0.0}
# sim: {provider: anthropic, model: claude-haiku-4-5, max_tokens: 1500, temperature: 0.7}
# judge: {provider: anthropic, model: claude-haiku-4-5, max_tokens: 2000, temperature: 0.0}
# mutator: {provider: anthropic, model: claude-opus-4-7, max_tokens: 4000, temperature: 0.5}
# To switch to NVIDIA NIM (more generous free rate limits):
# provider: openai_compatible
# model: meta/llama-3.3-70b-instruct
# base_url: https://integrate.api.nvidia.com/v1
# api_key_env: NVIDIA_NIM_API_KEY
context_budget:
total_per_agent: 2000
max_handoff: 500
voice:
provider: pipecat # pipecat | mock | vapi | bland | retell
pipecat:
stt: deepgram # deepgram | assemblyai | google
tts: rime # rime | cartesia | elevenlabs | inworld
telephony: twilio
learning:
optimizer: gepa # gepa | custom
promotion_method: hierarchical_bootstrap # hierarchical_bootstrap | flat_bootstrap | paired_t | bayesian_sequential
eval:
personas: [cooperative, combative, evasive, confused, distressed]
conversations_per_persona: 6
seeds_per_conversation: 3
bootstrap_resamples: 10000
ci_level: 0.95
min_per_persona_delta: -0.05
composite_weights:
resolution: 0.4
compliance: 0.4
continuity: 0.1
naturalness: 0.1
rubrics: [strict, lenient, continuity]
inter_rubric_correlation_threshold: 0.7
compliance:
mode: hybrid # hybrid | llm_only | rules_only
rule_set_version: v1
hard_veto: true
policy:
active_version: v1