ai-hedge-fund-কে একটা কাস্টম OpenAI-compatible base URL-এ চালান।

Updated 2026-07-30

ai-hedge-fund তার OpenAI model LangChain-এর ChatOpenAI দিয়ে বানায় এবং base URL OPENAI_API_BASE থেকে পড়ে। এটাকে https://api.apisrouter.com/v1-এ সেট করুন, এক key export করুন, এবং ফান্ডের প্রতিটা analyst agent এক endpoint দিয়ে route হবে।

দ্রুত উত্তর: OPENAI_API_BASE প্লাস এক 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-এ দুই লাইন: OPENAI_API_BASE-কে https://api.apisrouter.com/v1-এ point করুন এবং OPENAI_API_KEY-কে আপনার gateway key-তে সেট করুন। OpenAI provider দিয়ে চলা প্রতিটা model এখন gateway-তে post করে। variable নামটা মনোযোগ দিয়ে খেয়াল করুন: এটা OPENAI_API_BASE, LangChain-era convention, OPENAI_BASE_URL না। ভুল variable export করলে সেটা নীরবে ignore হয়ে যায় এবং request 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 endpoint

ai-hedge-fund কীভাবে একটা model এবং provider বেছে নেয়।

ai-hedge-fund (GitHub-এ virattt, প্রায় 62K star) একটা fund-কে agent-এর কমিটি হিসেবে simulate করে: পরিচিত investor-এর আদলে বানানো analyst persona, প্লাস valuation, sentiment, fundamentals, এবং technicals agent, যা একটা risk manager এবং একটা portfolio manager-কে feed করে যারা final signal বানায়। এদের সবাই run প্রতি একটা model choice share করে, তাই একটা single run আপনার model decision-কে প্রতিটা agent এবং প্রতিটা ticker জুড়ে গুণ করে দেয়। Model selection-এর দুইটা পথ আছে। Interactively, model flag ছাড়া poetry run python src/main.py --ticker AAPL,MSFT,NVDA চালালে একটা questionary picker খোলে। Scripted, --model flag একটা model name নেয়, কিন্তু শুধু সেই নাম যা repo-র model registry-তে আছে: find_model_by_name() স্ট্রিংটা src/llm/api_models.json-এ খুঁজে দেখে, এবং প্রতিটা registry entry-তে display_name, model_name, এবং provider থাকে। lookup fail করলে CLI provider guess করে না; এটা interactive picker-এ fallback করে, যা automation-এর জন্য গুরুত্বপূর্ণ কারণ একটা unknown id একটা scripted run-কে এমন run বানিয়ে দেয় যা keyboard input-এর জন্য বসে থাকে। provider field-ই routing ঠিক করে। OpenAI মার্ক করা entry ChatOpenAI দিয়ে যায় এবং OPENAI_API_BASE মেনে চলে; Anthropic মার্ক করা entry ChatAnthropic এবং ANTHROPIC_API_KEY দিয়ে যায়, আপনার base URL সম্পূর্ণভাবে bypass করে। gateway routing-এর জন্য এটাই key insight: কে আসলে model train করেছে তা নির্বিশেষে provider column client এবং তাই endpoint বেছে নেয়।

সম্পূর্ণ সেটআপ: .env প্লাস প্রতি gateway model-এ একটা registry entry।

যেসব model registry ইতিমধ্যে OpenAI provider-এর নিচে list করেছে, তাদের জন্য শুধু .env override-ই যথেষ্ট; model string যেমন আছে তেমনই endpoint-এ pass through হয়। একই key দিয়ে একটা Claude, DeepSeek, বা Qwen id gateway-এর মধ্য দিয়ে চালাতে, src/llm/api_models.json-এ catalog id-কে model_name হিসেবে এবং, গুরুত্বপূর্ণভাবে, "OpenAI"-কে provider হিসেবে সহ একটা entry যোগ করুন। Provider client বেছে নেয়, তাই একটা OpenAI-মার্ক করা entry ChatOpenAI এবং আপনার OPENAI_API_BASE দিয়ে যায় যদিও model নিজে একটা OpenAI model না। তারপর এটা interactive picker-এ দেখা যায় এবং script-এ --model দিয়ে resolve হয়। এটা আপনার clone-এ একটা তিন-লাইনের JSON edit, code change না, এবং এটা registry ইতিমধ্যে যে documented shape ব্যবহার করে সেটাই। contrast হিসেবে provider-native entry মনে রাখুন: Anthropic মার্ক করা একটা registry model select করলে ANTHROPIC_API_KEY খুঁজবে এবং সরাসরি Anthropic-এর endpoint-এ যাবে। আপনার লক্ষ্য যদি সবকিছুর জন্য এক gateway key হয়, তাহলে OpenAI-মার্ক করা entry দিয়ে আপনার model চালান এবং per-vendor key সম্পূর্ণ 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 কমিটির জন্য model বেছে নেওয়া।

যেহেতু registry প্রতিটা candidate-কে এক flag-এর পেছনে addressable করে দেয়, honest evaluation হলো empirical: একই ticker এবং date দুই বা তিনটা model দিয়ে চালান এবং signal ও spend তুলনা করুন। per-key usage view প্রতিটা sweep-এর দাম আপনার জন্য বলে দেয়, যা model choice-কে বিতর্ক থেকে measurement-এ পরিণত করে।

  • একটা run মানে অনেকগুলো রায়। প্রতিটা analyst persona প্রতি ticker-এ একই filing এবং price data নিয়ে reason করে, তাই model choice agent count গুণ ticker count দিয়ে গুণ হয়। একটা frontier reasoning id (claude-opus-4-7, gpt-5.5) প্রতিটা রায়ের quality বাড়ায়, সেই অনুপাতে গুণ হওয়া token bill-এ।
  • claude-sonnet-4-6 হলো সংবেদনশীল default: যথেষ্ট strong যে long fundamental context জুড়ে persona reasoning coherent থাকে, এমন run-এর জন্য priced যা এক ডজন agent এবং ticker-এর একটা basket জুড়ে fan out করে।
  • wide sweep-এর জন্য deepseek-v4-pro এবং qwen3.7-max বেঞ্চমার্ক করার যোগ্য, যেখানে per-run price gap প্রতিটা backtest date জুড়ে compound হয়।
  • যা-ই বেছে নিন, pin করুন। একটা moving model-এর ভিন্ন snapshot থেকে আসা signal একটা backtest window জুড়ে তুলনীয় না; exact id ব্যবহার করুন এবং result-এর পাশে model string একটা random seed-এর মতো রেকর্ড করুন।

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

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

ভুল environment variable। এই repo OPENAI_API_BASE পড়ে। OPENAI_BASE_URL, অন্য tool যে variable ব্যবহার করে, consult হয় না, এবং সেটা সেট করলে override ভাঙা বলে বিশ্বাস করানো ছাড়া কিছুই হয় না। Request এখনও api.openai.com-এ গেলে, প্রথমে variable name check করুন। Unregistered id সহ --model। find_model_by_name() শুধু api_models.json-এর entry চেনে। Register করা নেই এমন একটা catalog id pass করলে CLI একটা not-found message দেখায় এবং interactive picker-এ পড়ে, যা একটা cron job বা CI run-এ নীরব hang মানে, error exit না। প্রথমে id register করুন; তারপর scripted run নিশ্চিতভাবে resolve হয়। Provider-মার্ক করা entry gateway bypass করে। provider Anthropic, Google, বা DeepSeek এমন একটা registry model বেছে নিলে সেই vendor-এর native client এবং key দিয়ে route হয়। আপনি আশা করেছিলেন run আপনার gateway usage log-এ দেখা যাবে কিন্তু দেখা যায়নি? আপনার বেছে নেওয়া model-এর provider column-ই ব্যাখ্যা। LLM error-এর ছদ্মবেশে data error। Price এবং fundamentals data আসে FINANCIAL_DATASETS_API_KEY দিয়ে configure করা financial-data API থেকে, যা সম্পূর্ণ আলাদা একটা service। একটা missing বা exhausted data key LLM call-এর আগে বা মাঝে run fail করে দেয়, এবং traceback একটা model সমস্যার মতো পড়া যেতে পারে। দুই credential স্বাধীনভাবে fail করে; আলাদাভাবে debug করুন। Automation-এ interactive prompt। সবকিছু configure থাকলেও --model flag ভুলে গেলে picker খুলে যায়। Unattended run-এর জন্য, সবসময় একটা registered id সহ --model pass করুন।

কারা একটা gateway দিয়ে ai-hedge-fund route করে।

  • Ticker এবং date range sweep করা Backtester, যেখানে প্রতি ticker প্রতি date একটা agent কমিটি token spend-কে প্রধান খরচ বানায় এবং per-key usage-কে স্বাভাবিক ledger।
  • Model-এর রায় তুলনা করা Researcher। দুইটা model id-র নিচে একই run একটা flag change, এবং model-এর মধ্যে signal disagreement নিজেই interesting data।
  • নতুন agent দিয়ে repo extend করা Builder যারা যত persona-ই যোগ করুক না কেন তার নিচে এক endpoint এবং এক key চায়।
  • Developer যারা একটা cleanest routing path OpenAI-shaped এমন repo-র ভেতরে Claude বা DeepSeek reasoning চায়, প্রতি provider entry-তে vendor key maintain না করে।
  • Developer যাদের কোনো নির্দিষ্ট vendor-এর billing-এ access নেই। কোনো card requirement ছাড়া Top-up based access per-provider sign-up dependency সরিয়ে দেয়।

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

Run launch করার আগে confirm করুন gateway আপনার registered id serve করছে; registry model_name string exactly served id-র সাথে মিলতে হবে। প্রথম-run failure ladder: একটা 401 মানে poetry আসলে যে environment দিয়ে launch করেছে তাতে OPENAI_API_KEY gateway key না। gateway থেকে model-not-found error মানে registry entry-র model_name-এ /v1/models-এর তুলনায় একটা typo আছে। input-এর জন্য থেমে যাওয়া একটা run মানে --model string registry miss করেছে। একটা vendor-key error (Anthropic, Google) মানে selected entry-র provider OpenAI না। এবং কোনো model output-এর আগে একটা data-shaped traceback FINANCIAL_DATASETS_API_KEY-র দিকে ইঙ্গিত করে, LLM path-এর দিকে না। একবার run সম্পূর্ণ হলে, APIsRouter console per-request model, token count, এবং spend দেখায়। একটা কমিটি run মানে analyst, risk, এবং portfolio stage জুড়ে ডজন ডজন call, এবং একটা sweep-এ scale করার আগে একটা decision আসলে কত পড়ে তা দেখার জায়গা হলো usage view।

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

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

ai-hedge-fund-এর জন্য কোন environment variable কাস্টম base URL সেট করে?

OPENAI_API_BASE। src/llm/models.py-এর OpenAI provider base_url=os.getenv("OPENAI_API_BASE") দিয়ে ChatOpenAI বানায়। OPENAI_BASE_URL এই repo পড়ে না, তাই exact API_BASE spelling ব্যবহার করুন।

ai-hedge-fund কি এক key দিয়ে Claude বা DeepSeek model চালাতে পারে?

হ্যাঁ, src/llm/api_models.json-এ provider "OpenAI" সেট সহ id register করে। Provider client বেছে নেয়, তাই একটা OpenAI-মার্ক করা entry ChatOpenAI এবং আপনার OPENAI_API_BASE দিয়ে route হয়, এবং catalog id একটা plain string হিসেবে gateway-তে pass through হয়।

--model কেন আমাকে একটা interactive picker-এ ফেলে দেয়?

--model value api_models.json-এর বিরুদ্ধে find_model_by_name() দিয়ে lookup হয়। Unknown id guess করা হয় না; CLI একটা not-found message দেখায় এবং picker খোলে। id-র জন্য একটা registry entry যোগ করুন এবং scripted run prompt ছাড়াই resolve হবে।

আমার কি এখনও ANTHROPIC_API_KEY বা অন্য vendor key দরকার?

Gateway-routed model-এর জন্য না। Vendor key শুধু সেই vendor-এর provider মার্ক করা registry entry দিয়েই consult হয়। আপনি যা চালান তার প্রতিটা model OpenAI provider-এর নিচে registered থাকলে, gateway key-ই run-এর একমাত্র LLM credential।

LLM endpoint পাল্টালে কি market-data setup পাল্টায়?

না। Price এবং fundamentals data FINANCIAL_DATASETS_API_KEY দিয়ে configure করা financial-data API দিয়ে চলে, যা LLM base URL থেকে স্বাধীন। দুই credential run-এর ভিন্ন phase-এ fail করে, তাই আলাদাভাবে debug করুন।

একটা ai-hedge-fund run কত ব্যয়বহুল?

এটা agent গুণ ticker হিসেবে scale করে: প্রতিটা analyst persona, প্লাস risk এবং portfolio management, প্রতি ticker-এ reason করে। Single-basket run সাধারণত কয়েক হাজার থেকে কয়েক লক্ষ token-এ পৌঁছায়, এবং backtest sweep সেটাকে date grid দিয়ে গুণ করে। per-key usage view প্রতি run-এ exact সংখ্যা দেয়।