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 endpointai-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 সংখ্যা দেয়।