Add Mulit-agent Implementation with Web Search Tool#38
Conversation
- Updated .env.example to include WEB_SEARCH_BASE_URL and WEB_SEARCH_API_KEY. - Introduced web_search.py to implement a tool for fetching Google Search grounded responses from the Gemini model.
…h query extraction - Introduced RETRYABLE_STATUS for managing retryable HTTP status codes. - Updated the _post method to _post_payload for clarity and added a docstring. - Enhanced error handling in the backoff decorator to include specific exceptions and retry logic based on RETRYABLE_STATUS.
…ValueError for missing environment variables.
- Updated the add_citations function to return a tuple of synthesized text and a mapping of citation IDs to source labels. - Enhanced the GroundedResponse class to include a citations field. - Improved error handling and type checks throughout the citation processing logic. - Introduced a new _collect_citations function to streamline citation ID collection from candidates.
There was a problem hiding this comment.
Pull Request Overview
This PR adds a multi-agent implementation that combines knowledge base search with web search capabilities through Gemini's grounding feature. The implementation uses a planner-worker architecture where a main agent coordinates between a knowledge base agent and a web search tool to answer complex queries that may require both historical and current information.
Key Changes:
- Implements
GeminiGroundingWithGoogleSearchtool for web search with automatic citation generation - Creates a multi-agent system with dedicated knowledge base and web search capabilities
- Adds test coverage for the web search integration
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
src/utils/tools/gemini_grounding.py |
Implements the Gemini grounding tool with Google Search integration, including citation parsing and error handling |
src/2_frameworks/2_multi_agent/efficient_multiple_kbs.py |
Creates a planner-worker multi-agent system that routes queries between knowledge base and web search tools |
tests/tool_tests/test_gemini_grounding.py |
Adds integration test for the web search grounding functionality |
.env.example |
Adds required environment variables for web search API configuration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| try: | ||
| response.raise_for_status() | ||
| except httpx.HTTPStatusError as exc: | ||
| raise exc from exc |
There was a problem hiding this comment.
Re-raising the exception with itself as the cause (raise exc from exc) is redundant. Either raise without the from clause or re-raise as a different exception type with the original as the cause.
| raise exc from exc | |
| raise exc |
jacobthebanana
left a comment
There was a problem hiding this comment.
Thanks for the code example Franklin!
PR Type
Feature
Short Description
Tests Added
...