Releases: assafelovic/gpt-researcher
v3.4.1
Huge release packed with incredible improvements and welcome to all the new contributors! See details below:
What's Changed
- Update server_utils.py - fixed file name via hash by @MaxAkaAltmer in #1611
- add bocha search tool by @weijintaocode in #1618
- Add openrouter embeddings support by @Joly0 in #1620
- Claude/analyze project structure md q kw by @aiiscoding in #1621
- feat: Add Forge LLM provider support by @Yiiii0 in #1626
- Added AG2 based example by @VasiliyRad in #1627
- Attempt to load config path from env var if no path provided at runtime by @GeorgelPreput in #1630
- fix: handle list context in deep research to prevent AttributeError by @technot80 in #1637
New Contributors
- @MaxAkaAltmer made their first contribution in #1611
- @weijintaocode made their first contribution in #1618
- @Joly0 made their first contribution in #1620
- @aiiscoding made their first contribution in #1621
- @Yiiii0 made their first contribution in #1626
- @VasiliyRad made their first contribution in #1627
- @GeorgelPreput made their first contribution in #1630
- @technot80 made their first contribution in #1637
Full Changelog: v3.4.0...v3.4.1
v3.4.0
Such an exciting release with powerful new features.
🖼️ Inline Image Generation
GPT Researcher can now automatically generate and embed AI-created illustrations directly in your research reports using Google's Gemini models.
Key features:
- Pre-generation flow - Images are generated during research, not after, for seamless UX
- Context-aware - LLM analyzes your research to identify the best visualization opportunities
- Dark mode styling - Generated images match the app's aesthetic by default
- Fully configurable - Control max images, style (dark/light/auto), and model
Quick setup:
IMAGE_GENERATION_ENABLED=true
GOOGLE_API_KEY=your_key
IMAGE_GENERATION_MODEL=models/gemini-2.5-flash-image
IMAGE_GENERATION_STYLE=dark📖 Image Generation Documentation
🔍 LangSmith Integration
Added native support for LangSmith tracing and observability. Monitor your research workflows, debug LLM calls, and analyze performance with full visibility into the research pipeline.
Quick setup:
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=your_langsmith_key
LANGCHAIN_PROJECT=gpt-researcherWhat you can track:
- LLM calls and token usage
- Research planning and sub-query generation
- Report generation steps
- Cost analysis per research task
📖 LangSmith Logs Documentation
🤖 Claude Code Skills Integration
Added comprehensive .claude/skills/ directory that enables Claude Code to understand, use, and extend GPT Researcher effectively.
What's included:
SKILL.md(1,500+ lines) - Complete architecture, workflows, method signatures, data flow diagrams, and the 8-step feature pattern for adding new featuresREFERENCE.md- Quick lookup for all config vars, API endpoints, and WebSocket events- Real case studies including the Image Generation implementation as a reference
Benefits:
- Faster contributor onboarding with AI assistance
- Consistent code patterns across contributions
- End-to-end feature development following established patterns
📖 AI-Assisted Development Documentation
📚 Documentation Updates
- ✨ New: Image Generation guide
- ✨ New: AI-Assisted Development guide for Claude Code users
- 📝 Updated README with new features section
Installation
pip install --upgrade gpt-researcherOr with Docker:
docker pull gptresearcher/gpt-researcher:latestFull Changelog: v0.14.5...v0.14.6
What's Changed
- Add aggregated summary flag to quick_search by @TheSpaceGod in #1604
- feat: enable LangSmith tracing for enhanced observability by @tiandee in #1599
- added image generation with nano banana by @assafelovic in #1608
Full Changelog: v3.3.9...v3.4.0
Performance improvements
What's Changed
- Fix CORS defaults: remove wildcard origins when allow_credentials=true by @PriscaAmajuoyi in #1595
- docs: add docstrings to memory and context compression modules by @kga245 in #1589
- refactor: Implement ECR and GitHub Actions Terraform setup with necessary configurations and outputs by @huytran-gg in #1590
- feat: Implement WebSocket chat command handling & make Tavily optional by @tiandee in #1593
- Persist /api/reports history to local JSON store (enables Next.js history sync) by @PriscaAmajuoyi in #1594
- Remove hardcoded authentication token by @E-G-C in #1596
New Contributors
- @huytran-gg made their first contribution in #1590
- @tiandee made their first contribution in #1593
- @E-G-C made their first contribution in #1596
Full Changelog: v.3.3.8...v3.3.9
v.3.3.8 - Performance improvements
What's Changed
- Add configurable rate limiting for all scraper backends by @0xsalt in #1550
- Fix: Firecrawl scraper fails with 'scrape_url' AttributeError - Issue #1551 by @0xsalt in #1552
- Add output format control flags to CLI for selective report generation by @0xsalt in #1553
- Fix Railway deployment: Add missing dependencies from LangChain migration by @kga245 in #1555
- feat: improve error handling with better messages and logging by @Bolajiadesina in #1562
- fix: extract domain filter UI into DomainFilter component by @PriscaAmajuoyi in #1564
- fix: Add request_timeout to OpenRouter provider to prevent indefinite hangs by @sondrealf in #1565
- fix: avoid double .docx extension in multi_agents write_md_to_word by @Bolajiadesina in #1567
- chore: align multi_agents write_to_file with backend UTF-8 handling by @PriscaAmajuoyi in #1568
- fix: resolve markdown→pdf css path from backend module by @Bolajiadesina in #1573
New Contributors
- @0xsalt made their first contribution in #1550
- @Bolajiadesina made their first contribution in #1562
- @PriscaAmajuoyi made their first contribution in #1564
- @sondrealf made their first contribution in #1565
Full Changelog: v.3.3.7...v.3.3.8
Langchain V1 Support
Release Notes - LangChain v1 Migration
Breaking Changes
Python 3.10+ now required - LangChain v1 drops Python 3.9 support. Please upgrade to Python 3.10 or higher (Python 3.12 recommended).
Updates
LangChain v1 Compatibility
Upgraded to LangChain v1.0+ with updated import paths across the codebase:
langchain.prompts→langchain_core.promptslangchain.text_splitter→langchain_text_splitterslangchain.retrievers→langchain_classic.retrievers
Package Versions
langchain>=1.0.0langchain-core>=1.0.0langchain-community>=0.4.0langchain-classic>=1.0.0(new)
Simplified Dependencies
Reduced requirements.txt from 134 to 63 lines by removing transitive dependencies - now only lists packages directly used by the project.
📝 Migration Guide
# Install with Python 3.10+
python -m pip install -r requirements.txt
pip install gpt-researcher --upgradeSee the LangChain v1 migration guide for more details.
Fixes
- Updated all documentation examples with LangChain v1 imports
- Cleaned up backend requirements for production deployments
What's Changed in Release
- Fix: propagate MCP config to follow-up researchers; pass researcher i… by @sriramsowmithri9807 in #1529
- feat: Add proper multi-platform Docker build support by @TheSpaceGod in #1530
- fix: Update repository URL in CLI documentation by @Hnatekmar in #1533
- Fixed PubMed retreiver to correctly pull full texts from PMC. by @pgrosjean in #1545
- Langchain 1.0 Migration by @assafelovic in #1547
New Contributors
- @Hnatekmar made their first contribution in #1533
- @pgrosjean made their first contribution in #1545
Full Changelog: v.3.3.6...v.3.3.7
Bug fixes
Some urgent fixes to run GPTR smoothly with provider agnostic. Please open issues if you find anything missed!
What's Changed
- 1514 added Tavily installation requirements txt by @thepawarrahul in #1516
- Fix for Frontend Docker build by @CezaryKlus in #1522
- Fix MCP retriever ignoring structured_content; prefer structured data with fallback to content #1480 (solved) by @sriramsowmithri9807 in #1518
- feat: Add PWA capabilities to the frontend by @TheSpaceGod in #1511
New Contributors
- @thepawarrahul made their first contribution in #1516
- @CezaryKlus made their first contribution in #1522
- @TheSpaceGod made their first contribution in #1511
Full Changelog: v.3.3.5...v.3.3.6
Vibe Research
v.3.3.4
What's Changed
- feat(llm): stop sending temperature to non‑supporting models by @expphoto in #1485
- fix(frontend): use existing gptr-logo.png for background to stop 404 by @expphoto in #1484
- Update duckduckgo.py by @adityasingla71 in #1491
- Updated the validation logic for max_tokensto allow a maximum of 32,000 (previously capped at 16,000). by @hc-tec in #1488
- feat: Add support for custom OpenAI base URL for OpenAI-compatible APIs by @borderlessboy in #1499
- Summary: Fix missing WebSocketDisconnect import by @hasbegun in #1497
- Bug fix: Remove the encoding parameter from kwargs to avoid passing an unsupported argument in the LLM call. by @whaler404 in #1494
- Fix critical path traversal vulnerability in file operations by @saharmor in #1438
- feat: add netmind provider by @anhuaxiang in #1459
New Contributors
- @expphoto made their first contribution in #1485
- @adityasingla71 made their first contribution in #1491
- @hc-tec made their first contribution in #1488
- @borderlessboy made their first contribution in #1499
- @hasbegun made their first contribution in #1497
- @whaler404 made their first contribution in #1494
- @saharmor made their first contribution in #1438
- @anhuaxiang made their first contribution in #1459
Full Changelog: v.3.3.3...v.3.3.4
v.3.3.3
What's Changed
- GPT-5 Support! Less costs, better performance and larger input context windows
- feat: Add Hallucination Evaluation for GPTResearcher +
judgeslibrary by @julianeagu in #1439 - fix: make exa retriever respect query domains by @mys721tx in #1464
- bug_fix: vectorstore_filter not passed by @viboognesh in #1461
- Update config.md by @sdisaacson in #1465
- feat: Add enhanced Serper API support with country, language, date filters and configurable site exclusion by @hurxxxx in #1472
- Fix scraper FireCrawl markdown error by @hung96ad in #1473
New Contributors
- @julianeagu made their first contribution in #1439
- @mys721tx made their first contribution in #1464
- @viboognesh made their first contribution in #1461
- @hung96ad made their first contribution in #1473
Full Changelog: v.3.3.1...v.3.3.3
Bug fixes and new evals
What's Changed
- feat: Add Hallucination Evaluation for GPTResearcher +
judgeslibrary by @julianeagu in #1439 - fix: make exa retriever respect query domains by @mys721tx in #1464
- bug_fix: vectorstore_filter not passed by @viboognesh in #1461
- Update config.md by @sdisaacson in #1465
New Contributors
- @julianeagu made their first contribution in #1439
- @mys721tx made their first contribution in #1464
- @viboognesh made their first contribution in #1461
Full Changelog: v.3.3.1...v.3.3.2