gpt-researcher کو ایک custom OpenAI-compatible endpoint پر چلائیں۔
Updated 2026-07-30
gpt-researcher environment سے OPENAI_BASE_URL پڑھتا ہے اور اپنا کام تین model slots میں تقسیم کرتا ہے۔ base URL کو https://api.apisrouter.com/v1 پر سیٹ کریں، openai: prefix رکھیں، اور FAST_LLM، SMART_LLM، اور STRATEGIC_LLM ہر ایک ایک ہی key کے پیچھے مختلف کیٹلاگ model ہو سکتا ہے۔
فوری جواب: پانچ لائنوں کا .env block۔
gpt-researcher کا documented custom-endpoint راستہ environment variables ہیں۔ OPENAI_BASE_URL کو https://api.apisrouter.com/v1 پر سیٹ کریں، OPENAI_API_KEY کو اپنی gateway key پر سیٹ کریں، اور تینوں model slots کو openai: provider prefix کے ساتھ assign کریں۔ prefix gpt-researcher کو بتاتا ہے کہ کون سا client استعمال کرنا ہے؛ colon کے بعد آنے والی string endpoint تک pass ہو جاتی ہے، تو gateway جو بھی id serve کرے وہ valid ہے، Claude اور Gemini ids سمیت۔ یہ وہی configuration ہے جو docs.gptr.dev پر custom OpenAI-compatible endpoints کے لیے documented ہے، اور یہ pip package، web app، اور multi-agent flows کے لیے یکساں طور پر کام کرتا ہے، کیونکہ یہ سب اسی config کو resolve کرتے ہیں۔
OPENAI_BASE_URL=https://api.apisrouter.com/v1
OPENAI_API_KEY=sk-APIsRouter-...
FAST_LLM=openai:claude-haiku-4-5-20251001
SMART_LLM=openai:claude-sonnet-4-6
STRATEGIC_LLM=openai:gpt-5.5gpt-researcher تین slots میں tokens کیسے خرچ کرتا ہے۔
gpt-researcher (GitHub پر assafelovic، تقریباً 28K stars) ایک query کو ایک researched، cited report میں بدل دیتا ہے: یہ research questions plan کرتا ہے، ایک retriever کے ذریعے web searches میں پھیلتا ہے، sources scrape اور summarize کرتا ہے، اور پھر ایک long-form report لکھتا ہے۔ framework اس pipeline کو ایک کی بجائے تین configurable model slots میں تقسیم کرتا ہے۔ FAST_LLM high-volume، low-stakes کام handle کرتا ہے، بنیادی طور پر scraped pages کو summarize کرنا۔ SMART_LLM بھاری writing کرتا ہے، بشمول final report۔ STRATEGIC_LLM planning handle کرتا ہے: research questions generate کرنا اور approach decide کرنا۔ out of the box یہ OpenAI models پر default ہوتے ہیں (writing کے وقت بالترتیب gpt-4o-mini، gpt-4.1، اور o4-mini)، اور یہی وجہ ہے کہ واحد OPENAI_BASE_URL override اتنا مؤثر ہے: تینوں slots OpenAI-shaped client استعمال کرتے ہیں، تو ایک base URL پوری pipeline کو move کر دیتا ہے۔ چونکہ ہر slot اپنی own provider:model string لیتا ہے، slots کو ایک vendor share کرنے کی ضرورت نہیں۔ ایک run ایک تیز Claude model سے summarize کر سکتا ہے، ایک زیادہ طاقتور Claude یا GPT model سے لکھ سکتا ہے، اور ایک reasoning-tier model سے plan کر سکتا ہے، سب ایک ہی endpoint اور key کے ذریعے۔ ایک single-vendor key پر اس mix کے لیے تین accounts چاہئیں ہوتے؛ ایک gateway کے پیچھے یہ .env میں تین لائنیں ہیں۔
مکمل سیٹ اپ: .env کے ساتھ ساتھ Python API۔
اپنی working directory میں ایک .env file بنائیں (یا shell میں variables export کریں) اور gpt-researcher کو معمول کے مطابق چلائیں؛ pip package اور web app دونوں اسی environment کو پڑھتے ہیں۔ Python API کو endpoint-specific کسی code کی ضرورت بالکل نہیں پڑتی، اور یہی نکتہ ہے: routing configuration ہے، اور research code یکساں رہتا ہے چاہے endpoint OpenAI کا ہو یا کسی gateway کا۔ دو ساتھ والی settings اہم ہیں۔ Web retrieval ایک retriever کے ذریعے چلتا ہے، default طور پر Tavily، اپنی own key (TAVILY_API_KEY) کے ساتھ؛ وہ credential LLM endpoint سے آزاد ہے اور live web research کے لیے اب بھی درکار ہے۔ اور embeddings default طور پر openai:text-embedding-3-small ہوتے ہیں، جس کا مطلب ہے embedding calls اسی OpenAI-shaped client configuration کی پیروی کرتی ہیں؛ اگر OPENAI_BASE_URL کے پیچھے موجود endpoint وہ embedding model serve نہ کرے، تو EMBEDDING کو ایسے provider پر configure کریں جو کرتا ہو (docs OpenAI-compatible embedding endpoints کے لیے custom: prefix استعمال کرتے ہیں، اور Ollama جیسے local options بھی سپورٹڈ ہیں)۔
import asyncio
from gpt_researcher import GPTResearcher
async def main():
researcher = GPTResearcher(
query="State of small modular reactors in 2026",
report_type="research_report",
)
await researcher.conduct_research()
report = await researcher.write_report()
print(report)
asyncio.run(main()) # routing comes entirely from .envہر slot کے لیے models چننا۔
Upstream defaults صحیح shape encode کرتے ہیں، volume کے لیے چھوٹا model، writing کے لیے strong model، planning کے لیے reasoning model، تو وہ shape رکھیں اور slots کو ایک model میں flatten کرنے کی بجائے upgrade کریں۔ ایک endpoint کے پیچھے، دو writers کے درمیان A/B فی-run ایک-line کا .env change ہے، اور per-key usage log آپ کو بتاتا ہے کہ ہر report configuration کی حقیقی قیمت کیا رہی۔
- FAST_LLM سب سے زیادہ fire ہوتا ہے: ہر scraped source summarize ہوتا ہے۔ ایک تیز id (claude-haiku-4-5-20251001، deepseek-v4-flash) ایک many-source report کو summarization cost سے dominate ہونے سے روکتی ہے، اور یہاں quality loss محدود ہے کیونکہ summaries writer کو کھلاتی ہیں، reader کو نہیں۔
- SMART_LLM وہ report لکھتا ہے جو user حقیقت میں پڑھتا ہے۔ لمبا output، مستقل structure، citation discipline: یہاں claude-sonnet-4-6 یا gpt-5.5 spend کا حق حاصل کرتی ہے، اور یہیں quality کاٹنا فوراً نظر آتا ہے۔
- STRATEGIC_LLM run کو اس کے شروع ہونے سے پہلے shape دیتا ہے۔ خراب research questions ایک خراب report پیدا کرتے ہیں چاہے writer کتنا ہی اچھا ہو؛ یہاں ایک reasoning-strong model کالز کم مگر leverage زیادہ رکھتا ہے۔
- gemini-3.1-pro-preview جیسی long-context ids detailed_report runs کے لیے SMART slot میں ٹیسٹ کرنے کے قابل ہیں، جہاں writer summaries کے ایک بڑے accumulated context پر کام کرتا ہے۔
استعمال کے مطابق ادائیگی · سرکاری قیمت سے کم
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| ماڈل | سرکاری قیمت | ہماری قیمت |
|---|---|---|
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.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 |
gpt-researcher سے مخصوص failure modes۔
Provider prefix چھوڑ دینا۔ slot format provider:model ہے، اور prefix client منتخب کرتا ہے۔ SMART_LLM=claude-sonnet-4-6 کو openai: کے بغیر سیٹ کرنا آپ کے base URL کے ذریعے Claude id کو route نہیں کرتا؛ یہ gpt-researcher کو string کو ایک مختلف provider کے طور پر interpret کرنے کی کوشش پر مجبور کرتا ہے۔ ہر custom-endpoint model کو openai: prefix رکھنا چاہیے، کیونکہ یہاں "openai" protocol کا نام لیتا ہے، vendor کا نہیں۔ Embeddings خاموشی سے override کی پیروی کرتی ہیں۔ default EMBEDDING ایک OpenAI-shaped model ہے، تو جیسے ہی OPENAI_BASE_URL کسی gateway کی طرف point کرے، embedding requests بھی وہاں جاتی ہیں۔ اگر gateway وہ embedding id serve نہ کرے، تو research runs پہلی chat call پر نہیں بلکہ source processing کے دوران fail ہوتی ہیں، جو لوگوں کو غلط slot debug کرنے کی طرف گمراہ کرتا ہے۔ EMBEDDING کو صراحتاً سیٹ کریں اور symptom ختم ہو جاتا ہے۔ Retriever failures کا الزام endpoint کو دینا۔ ایک missing یا exhausted TAVILY_API_KEY search phase کو توڑ دیتی ہے، اور نتیجے میں آنے والی empty-source errors سطحی طور پر LLM failures جیسی نظر آتی ہیں۔ Retriever ایک الگ key والی الگ service ہے؛ اسے الگ سے چیک کریں۔ Runs کے درمیان stale environment۔ .env file working directory سے پڑھی جاتی ہے۔ web app کو ایک directory سے اور Python API کو دوسری directory سے چلانا مطلب ہے دو مختلف configs، اور "یہ app میں کام کرتا ہے مگر میرے script میں نہیں" تقریباً ہمیشہ یہی مسئلہ ہے۔ Token-limit settings model capability سے الگ ہیں۔ gpt-researcher اپنی own فی-slot token limits رکھتا ہے (FAST_TOKEN_LIMIT، SMART_TOKEN_LIMIT، اور متعلقہ settings) conservative defaults کے ساتھ۔ SMART_LLM کو ایک long-context model پر point کرنا خود بخود ان limits کو نہیں بڑھاتا؛ اگر آپ لمبی generations چاہتے ہیں تو انہیں جان بوجھ کر tune کریں۔
gpt-researcher کو gateway کے ذریعے کون route کرتا ہے۔
- وہ teams جو recurring reports generate کرتی ہیں (market scans، literature reviews، competitive briefs) جہاں تین model slots کے پار فی-run cost visibility ایک واحد vendor relationship سے زیادہ اہم ہے۔
- وہ researchers جو writer models compare کرتے ہیں۔ FAST اور STRATEGIC کو fix رکھتے ہوئے SMART کو Claude، GPT، اور DeepSeek ids کے درمیان بدلنا تین .env edits ہیں، تین vendor accounts نہیں۔
- وہ builders جو gpt-researcher کو products میں embed کرتے ہیں، جہاں فی environment ایک gateway key deploy pipeline میں vendor secrets کے bundle کی جگہ لے لیتی ہے۔
- وہ users جو چاہتے ہیں Claude یا Gemini report لکھیں جبکہ gpt-researcher کا stock OpenAI-shaped configuration بغیر چھیڑے رہے۔
- وہ developers جن کے پاس کسی مخصوص vendor کی billing تک رسائی نہیں۔ Top-up پر مبنی رسائی بغیر کارڈ کی شرط کے فی-provider sign-up کا انحصار ختم کر دیتی ہے۔
Endpoint verify کریں اور پہلی report debug کریں۔
پہلے gateway کے models list کریں؛ ہر slot میں openai: کے بعد آنے والی string کو کسی served id سے exact میچ ہونا چاہیے، version suffixes سمیت۔ پہلی-run کی failures صاف طور پر sort ہوتی ہیں۔ ایک 401 کا مطلب ہے OPENAI_API_KEY اس environment میں موجود نہیں جسے process حقیقت میں دیکھتا ہے؛ .env files working directory سے لوڈ ہوتی ہیں، تو وہاں سے چلائیں جہاں file رہتی ہے یا variables کو globally export کریں۔ ایک model-not-found error اس slot کا نام لیتی ہے جس میں typo ہے۔ planning کے وقت کی بجائے source processing کے دوران فیل ہونا embeddings یا retriever کی طرف اشارہ کرتا ہے، chat slots کی طرف نہیں: LLM config چھونے سے پہلے EMBEDDING اور TAVILY_API_KEY چیک کریں۔ ایک مکمل research run تینوں slots میں درجنوں requests کا ایک burst ہے، تو مکمل ہونے کے بعد، APIsRouter console کا per-request view حقیقی tokens اور حقیقی spend میں FAST/SMART/STRATEGIC split دیکھنے کا تیز ترین طریقہ ہے، اور ایسی slot پکڑنے کا جو اپنے role سے زیادہ consume کر رہی ہو۔
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" | head -50عمومی سوالات
کیا gpt-researcher OPENAI_BASE_URL کے ذریعے Claude یا Gemini models استعمال کر سکتا ہے؟
جی ہاں۔ openai: prefix OpenAI-shaped client منتخب کرتا ہے، اور colon کے بعد آنے والی model string endpoint تک pass ہو جاتی ہے۔ gateway جو بھی id serve کرے وہ تینوں slots میں سے کسی میں بھی valid ہے، بشمول Claude، Gemini، اور DeepSeek ids۔
کیا FAST_LLM، SMART_LLM، اور STRATEGIC_LLM کا ایک ہی vendor ہونا ضروری ہے؟
نہیں۔ ہر slot ایک خودمختار provider:model string ہے۔ ایک multi-vendor endpoint کے پیچھے، ایک عام setup summaries کے لیے ایک تیز Claude id، report writing کے لیے ایک زیادہ طاقتور Claude یا GPT id، اور planning کے لیے ایک reasoning-tier id ہے، سب ایک ہی key پر۔
LLM endpoint بدلنے کے بعد کیا مجھے پھر بھی Tavily key چاہیے؟
جی ہاں، اگر آپ live web research چاہتے ہیں۔ Retriever (default طور پر Tavily، RETRIEVER کے ذریعے سیٹ) search results fetch کرتا ہے اور اس کی own key ہوتی ہے۔ یہ LLM endpoint سے الگ service ہے اور OPENAI_BASE_URL سے متاثر نہیں ہوتا۔
جب میں OPENAI_BASE_URL سیٹ کروں تو embeddings کا کیا ہوتا ہے؟
default embedding ایک OpenAI-shaped model ہے، تو embedding calls اسی client configuration کی پیروی کرتی ہیں اور آپ کے gateway تک پہنچتی ہیں۔ اگر gateway وہ embedding id serve نہ کرے، EMBEDDING کو صراحتاً کسی ایسے provider پر سیٹ کریں جو کرتا ہو، یا کسی local option پر؛ ورنہ runs source processing کے دوران fail ہوتی ہیں۔
کیا یہ configuration web app اور multi-agent mode کے لیے بھی کام کرتا ہے؟
جی ہاں۔ pip package، web application، اور multi-agent flows سب اسی environment configuration کو resolve کرتے ہیں، تو ایک .env file انہیں یکساں طور پر route کرتی ہے۔
gateway کے ذریعے ایک research run کی قیمت کتنی ہوتی ہے؟
یہ report type اور retriever کتنے sources واپس کرتا ہے اس پر منحصر ہے: FAST_LLM ہر source summarize کرتا ہے، SMART_LLM report لکھتا ہے، STRATEGIC_LLM plan کرتا ہے۔ زیادہ تر runs دسیوں سے سینکڑوں ہزار tokens تک پہنچتی ہیں۔ per-key usage view exact فی-slot split دکھاتا ہے، جو اندازہ لگانے سے بہتر ہے۔