Patakbuhin ang ai-hedge-fund sa isang custom OpenAI-compatible base URL.

Updated 2026-07-30

Binubuo ng ai-hedge-fund ang mga OpenAI model nito gamit ang ChatOpenAI ng LangChain at binabasa ang base URL mula sa OPENAI_API_BASE. Itakda ito sa https://api.apisrouter.com/v1, mag-export ng isang key, at ang bawat analyst agent sa fund ay ruruta sa pamamagitan ng iisang endpoint.

Mabilisang sagot: OPENAI_API_BASE kasama ang isang key.

Ang OpenAI provider ng ai-hedge-fund ay ginagawa bilang ChatOpenAI(model=model_name, api_key=api_key, base_url=base_url), at ang base_url na iyon ay galing sa os.getenv("OPENAI_API_BASE") sa src/llm/models.py. Kaya ang override ay dalawang linya lamang sa .env: ituro ang OPENAI_API_BASE sa https://api.apisrouter.com/v1 at itakda ang OPENAI_API_KEY sa key mo sa gateway. Ang bawat model na tumatakbo sa pamamagitan ng OpenAI provider ay nagpo-post na ngayon sa gateway. Pansinin nang mabuti ang pangalan ng variable: OPENAI_API_BASE ito, ang convention noong panahon ng LangChain, hindi OPENAI_BASE_URL. Ang pag-export ng maling pangalan ay tahimik na hindi pinapansin at patuloy na pupunta ang mga request sa api.openai.com, na siyang pinakakaraniwang dahilan kung bakit parang hindi gumagana ang setup na ito.

OPENAI_API_BASE=https://api.apisrouter.com/v1
OPENAI_API_KEY=sk-APIsRouter-...
FINANCIAL_DATASETS_API_KEY=...   # market data, unrelated to the LLM endpoint

Paano pumipili ang ai-hedge-fund ng model at provider.

Ginagaya ng ai-hedge-fund (virattt sa GitHub, humigit-kumulang 62K stars) ang isang fund bilang isang komite ng mga agent: mga analyst persona na hinugot mula sa mga kilalang investor, kasama ang valuation, sentiment, fundamentals, at technicals agents, na nagpapakain sa isang risk manager at isang portfolio manager na siyang gumagawa ng huling mga signal. Lahat sila ay may iisang napiling model kada run, kaya ang isang run ay pinaparami ang desisyon mo sa model sa bawat agent at bawat ticker. May dalawang landas ang pagpili ng model. Sa interactive mode, ang pagpapatakbo ng poetry run python src/main.py --ticker AAPL,MSFT,NVDA nang walang model flag ay nagbubukas ng isang questionary picker. Sa scripted mode, tumatanggap ang --model flag ng pangalan ng model, pero mga pangalan lamang na nasa model registry ng repo: hinahanap ng find_model_by_name() ang string sa src/llm/api_models.json, at bawat entry sa registry ay may display_name, model_name, at provider. Kung mabigo ang paghahanap, hindi nanghuhula ng provider ang CLI; babalik ito sa interactive picker, na mahalaga para sa automation dahil ang isang hindi kilalang id ay ginagawang naghihintay ng keyboard input ang isang scripted run. Ang provider field ang nagdedesisyon sa routing. Ang mga entry na naka-mark na OpenAI ay dumadaan sa ChatOpenAI at sumusunod sa OPENAI_API_BASE; ang mga entry na naka-mark na Anthropic ay dumadaan sa ChatAnthropic at ANTHROPIC_API_KEY, na lubusang nililiktawan ang base URL mo. Iyan ang pangunahing insight para sa gateway routing: ang provider column ang pumipili ng client at samakatuwid ng endpoint, hiwalay kung sino talaga ang gumawa ng model.

Buong setup: .env kasama ang isang registry entry per gateway model.

Para sa mga model na nakalista na ng registry sa ilalim ng OpenAI provider, sapat na ang override sa .env; ang model string ay direktang ipinapasa sa endpoint gaya ng nakasulat. Para magpatakbo ng isang id ng Claude, DeepSeek, o Qwen sa pamamagitan ng gateway gamit ang parehong key, magdagdag ng entry sa src/llm/api_models.json gamit ang catalog id bilang model_name at, mahalaga, "OpenAI" bilang provider. Pinipili ng provider ang client, kaya ang isang entry na naka-mark na OpenAI ay dumadaan sa ChatOpenAI at sa OPENAI_API_BASE mo kahit hindi OpenAI model ang model mismo. Lalabas na ngayon ang entry sa interactive picker at nare-resolve sa pamamagitan ng --model sa mga script. Isang tatlong-linyang JSON edit lamang ito sa clone mo, hindi isang pagbabago sa code, at ito ang naka-document na hugis na ginagamit na ng registry. Panatilihin sa isip ang mga provider-native na entry bilang kaibahan: ang pagpili ng isang registry model na naka-mark na Anthropic ay maghahanap ng ANTHROPIC_API_KEY at diretso sa endpoint ng Anthropic. Kung ang layunin mo ay isang gateway key para sa lahat, patakbuhin ang mga model mo sa pamamagitan ng mga entry na naka-mark na OpenAI at maaari mong iwanang walang laman ang mga key per vendor.

{
  "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"
}

Pagpili ng model para sa isang agent committee.

Dahil ginagawang addressable ng registry ang bawat kandidato sa likod ng isang flag, ang tapat na evaluation ay empirical: patakbuhin ang parehong mga ticker at petsa sa dalawa o tatlong model at ikumpara ang mga signal at gastos. Ipinapresyo ng per-key usage view ang bawat sweep para sa iyo, na ginagawang measurement ang pagpili ng model sa halip na debate.

  • Maraming hatol ang isang run. Ang bawat analyst persona ay nangangatwiran sa parehong mga filing at price data kada ticker, kaya ang pagpili ng model ay pinaparami ng bilang ng agent beses bilang ng ticker. Ang isang frontier reasoning id (claude-opus-4-7, gpt-5.5) ay nagpapataas ng kalidad ng bawat hatol na may kaakibat na pinaramihang token bill.
  • Ang claude-sonnet-4-6 ang makatuwirang default: sapat na malakas para manatiling koherente ang persona reasoning sa mahabang fundamental context, at may presyong bagay sa mga run na kumakalat sa isang dosenang agent at isang basket ng mga ticker.
  • Karapat-dapat i-benchmark ang deepseek-v4-pro at qwen3.7-max para sa malalawak na sweep, kung saan pinaparami ng agwat sa presyo per run ang bawat backtest date.
  • Anuman ang piliin mo, i-pin ito. Ang mga signal mula sa magkaibang snapshot ng isang gumagalaw na model ay hindi maihahambing sa loob ng isang backtest window; gumamit ng eksaktong id at itala ang model string sa tabi ng mga resulta gaya ng isang random seed.

Pay-as-you-go · mas mababa sa opisyal na presyo

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelOpisyal na PresyoAming Presyo
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

Mga failure mode na specific sa ai-hedge-fund.

Ang maling environment variable. Binabasa ng repo na ito ang OPENAI_API_BASE. Ang OPENAI_BASE_URL, ang variable na ginagamit ng ibang tools, ay hindi kinokonsulta, at ang pagtakda dito ay walang ginagawa maliban sa kumbinsihin kang sira ang override. Kung patuloy pa ring tumatama sa api.openai.com ang mga request, tignan muna ang pangalan ng variable bago ang kahit ano. Ang --model na may unregistered na id. Alam lamang ng find_model_by_name() ang mga entry sa api_models.json. Magpasa ng catalog id na hindi naka-register at maglilimbag ang CLI ng not-found na mensahe at babagsak sa interactive picker, na sa isang cron job o CI run ay nangangahulugang tahimik na pag-hang, hindi isang error exit. I-register muna ang id; pagkatapos ay nare-resolve ito ng mga scripted run nang deterministiko. Ang mga entry na naka-mark ng provider na nililiktawan ang gateway. Ang pagpili ng isang registry model na ang provider ay Anthropic, Google, o DeepSeek ay dumadaan sa native client at key ng vendor na iyon. Kung inaasahan mong lalabas ang run sa gateway usage log mo pero hindi lumabas, ang provider column ng model na pinili mo ang paliwanag. Mga data error na nagbabalatkayo bilang mga LLM error. Ang price at fundamentals data ay galing sa financial-data API na na-configure ng FINANCIAL_DATASETS_API_KEY, isang ganap na hiwalay na serbisyo. Ang isang missing o naubos na data key ay nagpapabigo sa run bago o sa pagitan ng mga LLM call, at maaaring parang problema sa model ang traceback. Independiyenteng nabibigo ang dalawang credential; i-debug ang mga ito nang hiwalay. Mga interactive prompt sa automation. Kahit na naka-configure ang lahat, ang pagkalimot sa --model flag ay nagbubukas ng picker. Para sa mga unattended run, laging magpasa ng --model kasama ang isang naka-register na id.

Sino ang nagru-route ng ai-hedge-fund sa pamamagitan ng isang gateway.

  • Mga backtester na nagsu-sweep ng mga ticker at hanay ng petsa, kung saan ang isang agent committee kada ticker kada petsa ang gumagawang dominanteng gastos ang token spend at natural na ledger ang per-key usage.
  • Mga mananaliksik na naghahambing ng mga hatol ng model. Ang parehong run sa ilalim ng dalawang model id ay isang pagbabago lang sa flag, at ang di-pagkakasundo ng signal sa pagitan ng mga model ay interesanteng datos mismo.
  • Mga builder na nagpapalawak ng repo gamit ang mga bagong agent na gustong may iisang endpoint at isang key sa ilalim ng kung ilan mang persona ang idinadagdag nila.
  • Mga developer na gustong magkaroon ng Claude o DeepSeek reasoning sa loob ng isang repo na ang pinakamalinis na routing path ay OpenAI-shaped, nang hindi nagpapanatili ng vendor key per provider entry.
  • Mga developer na walang access sa billing ng isang partikular na vendor. Ang top-up based na access na walang kailangang card ay inaalis ang per-provider na sign-up dependency.

I-verify ang endpoint at i-debug ang unang run.

Kumpirmahin na si-serve ng gateway ang mga id na na-register mo bago maglunsad ng run; dapat eksaktong tumugma ang mga registry model_name string sa mga si-serve na id. Ang first-run failure ladder: nangangahulugan ang isang 401 na hindi gateway key ang OPENAI_API_KEY sa environment na talagang ginamit ng poetry para maglunsad. Nangangahulugan ang isang model-not-found error mula sa gateway na may typo ang model_name ng registry entry kumpara sa /v1/models. Nangangahulugan ang isang run na humihinto para humingi ng input na hindi nakita ng --model string ang registry. Nangangahulugan ang isang vendor-key error (Anthropic, Google) na hindi OpenAI ang provider ng napiling entry. At nangangahulugan ang isang data-shaped na traceback bago pa man may model output na nasa FINANCIAL_DATASETS_API_KEY ang problema, hindi sa LLM path. Kapag natapos na ang isang run, ipinapakita ng APIsRouter console ang per-request na model, token counts, at gastos. Dosena-dosenang tawag sa iba't ibang analyst, risk, at portfolio stage ang isang committee run, at ang usage view ang paraan mo para makita kung ano talaga ang gastos ng isang desisyon bago mo ito i-scale papunta sa isang sweep.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY" | head -50

Mga madalas itanong

Aling environment variable ang nagtatakda ng custom base URL para sa ai-hedge-fund?

OPENAI_API_BASE. Binubuo ng OpenAI provider sa src/llm/models.py ang ChatOpenAI gamit ang base_url=os.getenv("OPENAI_API_BASE"). Hindi binabasa ng repo na ito ang OPENAI_BASE_URL, kaya gamitin nang eksakto ang baybay na API_BASE.

Maaari bang patakbuhin ng ai-hedge-fund ang mga model ng Claude o DeepSeek sa pamamagitan ng isang key?

Oo, sa pamamagitan ng pag-register ng id sa src/llm/api_models.json na may provider na nakatakda sa "OpenAI". Pinipili ng provider ang client, kaya ang isang entry na naka-mark na OpenAI ay dumadaan sa ChatOpenAI at sa OPENAI_API_BASE mo, at ang catalog id ay ipinapasa sa gateway bilang plain string.

Bakit ako binabagsak ng --model sa isang interactive picker?

Hinahanap ang value ng --model gamit ang find_model_by_name() laban sa api_models.json. Hindi hinuhula ang mga hindi kilalang id; naglilimbag ang CLI ng not-found na mensahe at binubuksan ang picker. Magdagdag ng registry entry para sa id at nare-resolve ito ng mga scripted run nang walang prompt.

Kailangan ko pa ba ang ANTHROPIC_API_KEY o ibang vendor key?

Hindi para sa mga model na ruruta sa gateway. Kinokonsulta lamang ang mga vendor key ng mga registry entry na naka-mark ng provider ng vendor na iyon. Kung naka-register sa ilalim ng OpenAI provider ang bawat model na pinapatakbo mo, ang gateway key na lamang ang kailangang LLM credential ng run.

Nagbabago ba ang setup ng market-data kapag binago ko ang LLM endpoint?

Hindi. Dumadaloy ang price at fundamentals data sa pamamagitan ng financial-data API na na-configure ng FINANCIAL_DATASETS_API_KEY, na independiyente sa base URL ng LLM. Nabibigo ang dalawang credential sa magkaibang yugto ng isang run, kaya i-debug ang mga ito nang hiwalay.

Gaano kamahal ang isang run ng ai-hedge-fund?

Nag-iiba ito ayon sa agent beses ticker: ang bawat analyst persona, kasama ang risk at portfolio management, ay nangangatwiran kada ticker. Karaniwang tumatama sa sampu-sampung libo hanggang daan-daang libong token ang mga single-basket na run, at pinaparami ito ng backtest sweep ayon sa grid ng petsa. Ibinibigay ng per-key usage view ang eksaktong numero kada run.