Patakbuhin ang TradingAgents sa isang custom OpenAI-compatible backend.

Updated 2026-07-30

May kasamang openai_compatible provider mode ang TradingAgents. Itakda ang backend_url sa https://api.apisrouter.com/v1, mag-export ng isang key, at ang deep-think at quick-think agents ay pareho ruruta sa iisang endpoint kasama ang bawat model ng katalogo na maaabot sa pamamagitan ng id.

Mabilisang sagot: tatlong setting ang nagru-route ng TradingAgents kahit saan.

Native na sinusuportahan ng TradingAgents ang mga custom endpoint. Itakda ang llm_provider sa "openai_compatible", itakda ang backend_url sa address ng endpoint mo, at i-export ang OPENAI_COMPATIBLE_API_KEY na may key para sa endpoint na iyon. Sa APIsRouter, ang backend URL ay https://api.apisrouter.com/v1, at ang bawat model sa katalogo ay maaabot mula sa deep_think_llm at quick_think_llm slots sa pamamagitan ng eksaktong model id nito. Dokumentadong configuration path ito sa upstream repo, hindi isang fork o patch. Maaari ring ibigay ang parehong mga value bilang environment variables (TRADINGAGENTS_LLM_PROVIDER, TRADINGAGENTS_LLM_BACKEND_URL, TRADINGAGENTS_DEEP_THINK_LLM, TRADINGAGENTS_QUICK_THINK_LLM), kaya maaaring magpalit ng backend ang isang naka-schedule na job o CI runner nang hindi hinihipo ang Python code.

config["llm_provider"] = "openai_compatible"
config["backend_url"] = "https://api.apisrouter.com/v1"
# auth: export OPENAI_COMPATIBLE_API_KEY=sk-...

Paano nakikipag-usap ang TradingAgents sa LLM backend nito.

Ang TradingAgents (TauricResearch sa GitHub, 93K+ stars) ay isang multi-agent na trading framework. Kumakalat ang isang analysis run sa isang analyst team na sumasaklaw sa fundamentals, sentiment, news, at technicals, pagkatapos ay nakikipagtalo ang isang bull researcher at isang bear researcher sa isa o higit pang debate rounds, nagmumungkahi ng position ang isang trader agent, at sinusuri ito ng isang risk-management layer bago ang huling desisyon. Hinahati ng framework ang trabahong iyon sa dalawang model slot. Hinahawakan ng deep_think_llm ang mga reasoning-heavy na hakbang: ang research debate, ang trader decision, at ang risk review. Hinahawakan ng quick_think_llm ang mga high-volume na hakbang: pagbabasa ng data, pagbubuod ng balita, at paggawa ng draft ng analyst reports. Nagpapadala ang parehong slot ng standard na /v1/chat/completions request. Ang provider setting lamang ang nagdedesisyon kung aling client at host ang pagpupuntahan ng mga request na iyon, at ang openai_compatible ang nagpapadala sa mga ito sa anumang backend_url na kino-configure mo. Native na sinusuportahan din ng TradingAgents ang OpenAI, Anthropic, Google, at DeepSeek bilang first-party na providers, pero kailangan ng bawat isa ng sarili nitong account, sarili nitong key, at isang provider per run. Binabawasan ito ng openai_compatible mode: ipinapasa ng TradingAgents ang model field bilang plain string, kaya kapag ang endpoint sa likod ng backend_url ay nagse-serve ng maraming vendor, maaaring tumakbo ang isang Claude deep-think slot at isang GPT o DeepSeek quick-think slot sa parehong analysis. Ang per-role na paghahalo na iyon ang praktikal na dahilan para iruta ang framework sa pamamagitan ng isang gateway sa halip na iisang vendor endpoint.

Buong setup: Python config o environment variables.

Kinokopya ng programmatic na landas ang DEFAULT_CONFIG at ino-override ang apat na key. Binabasa ang key na nagpapatunay laban sa custom endpoint mula sa OPENAI_COMPATIBLE_API_KEY, kaya hindi na ito kailangang lumabas sa config dict o sa source file. Itinatakda ng environment-variable na landas ang parehong mga value sa pamamagitan ng _ENV_OVERRIDES mapping sa default_config.py at gumagana para sa parehong Python API at interactive CLI (tradingagents, o python -m cli.main). Tandaan na ang default ng backend_url ay None, kung saan bumabalik ang client ng bawat provider sa sarili nitong default endpoint; nagkakabisa lamang ang override sa sandaling itakda mo ito nang tahasan. Hiwalay na usapin ang market data. Kinukuha ng TradingAgents ang mga quote at fundamentals sa pamamagitan ng mga data vendor nito (halimbawa, ALPHA_VANTAGE_API_KEY), at hindi kaugnay ang mga credential na iyon sa LLM endpoint. Ang pagbabago ng backend_url ay hindi humihipo sa data pipeline.

from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG

config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai_compatible"
config["backend_url"] = "https://api.apisrouter.com/v1"
config["deep_think_llm"] = "claude-opus-4-7"    # debate rounds + trade decision
config["quick_think_llm"] = "claude-sonnet-4-6" # analysts, summaries
config["max_debate_rounds"] = 2

ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-07-15")
print(decision)

Pagpili ng deep-think at quick-think models.

Ipinares ng upstream default ang isang frontier model sa deep slot kasama ng isang mini model sa quick slot, na siyang tamang hugis: gastusin ang reasoning capacity kung saan ginagawa ang desisyon, at ang volume capacity kung saan ginagawa ang pagbabasa. Ginagawang dalawang linyang pagbabago ang pairing sa pagitan ng mga run kapag iniruta sa pamamagitan ng isang endpoint, kaya ang praktikal na workflow ay panatilihing fixed ang deep slot at i-A/B ang quick slot laban sa backtest metrics mo sa halip na manghula.

  • Dala ng deep_think_llm ang bull/bear debate, ang trader decision, at ang risk review. Kaunting tawag per run, pero ang bawat isa ay nangangatwiran sa buong analyst context, at pinaparami ito ng max_debate_rounds. Dito nakukuha ng isang frontier reasoning model (claude-opus-4-7, gpt-5.5) ang halaga nito.
  • Sumisiklab ang quick_think_llm sa bawat analyst step: pagbabasa ng fundamentals, pag-iskor ng sentiment, pagbubuod ng balita, paggawa ng draft ng reports. Karamihan sa request volume ng isang run ay dito napupunta, kaya pinapanatili ng isang mabilis na mid-tier na model (claude-sonnet-4-6, deepseek-v4-pro) na mabilis ang mga run nang hindi nababawasan ang kalidad ng mga input sa debate.
  • Ang mga long-context na load, tulad ng pagpapakain ng buong filings o malalaking news windows sa mga analyst, ang lugar kung saan sulit subukan ang gemini-3.1-pro-preview sa quick slot.
  • Pinapalaki ng mga backtest ang lahat. Ang isang sweep sa 50 tickers at 20 dates ay 1,000 propagate() calls, kaya ang pagpili ng quick-think model na tila maliit ang epekto sa isang run ay nangingibabaw sa token bill sa sweep scale.

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
Gemini 3.1 Pro Preview$2.00 / $12.00 per M$1.60 / $9.60 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M

Pag-backtest sa sweep scale: keys, pinning, at limits.

Kapag gumagana na ang single-run na setup, lumilipat ang failure surface patungo sa sweep. Tatlong ugali ang nagpapanatili sa isang multi-day na backtest na reproducible at madaling i-debug. I-pin ang eksaktong model ids. Ang bare na model names sa ilang vendor ay mga rolling pointer na tahimik na lumilipat sa mas bagong snapshots, na nangangahulugang ang isang backtest na sinimulan noong Lunes at natapos noong Biyernes ay maaaring hindi pareho ang model na tinakbo. Kung saan nagtatalata ang katalogo ng isang dated variant, ilagay ang dated id sa config, at itala ang config dict katabi ng mga resulta sa paraang itatala mo ang isang random seed. Gumamit ng isang key per experiment. Libre lumikha ng mga key, at ang pag-scope ng isang key sa isang sweep ay ginagawang cost ledger ng experiment ang usage log: token counts at gastos per model, na maaaring i-filter sa eksaktong mga run sa sweep na iyon. Kapag nagbahagi ng key ang dalawang experiment, ang pag-attribute ng gastos pagkatapos ay nangangahulugan ng pag-grep ng mga timestamp. Alamin ang concurrency ceiling mo bago mag-parallelize. Synchronous ang propagate() per ticker-date, kaya karaniwang nagsha-shard ang mga sweep sa mga process. Pinaparami ng bawat shard ang request rate sa quick-think slot muna, at ang isang 429 sa gitna ng debate ay nagkakahalaga ng buong run, hindi lang isang request. Dahan-dahang taasan ang shard count habang pinapanood ang console sa halip na maglunsad ng limampung worker nang bigla; itinataas ng pooled upstream channels ang ceiling pero hindi ito ginagawang walang hanggan.

Sino ang nagru-route ng TradingAgents sa pamamagitan ng isang gateway.

  • Mga backtester na nagpapatakbo ng ticker-by-date sweeps. Ginagawang mas kapaki-pakinabang ng daan-daang tawag sa propagate() per experiment ang per-key na usage visibility at iisang billing surface kaysa apat na vendor dashboard.
  • Mga mananaliksik na naghahambing ng model pairs. Ang pagpapalit ng deep_think_llm sa pagitan ng Claude, GPT, at DeepSeek ids ay isang config edit laban sa isang endpoint, hindi bagong vendor account per kandidato.
  • Mga team na naghahalo ng vendor per role. Claude para sa debate, DeepSeek para sa analyst volume. Ikinukulong ng native provider mode ang isang run sa isang vendor; hindi ginagawa iyon ng multi-vendor na endpoint.
  • 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.
  • Mga naka-schedule at CI run. Ang env-only na setup ay nangangahulugang isang secret lamang (OPENAI_COMPATIBLE_API_KEY) ang kailangan ng runner image sa halip na isa per provider.

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

Bago magpatakbo ng buong analysis, kumpirmahin na sumasagot ang endpoint gamit ang mga model na balak mong gamitin. Ang isang isang-linyang curl laban sa /v1/models gamit ang key mo ay naglilista ng bawat maaabot na id; dapat tumugma nang eksakto ang mga string sa deep_think_llm at quick_think_llm sa mga id na iyon. Pare-pareho ang mga failure mode sa unang run. Halos palaging ibig sabihin ng 401 ay ang OPENAI_COMPATIBLE_API_KEY ay na-export sa ibang shell kaysa sa nagpapatakbo ng tradingagents, o hindi na-export sa lahat; ang mga env var na itinakda sa .bashrc ay hindi umaabot sa isang systemd unit o cron job maliban kung ini-export ito ng unit file mismo. Ang isang model-not-found error ay nangangahulugang hindi tumutugma ang id string sa katalogo: eksakto ang mga id, kasama ang mga version suffix, at ang /v1/models output sa itaas ang pinagmumulan ng katotohanan. Ang isang connection error kasama ang naka-set na backend_url ay karaniwang nangangahulugang kulang ang /v1 suffix ng URL, dahil ini-append ng client ang mga route path tulad ng /chat/completions sa anumang base na ibinigay mo. Kung gumagana ang run pero mukhang natitigil sa debate phase, normal na latency iyon para sa mga reasoning model sa mahabang context sa halip na isang problema sa endpoint; panatilihing naka-on ang debug=True para mapanood ang agent steps na dumadaloy. Ang mga tunay na timeout sa napakahabang deep-think turns ay isang client-side na setting, at sulit itaas bago tapusin na tinanggihan ng backend ang request. Kapag dumadaloy na ang mga request, ipinapakita ng APIsRouter console ang per-request na model, token counts, at gastos, na para sa isang framework na ganito ka-call-heavy ang pinakamabilisang paraan para makita eksakto kung saan napupunta ang mga token ng isang run.

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

Mga madalas itanong

Sinusuportahan ba ng TradingAgents ang Claude at Gemini models sa pamamagitan ng isang openai_compatible endpoint?

Oo. Sa openai_compatible mode, ipinapadala ng framework ang model field bilang plain string patungo sa backend_url sa pamamagitan ng /v1/chat/completions. Gumagana ang anumang id na si-serve ng endpoint, kasama ang Claude, Gemini, at DeepSeek ids, sa alinman sa deep-think o quick-think slot.

Aling API key ang ginagamit ng TradingAgents kasama ng custom backend_url?

Ang OPENAI_COMPATIBLE_API_KEY. Binabasa ito ng openai_compatible provider mula sa environment, kaya hindi kailanman lumalabas ang key sa config dict o source files mo. Ang OPENAI_API_KEY ay tanging ginagamit ng native openai provider.

Maaari bang manggaling sa magkaibang vendor ang deep_think_llm at quick_think_llm sa parehong run?

Sa pamamagitan ng isang multi-vendor na endpoint, oo: nagpo-post ang parehong slot sa parehong backend_url at ang model string ang nagdedesisyon sa vendor per request. Sa mga native provider (openai, anthropic, google, deepseek), naka-lock ang isang run sa isang vendor para sa parehong slot.

Kailangan ko pa ba ng OpenAI account kapag naka-set na ang backend_url?

Hindi. Kapag naka-set ang llm_provider sa openai_compatible, walang request na pupunta sa OpenAI hosts at hindi binabasa ang OPENAI_API_KEY. Kailangan mo pa rin ang market-data credentials na ginagamit ng TradingAgents (halimbawa, ALPHA_VANTAGE_API_KEY), na hiwalay sa LLM endpoint.

Ginagalang din ba ng interactive CLI ang custom endpoint?

Oo. Nire-resolve ng CLI (tradingagents, o python -m cli.main) ang parehong config, at ino-override ito ng TRADINGAGENTS_LLM_PROVIDER / TRADINGAGENTS_LLM_BACKEND_URL environment variables bago ang provider prompt, kaya hindi na kailangan ng interactive input para sa routing ang mga naka-schedule o naka-containerize na CLI run.

Ilang token ang ginagastos ng isang TradingAgents analysis?

Nag-iiba ito depende sa max_debate_rounds, ang bilang ng analysts, at gaano karaming market context ang kinukuha nila; karaniwang tumatama sa daan-daang libong token ang isang single ticker-date analysis, karamihan dito nasa quick-think slot. Ipinapakita ng per-key usage view sa APIsRouter console ang eksaktong hati per run, na mas maaasahan kaysa sa pagtantiya.