TradingAgents کو ایک custom OpenAI-compatible backend پر چلائیں۔

Updated 2026-07-30

TradingAgents ایک openai_compatible provider mode کے ساتھ ship ہوتا ہے۔ backend_url کو https://api.apisrouter.com/v1 پر سیٹ کریں، ایک key export کریں، اور deep-think اور quick-think دونوں agents ایک ہی endpoint کے ذریعے route ہوتے ہیں جہاں کیٹلاگ کا ہر model id سے قابلِ رسائی ہے۔

فوری جواب: تین settings TradingAgents کو کہیں بھی route کرتی ہیں۔

TradingAgents اصل طور پر custom endpoints کو سپورٹ کرتا ہے۔ llm_provider کو "openai_compatible" پر سیٹ کریں، backend_url کو اپنے endpoint کے address پر سیٹ کریں، اور اس endpoint کے لیے ایک key کے ساتھ OPENAI_COMPATIBLE_API_KEY export کریں۔ APIsRouter کے ساتھ backend URL ہے https://api.apisrouter.com/v1، اور کیٹلاگ کا ہر model deep_think_llm اور quick_think_llm slots سے اپنی exact model id کے ذریعے قابلِ رسائی ہو جاتا ہے۔ یہ upstream repo میں ایک documented configuration path ہے، کوئی fork یا patch نہیں۔ یہی values environment variables کے طور پر بھی دی جا سکتی ہیں (TRADINGAGENTS_LLM_PROVIDER، TRADINGAGENTS_LLM_BACKEND_URL، TRADINGAGENTS_DEEP_THINK_LLM، TRADINGAGENTS_QUICK_THINK_LLM)، تو ایک scheduled job یا CI runner Python code کو چھوئے بغیر backends switch کر سکتا ہے۔

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

TradingAgents اپنے LLM backend سے کیسے بات کرتا ہے۔

TradingAgents (GitHub پر TauricResearch، 93K+ stars) ایک multi-agent trading framework ہے۔ ایک analysis run ایک analyst team میں پھیلتا ہے جو fundamentals، sentiment، news، اور technicals کور کرتی ہے، پھر ایک bull researcher اور ایک bear researcher ایک یا زیادہ debate rounds پر case کی بحث کرتے ہیں، ایک trader agent position تجویز کرتا ہے، اور final decision سے پہلے ایک risk-management layer اسے review کرتی ہے۔ Framework اس کام کو دو model slots میں تقسیم کرتا ہے۔ deep_think_llm reasoning-heavy steps سنبھالتا ہے: research debate، trader decision، اور risk review۔ quick_think_llm high-volume steps سنبھالتا ہے: data پڑھنا، news summarize کرنا، اور analyst reports drafting کرنا۔ دونوں slots standard /v1/chat/completions requests جاری کرتے ہیں۔ provider setting صرف یہ فیصلہ کرتی ہے کہ وہ requests کس client اور host کو جائیں، اور openai_compatible انہیں جو بھی backend_url آپ configure کریں وہاں بھیجتا ہے۔ اصل طور پر، TradingAgents OpenAI، Anthropic، Google، اور DeepSeek کو بھی first-party providers کے طور پر سپورٹ کرتا ہے، مگر ہر ایک کو اپنا account، اپنی key، اور فی-run ایک provider چاہیے۔ openai_compatible mode اسے سمیٹ دیتا ہے: TradingAgents model field کو ایک plain string کے طور پر pass کرتا ہے، تو جب backend_url کے پیچھے endpoint متعدد vendors serve کرے، ایک Claude deep-think slot اور ایک GPT یا DeepSeek quick-think slot ایک ہی analysis میں چل سکتے ہیں۔ یہ per-role mixing ہی وہ عملی وجہ ہے کہ framework کو ایک ہی vendor endpoint کی بجائے gateway کے ذریعے route کیا جائے۔

مکمل سیٹ اپ: Python config یا environment variables۔

Programmatic راستہ DEFAULT_CONFIG کو copy کرتا ہے اور چار keys کو override کرتا ہے۔ وہ key جو custom endpoint کے خلاف authenticate کرتی ہے OPENAI_COMPATIBLE_API_KEY سے پڑھی جاتی ہے، تو اسے کبھی config dict یا source file میں ظاہر ہونے کی ضرورت نہیں۔ Environment-variable راستہ default_config.py میں _ENV_OVERRIDES mapping کے ذریعے یہی values سیٹ کرتا ہے اور Python API اور interactive CLI (tradingagents، یا python -m cli.main) دونوں کے لیے کام کرتا ہے۔ نوٹ کریں کہ backend_url کا default None ہے، جس صورت میں ہر provider کا client اپنے default endpoint پر fall back کرتا ہے؛ override تب ہی اثر انداز ہوتا ہے جب آپ اسے واضح طور پر سیٹ کریں۔ Market data ایک الگ معاملہ ہے۔ TradingAgents اپنے data vendors کے ذریعے quotes اور fundamentals کھینچتا ہے (مثلاً ALPHA_VANTAGE_API_KEY)، اور وہ credentials LLM endpoint سے غیر متعلق ہیں۔ backend_url بدلنا 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)

deep-think اور quick-think models چننا۔

Upstream default deep slot میں ایک frontier model کو quick slot میں ایک mini model سے جوڑتا ہے، جو صحیح شکل ہے: reasoning capacity وہاں خرچ کریں جہاں فیصلہ ہوتا ہے، اور volume capacity وہاں جہاں reading ہوتی ہے۔ ایک endpoint کے ذریعے route کرنا اس جوڑی کو runs کے درمیان دو لائنوں کی تبدیلی بنا دیتا ہے، تو عملی workflow یہ ہے کہ deep slot کو fixed رکھیں اور اندازہ لگانے کی بجائے quick slot کو اپنے backtest metrics کے خلاف A/B کریں۔

  • deep_think_llm bull/bear debate، trader decision، اور risk review اٹھاتا ہے۔ فی-run چند calls، مگر ہر ایک پورے analyst context پر reason کرتی ہے، اور max_debate_rounds انہیں ضرب دیتا ہے۔ یہی وہ جگہ ہے جہاں ایک frontier reasoning model (claude-opus-4-7، gpt-5.5) اپنے tokens کماتا ہے۔
  • quick_think_llm ہر analyst step پر چلتا ہے: fundamentals پڑھنا، sentiment score کرنا، news summarize کرنا، reports drafting کرنا۔ ایک run کے request volume کا زیادہ تر حصہ یہیں پڑتا ہے، تو ایک تیز mid-tier model (claude-sonnet-4-6، deepseek-v4-pro) debate inputs کو کمزور کیے بغیر runs کو تیز رکھتا ہے۔
  • Long-context loads، جیسے analysts میں پورے filings یا بڑے news windows فیڈ کرنا، وہ جگہ ہیں جہاں quick slot میں gemini-3.1-pro-preview ٹیسٹ کرنے کے قابل ہے۔
  • Backtests ہر چیز کو بڑھا دیتے ہیں۔ 50 tickers اور 20 dates پر ایک sweep 1,000 propagate() calls ہے، تو quick-think model کا انتخاب جو ایک run پر معمولی لگے sweep scale پر token bill پر حاوی ہو جاتا ہے۔

استعمال کے مطابق ادائیگی · سرکاری قیمت سے کم

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
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

Sweep scale پر backtesting: keys، pinning، اور limits۔

ایک بار single-run سیٹ اپ کام کرنے لگے، failure surface sweep کی طرف منتقل ہو جاتا ہے۔ تین عادات ایک multi-day backtest کو reproducible اور debuggable رکھتی ہیں۔ Exact model ids pin کریں۔ کچھ vendors پر bare model names rolling pointers ہوتے ہیں جو خاموشی سے newer snapshots کی طرف move ہو جاتے ہیں، جس کا مطلب ہے کہ پیر کو شروع ہو کر جمعہ کو ختم ہونے والا backtest شاید ایک model کبھی نہ چلا سکے۔ جہاں کیٹلاگ ایک dated variant list کرے، config میں dated id ڈالیں، اور نتائج کے ساتھ config dict ایسے record کریں جیسے آپ ایک random seed record کریں۔ فی-experiment ایک key استعمال کریں۔ Keys بنانا مفت ہے، اور ایک key کو ایک sweep تک scope کرنا usage log کو experiment کی cost ledger بنا دیتا ہے: فی-model token counts اور spend، بالکل اسی sweep کی runs تک filterable۔ جب دو experiments ایک key share کریں، بعد میں spend attribute کرنا timestamps grep کرنے کے مترادف ہے۔ Parallelize کرنے سے پہلے اپنی concurrency ceiling جان لیں۔ propagate() فی ticker-date synchronous ہے، تو sweeps عموماً processes میں shard ہوتی ہیں۔ ہر shard پہلے quick-think slot پر request rate کو ضرب دیتا ہے، اور debate کے بیچ ایک 429 پوری run کی قیمت لیتا ہے، نہ کہ ایک request کی۔ ٹھنڈے پچاس workers لانچ کرنے کی بجائے console دیکھتے ہوئے shard count بڑھائیں؛ pooled upstream channels ceiling بڑھاتے ہیں مگر اسے infinite نہیں بناتے۔

TradingAgents کو gateway کے ذریعے کون route کرتا ہے۔

  • وہ backtesters جو ticker-by-date sweeps چلاتے ہیں۔ فی-experiment سینکڑوں propagate() calls per-key usage visibility اور ایک واحد billing surface کو چار vendor dashboards سے زیادہ مفید بنا دیتے ہیں۔
  • وہ researchers جو model pairs compare کرتے ہیں۔ deep_think_llm کو Claude، GPT، اور DeepSeek ids کے درمیان بدلنا ایک endpoint کے خلاف ایک config edit ہے، فی-candidate نیا vendor account نہیں۔
  • وہ teams جو فی-role vendors mix کرتی ہیں۔ debate کے لیے Claude، analyst volume کے لیے DeepSeek۔ Native provider mode ایک run کو ایک vendor پر lock کر دیتا ہے؛ multi-vendor endpoint ایسا نہیں کرتا۔
  • وہ developers جن کے پاس کسی مخصوص vendor کی billing تک رسائی نہیں۔ Top-up پر مبنی رسائی بغیر کارڈ کی شرط کے فی-provider sign-up کا انحصار ختم کر دیتی ہے۔
  • Scheduled اور CI runs۔ env-only سیٹ اپ کا مطلب ہے runner image کو فی-provider ایک کی بجائے صرف ایک secret (OPENAI_COMPATIBLE_API_KEY) چاہیے۔

Endpoint verify کریں اور پہلی run debug کریں۔

مکمل analysis چلانے سے پہلے، تصدیق کریں کہ endpoint ان models کے ساتھ جواب دیتا ہے جو آپ استعمال کرنے کا ارادہ رکھتے ہیں۔ آپ کی key کے ساتھ /v1/models کے خلاف ایک one-line curl ہر قابلِ رسائی id list کرتا ہے؛ deep_think_llm اور quick_think_llm میں موجود strings کو ان ids سے بالکل میچ ہونا چاہیے۔ پہلی-run کے failure modes مستقل ہیں۔ ایک 401 تقریباً ہمیشہ مطلب رکھتا ہے کہ OPENAI_COMPATIBLE_API_KEY کسی مختلف shell میں export ہوئی تھی نہ کہ اس میں جو tradingagents چلا رہا ہے، یا بالکل export نہیں ہوئی؛ .bashrc میں سیٹ کیے گئے env vars کسی systemd unit یا cron job تک نہیں پہنچتے جب تک unit file خود انہیں export نہ کرے۔ model-not-found error کا مطلب ہے کہ id string کیٹلاگ سے میچ نہیں کرتی: ids exact ہوتی ہیں، version suffixes سمیت، اور اوپر دیا گیا /v1/models output ہی source of truth ہے۔ backend_url سیٹ ہونے کے باوجود connection error عموماً مطلب رکھتا ہے کہ URL میں /v1 suffix missing ہے، کیونکہ client آپ کے دیے گئے base میں /chat/completions جیسے route paths append کرتا ہے۔ اگر run کام کرے مگر debate phase میں رکی ہوئی لگے، تو یہ endpoint کا مسئلہ نہیں بلکہ long contexts پر reasoning models کے لیے normal latency ہے؛ agent steps کو stream ہوتے دیکھنے کے لیے debug=True آن رکھیں۔ بہت لمبے deep-think turns پر حقیقی timeouts ایک client-side setting ہیں، اور یہ نتیجہ نکالنے سے پہلے کہ backend نے request drop کر دی، انہیں بڑھانا قابل ہے۔ جب requests چلنے لگیں، APIsRouter console per-request model، token counts، اور spend دکھاتا ہے، جو اتنے call-heavy framework کے لیے یہ دیکھنے کا سب سے تیز طریقہ ہے کہ run کے tokens بالکل کہاں جاتے ہیں۔

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

عمومی سوالات

کیا TradingAgents ایک openai_compatible endpoint کے ذریعے Claude اور Gemini models سپورٹ کرتا ہے؟

جی ہاں۔ openai_compatible mode میں framework model field کو /v1/chat/completions پر backend_url کو ایک plain string کے طور پر بھیجتا ہے۔ جو بھی id endpoint serve کرے وہ چلتی ہے، Claude، Gemini، اور DeepSeek ids سمیت، deep-think یا quick-think دونوں میں سے کسی بھی slot میں۔

TradingAgents کسی custom backend_url کے ساتھ کون سی API key استعمال کرتا ہے؟

OPENAI_COMPATIBLE_API_KEY۔ openai_compatible provider اسے environment سے پڑھتا ہے، تو key کبھی آپ کے config dict یا source files میں ظاہر نہیں ہوتی۔ OPENAI_API_KEY صرف native openai provider استعمال کرتا ہے۔

کیا ایک ہی run میں deep_think_llm اور quick_think_llm مختلف vendors سے آ سکتے ہیں؟

ایک multi-vendor endpoint کے ذریعے، جی ہاں: دونوں slots ایک ہی backend_url کو post کرتے ہیں اور model string فی-request vendor کا فیصلہ کرتی ہے۔ native providers (openai، anthropic، google، deepseek) کے ساتھ ایک run دونوں slots کے لیے ایک vendor پر lock ہو جاتی ہے۔

کیا backend_url سیٹ ہونے کے بعد بھی مجھے OpenAI account چاہیے؟

نہیں۔ llm_provider کے openai_compatible پر سیٹ ہونے سے، کوئی request OpenAI hosts کو نہیں جاتی اور OPENAI_API_KEY نہیں پڑھی جاتی۔ آپ کو اب بھی وہ market-data credentials چاہئیں جو TradingAgents استعمال کرتا ہے (مثلاً ALPHA_VANTAGE_API_KEY)، جو LLM endpoint سے آزاد ہیں۔

کیا interactive CLI بھی custom endpoint کا احترام کرتا ہے؟

جی ہاں۔ CLI (tradingagents، یا python -m cli.main) وہی config resolve کرتا ہے، اور TRADINGAGENTS_LLM_PROVIDER / TRADINGAGENTS_LLM_BACKEND_URL environment variables provider prompt سے پہلے اسے override کر دیتی ہیں، تو scheduled یا containerized CLI runs کو routing کے لیے کسی interactive input کی ضرورت نہیں۔

ایک TradingAgents analysis کتنے tokens استعمال کرتا ہے؟

یہ max_debate_rounds، analysts کی تعداد، اور وہ کتنا market context ingest کرتے ہیں اس کے ساتھ بدلتا ہے؛ ایک single ticker-date analysis عام طور پر لاکھوں tokens تک پہنچتا ہے، جن میں سے زیادہ تر quick-think slot پر ہوتے ہیں۔ APIsRouter console میں per-key usage view فی-run exact split دکھاتا ہے، جو اندازہ لگانے سے کہیں زیادہ قابلِ بھروسہ ہے۔