ai-hedge-fund को एक custom OpenAI-compatible base URL पर चलाएं।
Updated 2026-07-30
ai-hedge-fund अपने OpenAI models LangChain के ChatOpenAI से बनाता है और base URL को OPENAI_API_BASE से पढ़ता है। इसे https://api.apisrouter.com/v1 पर set करें, एक key export करें, और fund का हर analyst agent एक ही endpoint से route होता है।
Quick answer: OPENAI_API_BASE plus एक key।
ai-hedge-fund का OpenAI provider ChatOpenAI(model=model_name, api_key=api_key, base_url=base_url) के तौर पर instantiate होता है, और वह base_url src/llm/models.py में os.getenv("OPENAI_API_BASE") से आता है। तो override .env में दो lines है: OPENAI_API_BASE को https://api.apisrouter.com/v1 पर point करें और OPENAI_API_KEY को अपनी gateway key set करें। OpenAI provider से चलने वाला हर model अब gateway पर post करता है। Variable का नाम ध्यान से नोट करें: यह OPENAI_API_BASE है, LangChain-era convention, ना कि OPENAI_BASE_URL। गलत वाला export करना चुपचाप ignore हो जाता है और requests api.openai.com पर जाती रहती हैं, जो सबसे आम वजह है कि यह setup काम ना करता दिखे।
OPENAI_API_BASE=https://api.apisrouter.com/v1
OPENAI_API_KEY=sk-APIsRouter-...
FINANCIAL_DATASETS_API_KEY=... # market data, unrelated to the LLM endpointai-hedge-fund model और provider कैसे चुनता है।
ai-hedge-fund (GitHub पर virattt, लगभग 62K stars) एक fund को agents की committee के तौर पर simulate करता है: well-known investors पर modeled analyst personas, plus valuation, sentiment, fundamentals, और technicals agents, जो एक risk manager और एक portfolio manager को feed करते हैं जो final signals produce करते हैं। इन सबका per run एक ही model choice होता है, तो एक run आपके model decision को हर agent और हर ticker के across multiply कर देता है। Model selection के दो paths हैं। Interactively, बिना model flag के poetry run python src/main.py --ticker AAPL,MSFT,NVDA चलाने से एक questionary picker खुलता है। Scripted, --model flag एक model name लेता है, लेकिन सिर्फ वे names जो repo की model registry में exist करते हैं: find_model_by_name() string को src/llm/api_models.json में लुकअप करता है, और हर registry entry display_name, model_name, और provider carry करती है। अगर lookup fail होता है, तो CLI कोई provider guess नहीं करता; यह interactive picker पर fall back करता है, जो automation के लिए matter करता है क्योंकि एक unknown id एक scripted run को ऐसे run में बदल देती है जो keyboard input का इंतज़ार करते हुए बैठा रहता है। provider field ही routing तय करता है। OpenAI marked entries ChatOpenAI से गुज़रती हैं और OPENAI_API_BASE honor करती हैं; Anthropic marked entries ChatAnthropic और ANTHROPIC_API_KEY से गुज़रती हैं, आपके base URL को पूरी तरह bypass करते हुए। gateway routing के लिए यही key insight है: provider column client चुनता है और इसलिए endpoint भी, इस बात से independent कि model असल में किसने बनाया।
पूरा setup: .env plus per gateway model एक registry entry।
जिन models को registry पहले से OpenAI provider के तहत list करती है, उनके लिए सिर्फ .env override काफ़ी है; model string endpoint को as-is pass through होती है। same key पर gateway के through एक Claude, DeepSeek, या Qwen id चलाने के लिए, src/llm/api_models.json में catalog id को model_name के तौर पर, और सबसे ज़रूरी, "OpenAI" को provider के तौर पर रखते हुए एक entry add करें। Provider client चुनता है, तो एक OpenAI-marked entry ChatOpenAI और आपके OPENAI_API_BASE से route होती है भले ही model खुद एक OpenAI model ना हो। फिर entry interactive picker में दिखती है और scripts में --model के through resolve होती है। यह आपके clone में एक तीन-line JSON edit है, कोई code change नहीं, और यह वही documented shape है जो registry पहले से इस्तेमाल करती है। Contrast के तौर पर provider-native entries को ध्यान में रखें: Anthropic marked एक registry model select करना ANTHROPIC_API_KEY ढूंढेगा और सीधा Anthropic के endpoint पर जाएगा। अगर आपका इरादा सब कुछ के लिए एक gateway key है, तो अपने models OpenAI-marked entries के through चलाएं और per-vendor keys को पूरी तरह unset छोड़ सकते हैं।
{
"display_name": "Claude Sonnet 4.6 (gateway)",
"model_name": "claude-sonnet-4-6",
"provider": "OpenAI"
},
{
"display_name": "DeepSeek V4 Pro (gateway)",
"model_name": "deepseek-v4-pro",
"provider": "OpenAI"
}Agent committee के लिए model चुनना।
चूंकि registry हर candidate को एक flag के पीछे addressable बना देती है, honest evaluation empirical है: same tickers और dates को दो या तीन models से चलाएं और signals और spend compare करें। Per-key usage view हर sweep की price आपके लिए करता है, जो model choice को एक debate से एक measurement में बदल देता है।
- एक run कई verdicts है। हर analyst persona per ticker same filings और price data पर reason करता है, तो model choice agent count गुणा ticker count से multiply होती है। एक frontier reasoning id (claude-opus-4-7, gpt-5.5) हर verdict की quality को उतने ही multiplied token bill पर बढ़ाती है।
- claude-sonnet-4-6 sensible default है: इतना strong कि persona reasoning लंबे fundamental context पर coherent रहे, उन runs के लिए priced जो दर्जन भर agents और tickers के basket के across fan out होते हैं।
- deepseek-v4-pro और qwen3.7-max wide sweeps के लिए benchmark करने लायक हैं, जहां per-run price gap हर backtest date के across compound होता है।
- जो भी चुनें, उसे pin करें। एक moving model के अलग-अलग snapshots से signals एक backtest window के across comparable नहीं हैं; exact ids इस्तेमाल करें और model string को results के बगल में एक random seed की तरह record करें।
जितना उपयोग उतना भुगतान · आधिकारिक मूल्य से कम
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| मॉडल | आधिकारिक मूल्य | हमारा मूल्य |
|---|---|---|
| Claude Opus 4.7 | $5.00 / $25.00 per M | $4.00 / $20.00 per M |
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| DeepSeek V4 Pro | $0.43 / $0.87 per M | $0.40 / $0.90 per M |
| Qwen 3.7 Max | $2.50 / $7.50 per M | $2.50 / $7.50 per M |
ai-hedge-fund के लिए specific failure modes।
गलत environment variable। यह repo OPENAI_API_BASE पढ़ती है। OPENAI_BASE_URL, जो variable दूसरे tools इस्तेमाल करते हैं, consult नहीं होता, और इसे set करना सिर्फ आपको यह यकीन दिलाता है कि override टूटा है, कुछ नहीं करता। अगर requests अब भी api.openai.com पर जा रही हैं, तो सबसे पहले variable का नाम check करें। --model एक unregistered id के साथ। find_model_by_name() सिर्फ api_models.json में entries जानता है। एक catalog id pass करें जो registered नहीं है और CLI एक not-found message print करता है और interactive picker में गिर जाता है, जो एक cron job या CI run में एक silent hang मतलब रखता है, error exit नहीं। पहले id register करें; फिर scripted runs इसे deterministically resolve करते हैं। Provider-marked entries gateway को bypass करना। एक registry model चुनना जिसका provider Anthropic, Google, या DeepSeek है, उस vendor के native client और key से route होता है। अगर आपको उम्मीद थी कि run आपके gateway usage log में दिखेगा और नहीं दिखा, तो जो model आपने चुना उसका provider column ही explanation है। Data errors जो LLM errors जैसी दिखती हैं। Price और fundamentals data FINANCIAL_DATASETS_API_KEY से configured financial-data API से आते हैं, एक पूरी तरह अलग service। एक missing या exhausted data key LLM calls से पहले या बीच में run को fail करती है, और traceback एक model problem जैसा पढ़ सकता है। दोनों credentials independently fail होते हैं; इन्हें independently debug करें। Automation में interactive prompts। सब कुछ configure होने पर भी, --model flag भूलना picker खोल देता है। Unattended runs के लिए, हमेशा एक registered id के साथ --model pass करें।
कौन ai-hedge-fund को एक gateway के through route करता है।
- Backtesters जो tickers और date ranges sweep करते हैं, जहां per ticker per date एक agent committee token spend को dominant cost बना देती है और per-key usage को natural ledger।
- Researchers जो model verdicts compare करते हैं। दो model ids के तहत same run एक flag change है, और models के बीच signal disagreement खुद interesting data है।
- Builders जो repo को नए agents से extend करते हैं और चाहे जितनी भी personas add करें, नीचे एक endpoint और एक key चाहते हैं।
- Developers जो एक ऐसे repo के अंदर Claude या DeepSeek reasoning चाहते हैं जिसका सबसे clean routing path OpenAI-shaped है, बिना per provider entry एक vendor key maintain किए।
- Developers जिनके पास किसी given vendor की billing तक access नहीं है। बिना card requirement वाला top-up based access per-provider sign-up dependency हटा देता है।
Endpoint verify करें और पहली run को debug करें।
Run launch करने से पहले confirm करें कि gateway आपके registered ids serve करता है; registry model_name strings served ids से exactly match होनी चाहिए। First-run failure ladder: एक 401 का मतलब है OPENAI_API_KEY उस environment की gateway key नहीं है जिसके साथ poetry असल में launch हुआ। Gateway से एक model-not-found error का मतलब है registry entry के model_name में /v1/models के relative typo है। एक run जो input मांगने के लिए रुक जाए मतलब --model string registry से miss हो गई। एक vendor-key error (Anthropic, Google) मतलब चुनी गई entry का provider OpenAI नहीं है। और किसी भी model output से पहले एक data-shaped traceback FINANCIAL_DATASETS_API_KEY की तरफ इशारा करता है, LLM path की तरफ नहीं। एक बार run complete होने पर, APIsRouter console per-request model, token counts, और spend दिखाता है। एक committee run analysts, risk, और portfolio stages के across दर्जनों calls है, और usage view वह तरीका है जिससे आप देखते हैं कि एक decision असल में कितने का पड़ता है, इसे एक sweep में scale करने से पहले।
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" | head -50अक्सर पूछे जाने वाले प्रश्न
ai-hedge-fund के लिए custom base URL कौन सा environment variable set करता है?
OPENAI_API_BASE। src/llm/models.py में OpenAI provider ChatOpenAI को base_url=os.getenv("OPENAI_API_BASE") के साथ बनाता है। OPENAI_BASE_URL इस repo से पढ़ा नहीं जाता, तो API_BASE spelling ही exactly इस्तेमाल करें।
क्या ai-hedge-fund Claude या DeepSeek models एक key के through चला सकता है?
हां, id को src/llm/api_models.json में provider "OpenAI" set करके register करके। Provider client चुनता है, तो एक OpenAI-marked entry ChatOpenAI और आपके OPENAI_API_BASE से route होती है, और catalog id gateway को एक plain string के तौर पर pass through होती है।
--model मुझे एक interactive picker में क्यों drop कर देता है?
--model value को find_model_by_name() से api_models.json के against लुकअप किया जाता है। Unknown ids guess नहीं की जातीं; CLI एक not-found message print करता है और picker खोलता है। id के लिए एक registry entry add करें और scripted runs बिना prompt किए इसे resolve कर देते हैं।
क्या मुझे अब भी ANTHROPIC_API_KEY या दूसरी vendor keys चाहिए?
gateway-routed models के लिए नहीं। Vendor keys सिर्फ उन registry entries से consult होती हैं जो उस vendor के provider से marked हैं। अगर आपके चलाए हर model को OpenAI provider के तहत registered है, तो gateway key ही एकमात्र LLM credential है जो run को चाहिए।
जब मैं LLM endpoint बदलता हूं तो क्या market-data setup बदलता है?
नहीं। Price और fundamentals data FINANCIAL_DATASETS_API_KEY से configured financial-data API के through flow करते हैं, जो LLM base URL से independent है। दोनों credentials run के अलग-अलग phases में fail होते हैं, तो इन्हें अलग-अलग debug करें।
एक ai-hedge-fund run कितनी महंगी है?
यह agents गुणा tickers के हिसाब से scale होती है: हर analyst persona, plus risk और portfolio management, per ticker reason करते हैं। Single-basket runs आमतौर पर दसियों से सैकड़ों हज़ार tokens में पहुंचती हैं, और backtest sweeps उसे date grid से multiply कर देते हैं। Per-key usage view हर run का exact figure देता है।