ai-hedge-fund کو ایک custom OpenAI-compatible base URL پر چلائیں۔

Updated 2026-07-30

ai-hedge-fund اپنے OpenAI models کو LangChain کے ChatOpenAI سے بناتا ہے اور base URL کو OPENAI_API_BASE سے پڑھتا ہے۔ اسے https://api.apisrouter.com/v1 پر سیٹ کریں، ایک key export کریں، اور fund کا ہر 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۔ غلط نام export کرنا خاموشی سے نظر انداز ہو جاتا ہے اور requests api.openai.com کی طرف جاتی رہتی ہیں، جو اس سیٹ اپ کے کام نہ کرنے کی سب سے عام وجہ ہے۔

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 stars) ایک fund کو agents کی committee کے طور پر simulate کرتا ہے: معروف investors پر ماڈل کیے گئے analyst personas، اور valuation، sentiment، fundamentals، اور technicals agents، جو ایک risk manager اور ایک portfolio manager کو feed کرتے ہیں جو حتمی signals پیدا کرتے ہیں۔ ان سب کا فی run ایک ہی model انتخاب مشترک ہوتا ہے، تو ایک run آپ کے model کے فیصلے کو ہر agent اور ہر ticker پر ضرب دیتا ہے۔ Model selection کے دو راستے ہیں۔ Interactively، poetry run python src/main.py --ticker AAPL,MSFT,NVDA بغیر کسی model flag کے چلانا ایک questionary picker کھولتا ہے۔ Scripted طریقے میں، --model flag ایک model نام لیتا ہے، مگر صرف وہ نام جو repo کی model registry میں موجود ہوں: find_model_by_name() اس string کو src/llm/api_models.json میں تلاش کرتا ہے، اور ہر registry entry display_name، model_name، اور provider رکھتی ہے۔ اگر lookup فیل ہو جائے تو CLI کوئی provider اندازہ نہیں لگاتا؛ یہ interactive picker پر واپس آ جاتا ہے، جو automation کے لیے اہم ہے کیونکہ ایک unknown id ایک scripted run کو ایسے run میں بدل دیتی ہے جو keyboard input کا انتظار کرتا رہ جائے۔ provider field وہی ہے جو routing کا فیصلہ کرتی ہے۔ OpenAI مارک کی گئی entries ChatOpenAI سے گزرتی ہیں اور OPENAI_API_BASE کی پیروی کرتی ہیں؛ Anthropic مارک کی گئی entries ChatAnthropic اور ANTHROPIC_API_KEY سے گزرتی ہیں، آپ کے base URL کو مکمل طور پر نظر انداز کرتے ہوئے۔ gateway routing کے لیے یہی اصل نکتہ ہے: provider column client اور اس لیے endpoint منتخب کرتا ہے، اس بات سے آزاد کہ model اصل میں کس نے بنایا۔

مکمل سیٹ اپ: .env کے ساتھ فی gateway model ایک registry entry۔

ان models کے لیے جو registry پہلے ہی OpenAI provider کے تحت list کرتی ہے، صرف .env override کافی ہے؛ model string ویسے ہی endpoint کو pass ہو جاتی ہے۔ کسی Claude، DeepSeek، یا Qwen id کو اسی key کے ذریعے gateway پر چلانے کے لیے، src/llm/api_models.json میں ایک entry شامل کریں جس میں model_name کے طور پر کیٹلاگ id ہو اور، اہم بات، provider کے طور پر "OpenAI"۔ Provider client منتخب کرتا ہے، تو ایک OpenAI-marked entry ChatOpenAI اور آپ کے OPENAI_API_BASE سے گزرتی ہے چاہے model خود کوئی OpenAI model نہ ہو۔ یہ entry پھر interactive picker میں ظاہر ہوتی ہے اور scripts میں --model کے ذریعے resolve ہوتی ہے۔ یہ آپ کے clone میں تین لائنوں کا JSON edit ہے، کوئی code تبدیلی نہیں، اور یہ وہی documented شکل ہے جسے registry پہلے سے استعمال کرتی ہے۔ provider-native entries کو contrast کے طور پر ذہن میں رکھیں: کسی ایسی registry model کو منتخب کرنا جو Anthropic مارک ہو ANTHROPIC_API_KEY تلاش کرے گی اور سیدھا Anthropic کے endpoint پر جائے گی۔ اگر آپ کا مقصد ہر چیز کے لیے ایک gateway key ہے، تو اپنے models کو OpenAI-marked entries کے ذریعے چلائیں اور آپ فی-vendor keys کو مکمل طور پر 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 committee کے لیے model چننا۔

چونکہ registry ہر candidate کو ایک flag کے پیچھے addressable بنا دیتی ہے، ایماندار evaluation empirical ہے: ایک ہی tickers اور dates کو دو یا تین models سے گزاریں اور signals اور spend compare کریں۔ per-key usage view ہر sweep کی قیمت آپ کے لیے لگا دیتا ہے، جو model کے انتخاب کو ایک بحث سے ایک measurement میں بدل دیتا ہے۔

  • ایک run کئی verdicts ہے۔ ہر analyst persona فی ticker وہی filings اور price data پر reason کرتا ہے، تو model کا انتخاب agent count ضرب ticker count سے ضرب ہو جاتا ہے۔ ایک frontier reasoning id (claude-opus-4-7، gpt-5.5) ہر verdict کا معیار بڑھاتی ہے مگر اسی تناسب سے ضرب شدہ token bill پر۔
  • claude-sonnet-4-6 معقول default ہے: اتنا مضبوط کہ persona reasoning لمبے fundamental context پر coherent رہے، اور اتنی قیمت پر کہ ایک درجن agents اور tickers کے basket پر پھیلنے والے runs کے لیے مناسب ہو۔
  • deepseek-v4-pro اور qwen3.7-max وسیع sweeps کے لیے benchmark کرنے کے قابل ہیں، جہاں فی-run قیمت کا فرق ہر backtest date پر compound ہوتا ہے۔
  • جو بھی چنیں، اسے pin کریں۔ کسی moving model کے مختلف snapshots سے آنے والے signals ایک backtest window میں comparable نہیں ہوتے؛ exact ids استعمال کریں اور model string کو نتائج کے ساتھ ایک random seed کی طرح record کریں۔

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

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 سے مخصوص failure modes۔

غلط environment variable۔ یہ repo OPENAI_API_BASE پڑھتی ہے۔ OPENAI_BASE_URL، وہ variable جو دیگر tools استعمال کرتے ہیں، consult نہیں ہوتی، اور اسے سیٹ کرنا کچھ نہیں کرتا سوائے اس کے کہ آپ کو یقین دلا دے کہ override ٹوٹا ہوا ہے۔ اگر requests اب بھی api.openai.com پر جا رہی ہوں، تو سب سے پہلے variable کا نام چیک کریں۔ ایک unregistered id کے ساتھ --model۔ find_model_by_name() صرف api_models.json کی entries جانتا ہے۔ ایک ایسی کیٹلاگ id pass کریں جو registered نہ ہو اور CLI ایک not-found message پرنٹ کرتا ہے اور interactive picker میں گر جاتا ہے، جو ایک cron job یا CI run میں silent hang کا مطلب رکھتا ہے، error exit کا نہیں۔ پہلے id register کریں؛ پھر scripted runs اسے deterministically resolve کرتی ہیں۔ Provider-marked entries gateway کو bypass کرنا۔ ایک ایسی registry model چننا جس کا provider Anthropic، Google، یا DeepSeek ہو اس vendor کے native client اور key سے route ہوتی ہے۔ اگر آپ نے توقع کی تھی کہ run آپ کے gateway usage log میں ظاہر ہو گا اور وہ نہ ہوا، تو آپ کے چنے گئے model کا provider column اس کی وضاحت ہے۔ LLM errors کا روپ دھارے ہوئے Data errors۔ Price اور fundamentals data FINANCIAL_DATASETS_API_KEY سے configured financial-data API سے آتا ہے، ایک بالکل الگ service۔ ایک missing یا ختم شدہ data key run کو LLM calls سے پہلے یا ان کے درمیان fail کر دیتی ہے، اور traceback ایک model کے مسئلے جیسا پڑھا جا سکتا ہے۔ دونوں credentials خودمختار طور پر fail ہوتی ہیں؛ انہیں خودمختار طور پر debug کریں۔ Automation میں interactive prompts۔ سب کچھ configured ہونے کے باوجود، --model flag بھولنا picker کھول دیتا ہے۔ unattended runs کے لیے، ہمیشہ ایک registered id کے ساتھ --model pass کریں۔

ai-hedge-fund کو gateway کے ذریعے کون route کرتا ہے۔

  • Backtesters جو tickers اور date ranges پر sweep کرتے ہیں، جہاں فی ticker فی date ایک agent committee token spend کو dominant cost بنا دیتی ہے اور per-key usage قدرتی ledger۔
  • وہ researchers جو model verdicts compare کرتے ہیں۔ ایک ہی run کو دو model ids کے تحت چلانا ایک flag تبدیلی ہے، اور models کے درمیان signal disagreement خود ایک دلچسپ data ہے۔
  • وہ builders جو نئے agents کے ساتھ repo کو extend کرتے ہیں اور جتنے بھی personas شامل کریں ان کے نیچے ایک endpoint اور ایک key چاہتے ہیں۔
  • وہ developers جو ایک repo کے اندر Claude یا DeepSeek reasoning چاہتے ہیں جس کا cleanest routing path OpenAI-shaped ہے، بغیر فی provider entry کے لیے vendor key maintain کیے۔
  • وہ developers جن کے پاس کسی مخصوص vendor کی billing تک رسائی نہیں۔ Top-up پر مبنی رسائی بغیر کارڈ کی شرط کے فی-provider sign-up کا انحصار ختم کر دیتی ہے۔

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

run شروع کرنے سے پہلے تصدیق کریں کہ gateway وہی ids serve کرتی ہے جو آپ نے register کی ہیں؛ registry model_name strings کو served ids سے بالکل میچ ہونا چاہیے۔ پہلی-run کی failure ladder: ایک 401 کا مطلب ہے OPENAI_API_KEY وہ gateway key نہیں جس environment میں poetry نے actually launch کیا۔ gateway سے ایک model-not-found error کا مطلب ہے registry entry کے model_name میں /v1/models کے مقابلے میں typo ہے۔ ایک run جو input مانگنے کے لیے رک جائے مطلب ہے --model string registry سے میچ نہیں ہوا۔ ایک vendor-key error (Anthropic، Google) مطلب ہے منتخب کی گئی entry کا provider OpenAI نہیں۔ اور کسی model output سے پہلے آنے والا data-shaped traceback FINANCIAL_DATASETS_API_KEY کی طرف اشارہ کرتا ہے، LLM path کی طرف نہیں۔ ایک بار run مکمل ہونے پر، APIsRouter console per-request model، token counts، اور spend دکھاتا ہے۔ ایک committee run analysts، risk، اور portfolio stages کے پار درجنوں calls ہے، اور usage view وہی طریقہ ہے جس سے آپ دیکھ سکتے ہیں کہ ایک فیصلے کی اصل قیمت کیا ہے اس سے پہلے کہ آپ اسے sweep میں scale کریں۔

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

عمومی سوالات

کون سا environment variable ai-hedge-fund کے لیے custom base URL سیٹ کرتا ہے؟

OPENAI_API_BASE۔ src/llm/models.py میں OpenAI provider ChatOpenAI کو base_url=os.getenv("OPENAI_API_BASE") کے ساتھ بناتا ہے۔ OPENAI_BASE_URL اس repo میں پڑھا نہیں جاتا، تو API_BASE spelling بالکل ویسی ہی استعمال کریں۔

کیا ai-hedge-fund Claude یا DeepSeek models کو ایک key کے ذریعے چلا سکتا ہے؟

جی ہاں، src/llm/api_models.json میں id کو provider "OpenAI" سیٹ کر کے register کرنے سے۔ Provider client منتخب کرتا ہے، تو ایک OpenAI-marked entry ChatOpenAI اور آپ کے OPENAI_API_BASE سے گزرتی ہے، اور کیٹلاگ id gateway کو ایک plain string کے طور پر pass ہوتی ہے۔

--model مجھے interactive picker میں کیوں لے جاتا ہے؟

--model value کو find_model_by_name() کے ذریعے api_models.json کے خلاف lookup کیا جاتا ہے۔ Unknown ids کا اندازہ نہیں لگایا جاتا؛ CLI ایک not-found message پرنٹ کرتا ہے اور picker کھول دیتا ہے۔ اس id کے لیے ایک registry entry شامل کریں اور scripted runs بغیر prompt کے اسے resolve کر لیتی ہیں۔

کیا مجھے اب بھی ANTHROPIC_API_KEY یا دیگر vendor keys کی ضرورت ہے؟

gateway-routed models کے لیے نہیں۔ Vendor keys صرف انہی registry entries سے consult ہوتی ہیں جو اس vendor کے provider سے مارک ہوں۔ اگر آپ کا چلایا گیا ہر model OpenAI provider کے تحت register ہے، تو gateway key ہی run کا واحد LLM credential ہے۔

جب میں LLM endpoint بدلتا ہوں تو کیا market-data setup بدل جاتا ہے؟

نہیں۔ Price اور fundamentals data FINANCIAL_DATASETS_API_KEY سے configured financial-data API کے ذریعے بہتا ہے، جو LLM base URL سے خودمختار ہے۔ دونوں credentials run کے مختلف phases میں fail ہوتی ہیں، تو انہیں الگ الگ debug کریں۔

ایک ai-hedge-fund run کتنا مہنگا ہوتا ہے؟

یہ agents ضرب tickers کے ساتھ scale کرتا ہے: ہر analyst persona، ساتھ ہی risk اور portfolio management، فی ticker reason کرتی ہے۔ Single-basket runs عام طور پر دسیوں سے سینکڑوں ہزار tokens تک پہنچتی ہیں، اور backtest sweeps اسے date grid سے ضرب دیتی ہیں۔ per-key usage view فی run exact figure دیتا ہے۔