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 set करें, openai: prefix बरकरार रखें, और FAST_LLM, SMART_LLM, और STRATEGIC_LLM हर एक अलग catalog model हो सकते हैं एक key के पीछे।
Quick answer: पांच-line .env block।
gpt-researcher का documented custom-endpoint path environment variables है। OPENAI_BASE_URL को https://api.apisrouter.com/v1 set करें, OPENAI_API_KEY को अपनी gateway key set करें, और openai: provider prefix के साथ तीनों model slots assign करें। Prefix gpt-researcher को बताता है कौन सा client इस्तेमाल करना है; colon के बाद की string endpoint को pass through होती है, तो gateway जो भी id serve करता है वह valid है, Claude और Gemini ids शामिल। यह वह configuration है जो docs.gptr.dev पर custom OpenAI-compatible endpoints के लिए documented है, और यह pip package, web app, और multi-agent flows के लिए identically काम करता है, क्योंकि ये सब same 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 के through web searches fan out करता है, 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 तय करना। Out of the box ये OpenAI models पर default होते हैं (लिखते समय क्रमशः gpt-4o-mini, gpt-4.1, और o4-mini), जो यही वजह है कि single OPENAI_BASE_URL override इतना effective है: तीनों slots OpenAI-shaped client इस्तेमाल करते हैं, तो एक base URL पूरी pipeline को move कर देता है। चूंकि हर slot अपनी provider:model string लेता है, slots को एक vendor share करने की ज़रूरत नहीं। एक run एक fast Claude model से summarize कर सकता है, एक stronger Claude या GPT model से लिख सकता है, और एक reasoning-tier model से plan कर सकता है, सब same endpoint और key के through। एक single-vendor key पर उस mix के लिए तीन accounts चाहिए होते; एक gateway के पीछे यह .env में तीन lines है।
पूरा setup: .env plus Python API।
अपनी working directory में एक .env file बनाएं (या shell में variables export करें) और gpt-researcher को हमेशा की तरह चलाएं; pip package और web app दोनों same environment पढ़ते हैं। Python API को बिल्कुल भी endpoint-specific code नहीं चाहिए, जो सारी बात है: routing configuration है, और research code वैसा ही रहता है चाहे endpoint OpenAI का हो या एक gateway का। दो पड़ोसी settings matter करती हैं। Web retrieval एक retriever से चलता है, default में Tavily, अपनी key (TAVILY_API_KEY) के साथ; वह credential LLM endpoint से independent है और live web research के लिए अब भी चाहिए। और embeddings default में openai:text-embedding-3-small हैं, जिसका मतलब है embedding calls same OpenAI-shaped client configuration follow करती हैं; अगर OPENAI_BASE_URL के पीछे का endpoint वह embedding model serve नहीं करता, तो EMBEDDING को ऐसे provider पर configure करें जो करता है (docs OpenAI-compatible embedding endpoints के लिए custom: prefix इस्तेमाल करते हैं, और Ollama जैसे local options भी supported हैं)।
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 .envPer slot models चुनना।
Upstream defaults सही shape encode करते हैं, volume के लिए small model, writing के लिए strong model, planning के लिए reasoning model, तो वह shape रखें और slots को एक model में flatten करने की बजाय upgrade करें। एक endpoint के पीछे, दो writers के बीच A/B per run एक-line .env change है, और per-key usage log बताता है कि हर report configuration की असल में क्या लागत आई।
- FAST_LLM सबसे ज़्यादा fire होता है: हर scraped source summarize होता है। एक fast id (claude-haiku-4-5-20251001, deepseek-v4-flash) एक many-source report को summarization cost से dominate होने से रोकती है, और यहां quality loss bounded है क्योंकि summaries writer को feed करते हैं, reader को नहीं।
- SMART_LLM वह report लिखता है जो user असल में पढ़ता है। लंबा output, sustained structure, citation discipline: यहीं claude-sonnet-4-6 या gpt-5.5 अपना spend कमाते हैं, और यहीं quality घटाना तुरंत दिखता है।
- STRATEGIC_LLM run शुरू होने से पहले इसे shape देता है। बुरे research questions एक बुरी report produce करते हैं चाहे writer कितना भी अच्छा हो; यहां एक reasoning-strong model कम calls पर high leverage है।
- gemini-3.1-pro-preview जैसी long-context ids detailed_report runs के लिए SMART slot में test करने लायक हैं, जहां writer summaries के एक बड़े accumulated context के across काम करता है।
जितना उपयोग उतना भुगतान · आधिकारिक मूल्य से कम
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 के लिए specific failure modes।
Provider prefix drop करना। Slot format provider:model है, और prefix client चुनता है। openai: के बिना SMART_LLM=claude-sonnet-4-6 set करना आपके base URL से एक Claude id route नहीं करता; यह gpt-researcher को string को एक अलग provider के तौर पर interpret करने की कोशिश करवाता है। हर custom-endpoint model को openai: prefix रखना चाहिए, क्योंकि यहां "openai" protocol का नाम लेता है, vendor का नहीं। Embeddings चुपचाप override follow करना। 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 explicitly set करें और symptom गायब हो जाता है। Retriever failures के लिए endpoint को blame करना। एक missing या exhausted TAVILY_API_KEY search phase तोड़ती है, और परिणामी empty-source errors ऊपर से LLM failures जैसी दिखती हैं। Retriever एक अलग key वाली अलग service है; इसे अलग से check करें। Runs के बीच stale environment। .env file working directory से पढ़ी जाती है। एक directory से web app चलाना और दूसरी से Python API चलाना दो अलग configs मतलब रखता है, और "app में काम करता है पर मेरी script में नहीं" लगभग हमेशा यही है। Token-limit settings model capability से अलग हैं। gpt-researcher अपनी per-slot token limits (FAST_TOKEN_LIMIT, SMART_TOKEN_LIMIT, और related settings) conservative defaults के साथ रखता है। SMART_LLM को एक long-context model पर point करना खुद-ब-खुद उन limits को नहीं बढ़ाता; लंबे generations चाहिए तो इन्हें जानबूझकर tune करें।
कौन gpt-researcher को एक gateway के through route करता है।
- Teams जो recurring reports (market scans, literature reviews, competitive briefs) generate करती हैं जहां तीन model slots के across per-run cost visibility एक single vendor relationship से ज़्यादा matter करती है।
- Researchers जो writer models compare करते हैं। FAST और STRATEGIC को fixed रखते हुए SMART को Claude, GPT, और DeepSeek ids के बीच swap करना तीन .env edits हैं, तीन vendor accounts नहीं।
- Builders जो gpt-researcher को products में embed करते हैं, जहां per environment एक gateway key deploy pipeline में vendor secrets के bundle को replace कर देती है।
- Users जो Claude या Gemini से report लिखवाना चाहते हैं जबकि gpt-researcher की stock OpenAI-shaped configuration untouched रखते हैं।
- Developers जिनके पास किसी given vendor की billing तक access नहीं है। बिना card requirement वाला top-up based access per-provider sign-up dependency हटा देता है।
Endpoint verify करें और पहली report को debug करें।
पहले gateway के models list करें; हर slot में openai: के बाद की string exactly एक served id से match होनी चाहिए, version suffixes शामिल। First-run failures साफ़-साफ़ sort होती हैं। एक 401 का मतलब है OPENAI_API_KEY उस environment में absent है जो process असल में देखता है; .env files working directory से load होती हैं, तो file जहां रहती है वहां से चलाएं या variables globally export करें। एक model-not-found error उस slot का नाम लेता है जिसमें typo है। Planning time की बजाय source processing के दौरान एक failure embeddings या retriever की तरफ इशारा करती है, chat slots की तरफ नहीं: LLM config छूने से पहले EMBEDDING और TAVILY_API_KEY check करें। एक पूरी research run तीनों slots के across दर्जनों requests का burst है, तो एक बार complete होने पर, 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 के through Claude या Gemini models इस्तेमाल कर सकता है?
हां। openai: prefix OpenAI-shaped client चुनता है, और colon के बाद की model string endpoint को pass through होती है। Gateway जो भी id serve करता है वह तीनों में से किसी भी slot में valid है, Claude, Gemini, और DeepSeek ids शामिल।
क्या FAST_LLM, SMART_LLM, और STRATEGIC_LLM एक ही vendor के होने चाहिए?
नहीं। हर slot एक independent provider:model string है। एक multi-vendor endpoint के पीछे, एक common setup summaries के लिए एक fast Claude id, report writing के लिए एक stronger Claude या GPT id, और planning के लिए एक reasoning-tier id है, सब एक key पर।
LLM endpoint बदलने के बाद क्या मुझे अब भी Tavily key चाहिए?
हां, अगर आप live web research चाहते हैं। Retriever (default में Tavily, RETRIEVER से set) search results fetch करता है और इसकी अपनी key है। यह LLM endpoint से अलग service है और OPENAI_BASE_URL से unaffected है।
OPENAI_BASE_URL set करने पर embeddings का क्या होता है?
Default embedding एक OpenAI-shaped model है, तो embedding calls same client configuration follow करती हैं और आपके gateway पर पहुंचती हैं। अगर gateway वह embedding id serve नहीं करता, तो EMBEDDING को explicitly ऐसे provider पर set करें जो करता है, या एक local option पर; वरना runs source processing के दौरान fail होती हैं।
क्या यह configuration web app और multi-agent mode के लिए भी काम करती है?
हां। pip package, web application, और multi-agent flows सब same environment configuration resolve करते हैं, तो एक .env file इन्हें identically route करती है।
Gateway के through एक research run की क्या लागत आती है?
यह report type और retriever कितने sources return करता है इस पर depend करता है: FAST_LLM हर source summarize करता है, SMART_LLM report लिखता है, STRATEGIC_LLM plan करता है। ज़्यादातर runs दसियों से सैकड़ों हज़ार tokens में पहुंचती हैं। Per-key usage view exact per-slot split दिखाता है, जो estimate करने से बेहतर है।