TradingAgents একটা কাস্টম OpenAI-compatible backend-এ চালান।

Updated 2026-07-30

TradingAgents একটা openai_compatible provider mode সহ শিপ করে। backend_url-কে https://api.apisrouter.com/v1-এ সেট করুন, এক key export করুন, এবং deep-think ও quick-think agent দুটোই এক endpoint দিয়ে route হয়, catalog-এর প্রতিটা model id দিয়ে addressable সহ।

দ্রুত উত্তর: তিনটা setting TradingAgents-কে যেকোনো জায়গায় route করে।

TradingAgents natively কাস্টম endpoint সাপোর্ট করে। llm_provider-কে "openai_compatible"-এ সেট করুন, backend_url-কে আপনার endpoint address-এ সেট করুন, এবং সেই endpoint-এর জন্য একটা key দিয়ে OPENAI_COMPATIBLE_API_KEY export করুন। APIsRouter দিয়ে backend URL হলো https://api.apisrouter.com/v1, এবং catalog-এর প্রতিটা model deep_think_llm এবং quick_think_llm slot থেকে তার exact model id দিয়ে addressable হয়ে যায়। এটা upstream repo-তে একটা documented configuration path, কোনো fork বা patch না। একই value environment variable হিসেবেও দেওয়া যায় (TRADINGAGENTS_LLM_PROVIDER, TRADINGAGENTS_LLM_BACKEND_URL, TRADINGAGENTS_DEEP_THINK_LLM, TRADINGAGENTS_QUICK_THINK_LLM), তাই একটা scheduled job বা CI runner Python code touch না করে backend 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+ star) একটা multi-agent trading framework। একটা analysis run fundamentals, sentiment, news, এবং technicals কভার করা একটা analyst team জুড়ে fan out করে, তারপর একটা bull researcher এবং একটা bear researcher এক বা একাধিক debate round জুড়ে মামলা যুক্তি দেয়, একটা trader agent position প্রস্তাব করে, এবং একটা risk-management layer final decision-এর আগে সেটা review করে। Framework সেই কাজকে দুইটা model slot জুড়ে split করে। deep_think_llm reasoning-heavy step handle করে: research debate, trader decision, এবং risk review। quick_think_llm high-volume step handle করে: data পড়া, news summarize করা, এবং analyst report draft করা। দুই slot-ই standard /v1/chat/completions request issue করে। Provider setting শুধু ঠিক করে সেই request কোন client এবং host-এ যায়, এবং openai_compatible সেগুলো আপনার configure করা backend_url-এ পাঠায়। Natively, TradingAgents OpenAI, Anthropic, Google, এবং DeepSeek-কেও first-party provider হিসেবে সাপোর্ট করে, কিন্তু প্রতিটাতে দরকার তার নিজস্ব account, নিজস্ব key, এবং প্রতি run এক provider। openai_compatible mode সেটা ভেঙে দেয়: TradingAgents model field একটা plain string হিসেবে pass through করে, তাই backend_url-এর পিছনের endpoint একাধিক vendor serve করলে, একটা Claude deep-think slot এবং একটা GPT বা DeepSeek quick-think slot একই analysis-এ চলতে পারে। সেই per-role mixing-ই একটা single vendor endpoint-এর বদলে একটা gateway দিয়ে framework route করার practical কারণ।

সম্পূর্ণ সেটআপ: Python config বা environment variable।

Programmatic path DEFAULT_CONFIG copy করে এবং চারটা key override করে। কাস্টম endpoint-এর বিরুদ্ধে authenticate করা key OPENAI_COMPATIBLE_API_KEY থেকে পড়া হয়, তাই এটার কখনো config dict বা source file-এ দেখা যাওয়ার দরকার নেই। Environment-variable path default_config.py-এর _ENV_OVERRIDES mapping দিয়ে একই value সেট করে এবং Python API ও interactive CLI (tradingagents, বা python -m cli.main) দুটোর জন্যই কাজ করে। লক্ষ্য করুন backend_url default None-এ থাকে, যে ক্ষেত্রে প্রতিটা provider-এর client তার নিজস্ব default endpoint-এ fallback করে; override শুধু আপনি explicitly সেট করলেই কার্যকর হয়। Market data একটা আলাদা বিষয়। TradingAgents তার data vendor দিয়ে quote এবং fundamentals টানে (উদাহরণ ALPHA_VANTAGE_API_KEY), এবং সেই credential LLM endpoint থেকে অসম্পর্কিত। backend_url পাল্টানো data pipeline-কে touch করে না।

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 model বেছে নেওয়া।

Upstream default deep slot-এ একটা frontier model quick slot-এ একটা mini model-এর সাথে জোড়া লাগায়, যা সঠিক shape: যেখানে decision হয় সেখানে reasoning capacity খরচ করুন, এবং যেখানে reading হয় সেখানে volume capacity। এক endpoint দিয়ে route করা জোড়া লাগানোকে run-এর মধ্যে একটা দুই-লাইনের change বানায়, তাই practical workflow হলো deep slot fix রাখা এবং অনুমান না করে আপনার backtest metric-এর বিরুদ্ধে quick slot A/B করা।

  • deep_think_llm bull/bear debate, trader decision, এবং risk review বহন করে। প্রতি run কম call, কিন্তু প্রতিটাই পুরো analyst context জুড়ে reason করে, এবং max_debate_rounds সেগুলো গুণ করে। এখানেই একটা frontier reasoning model (claude-opus-4-7, gpt-5.5) তার token আয় করে।
  • quick_think_llm প্রতিটা analyst step-এ fire করে: fundamentals পড়া, sentiment score করা, news summarize করা, report draft করা। একটা run-এর বেশিরভাগ request volume এখানে পড়ে, তাই একটা fast mid-tier model (claude-sonnet-4-6, deepseek-v4-pro) debate input degrade না করে run দ্রুত রাখে।
  • লম্বা-context load, যেমন analyst-দের পুরো filing বা বড় news window feed করা, সেখানে quick slot-এ gemini-3.1-pro-preview test করার যোগ্য।
  • Backtest সবকিছু বাড়িয়ে দেয়। 50 ticker এবং 20 date-এর একটা sweep মানে 1,000টা propagate() call, তাই একটা run-এ marginal মনে হওয়া quick-think model choice sweep scale-এ token bill-কে dominate করে।

ব্যবহার অনুযায়ী পেমেন্ট · অফিশিয়াল মূল্যের নিচে

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: key, pinning, এবং limit।

একবার single-run setup কাজ করলে, failure surface sweep-এ move করে। তিনটা habit একটা multi-day backtest-কে reproducible এবং debuggable রাখে। Exact model id pin করুন। কিছু vendor-এ bare model name rolling pointer যা নীরবে নতুন snapshot-এ সরে যায়, মানে সোমবারে শুরু হওয়া এবং শুক্রবারে শেষ হওয়া একটা backtest হয়তো এক model দিয়ে চলেনি। catalog যেখানে একটা dated variant list করে, config-এ dated id দিন, এবং একটা random seed-এর মতো result-এর পাশে config dict রেকর্ড করুন। প্রতি experiment-এ এক key ব্যবহার করুন। Key তৈরি করা বিনামূল্যে, এবং একটা sweep-এ একটা key scope করা usage log-কে experiment-এর cost ledger বানায়: token count এবং spend প্রতি model, সেই sweep-এর ঠিক run-গুলোতে filterable। দুইটা experiment এক key share করলে, পরে spend attribute করা মানে timestamp grep করা। Parallelize করার আগে আপনার concurrency ceiling জানুন। propagate() প্রতি ticker-date synchronous, তাই sweep সাধারণত process জুড়ে shard হয়। প্রতি shard প্রথমে quick-think slot-এ request rate গুণ করে, এবং মাঝ-debate-এ একটা 429 এক request না, পুরো run খরচ করে। ঠান্ডা মাথায় পঞ্চাশটা worker launch করার বদলে console দেখতে দেখতে shard count ramp করুন; pooled upstream channel ceiling বাড়ায় কিন্তু সেটাকে অসীম বানায় না।

কারা একটা gateway দিয়ে TradingAgents route করে।

  • Ticker-by-date sweep চালানো Backtester। প্রতি experiment শত শত propagate() call per-key usage visibility এবং একটা single billing surface-কে চারটা vendor dashboard-এর চেয়ে বেশি useful বানায়।
  • Model pair তুলনা করা Researcher। deep_think_llm-কে Claude, GPT, এবং DeepSeek id-র মধ্যে swap করা এক endpoint-এর বিরুদ্ধে একটা config edit, প্রতি candidate একটা নতুন vendor account না।
  • Per role vendor mix করা Team। Debate-এর জন্য Claude, analyst volume-এর জন্য DeepSeek। Native provider mode একটা run-কে দুই slot-এর জন্যই এক vendor-এ lock করে; একটা multi-vendor endpoint তা করে না।
  • Developer যাদের কোনো নির্দিষ্ট vendor-এর billing-এ access নেই। কোনো card requirement ছাড়া Top-up based access প্রতি provider sign-up dependency সরিয়ে দেয়।
  • Scheduled এবং CI run। Env-only setup মানে runner image-এ প্রতি provider একটা-র বদলে এক secret দরকার (OPENAI_COMPATIBLE_API_KEY)।

Endpoint verify করুন এবং প্রথম run debug করুন।

একটা পূর্ণ analysis চালানোর আগে, confirm করুন endpoint আপনার ব্যবহার করার plan করা model দিয়ে উত্তর দিচ্ছে। আপনার key দিয়ে /v1/models-এর বিরুদ্ধে একটা এক-লাইনের curl প্রতিটা addressable id list করে; deep_think_llm এবং quick_think_llm-এর string-কে exactly সেই id-দের সাথে মিলতে হবে। প্রথম run-এ failure mode সংগত। একটা 401 প্রায় সবসময় মানে OPENAI_COMPATIBLE_API_KEY tradingagents আসলে যে shell দিয়ে চালানো হয়েছে তার থেকে ভিন্ন একটা shell-এ export হয়েছে, বা মোটেও export হয়নি; .bashrc-এ সেট করা env var একটা systemd unit বা cron job-এ পৌঁছায় না যদি না unit file নিজেই সেগুলো export করে। একটা model-not-found error মানে id string catalog-এর সাথে মেলে না: id exact, version suffix সহ, এবং উপরের /v1/models output-ই source of truth। backend_url সেট থাকা অবস্থায় একটা connection error সাধারণত মানে URL তার /v1 suffix হারিয়েছে, যেহেতু client আপনার দেওয়া base-এ /chat/completions-এর মতো route path append করে। Run কাজ করলেও debate phase-এ আটকে থাকার মতো মনে হলে, সেটা reasoning model-এর লম্বা context-এর উপর normal latency, endpoint সমস্যা না; agent step stream হতে দেখতে debug=True চালু রাখুন। খুব লম্বা deep-think turn-এ genuine timeout একটা client-side setting, এবং backend request drop করেছে উপসংহারে আসার আগে raise করার যোগ্য। Request flow শুরু হলে, APIsRouter console per-request model, token count, এবং spend দেখায়, যা এত call-heavy একটা framework-এর জন্য একটা run-এর token ঠিক কোথায় যায় তা দেখার সবচেয়ে দ্রুত উপায়।

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

সাধারণ প্রশ্ন

TradingAgents কি এক openai_compatible endpoint দিয়ে Claude এবং Gemini model সাপোর্ট করে?

হ্যাঁ। openai_compatible mode-এ framework model field একটা plain string হিসেবে /v1/chat/completions-এর উপর দিয়ে backend_url-এ পাঠায়। Endpoint যা serve করে সেই id কাজ করে, Claude, Gemini, এবং DeepSeek id সহ, deep-think বা quick-think যেকোনো slot-এ।

একটা কাস্টম backend_url-এর সাথে TradingAgents কোন API key ব্যবহার করে?

OPENAI_COMPATIBLE_API_KEY। openai_compatible provider environment থেকে এটা পড়ে, তাই key আপনার config dict বা source file-এ কখনো দেখা যায় না। OPENAI_API_KEY শুধু native openai provider ব্যবহার করে।

একই run-এ কি deep_think_llm এবং quick_think_llm ভিন্ন vendor থেকে আসতে পারে?

একটা multi-vendor endpoint দিয়ে, হ্যাঁ: দুই slot-ই একই backend_url-এ post করে এবং model string প্রতি request-এ vendor ঠিক করে। Native provider (openai, anthropic, google, deepseek) দিয়ে একটা run দুই slot-এর জন্যই এক vendor-এ lock থাকে।

backend_url সেট হয়ে যাওয়ার পরও কি আমার এখনও OpenAI account দরকার?

না। llm_provider openai_compatible-এ সেট থাকা অবস্থায়, কোনো request OpenAI host-এ যায় না এবং OPENAI_API_KEY পড়া হয় না। আপনার এখনও TradingAgents যে market-data credential ব্যবহার করে তা দরকার (উদাহরণ ALPHA_VANTAGE_API_KEY), যা LLM endpoint থেকে স্বাধীন।

Interactive CLI-ও কি কাস্টম endpoint মেনে চলে?

হ্যাঁ। CLI (tradingagents, বা python -m cli.main) একই config resolve করে, এবং TRADINGAGENTS_LLM_PROVIDER / TRADINGAGENTS_LLM_BACKEND_URL environment variable provider prompt-এর আগে সেটা override করে, তাই scheduled বা containerized CLI run-এ routing-এর জন্য কোনো interactive input দরকার নেই।

একটা TradingAgents analysis কত token খরচ করে?

এটা max_debate_rounds, analyst সংখ্যা, এবং তারা কতটুকু market context নেয় তার সাথে পাল্টায়; একটা single ticker-date analysis সাধারণত কয়েক লক্ষ token-এ পৌঁছায়, তার বেশিরভাগ quick-think slot-এ। APIsRouter console-এর per-key usage view প্রতি run-এ exact split দেখায়, যা অনুমানের চেয়ে বেশি নির্ভরযোগ্য।