feat: Add persist_memory flag to AgentTool#2849
Conversation
There was a problem hiding this comment.
Summary of Changes
Hello @ThibaultScalbert, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request enhances the AgentTool by introducing a persist_memory flag. This feature allows the conversation history of sub-agents to be maintained across multiple interactions within a single session, providing a more continuous and context-aware experience for complex agent workflows.
Highlights
- New persist_memory flag: Introduced a
persist_memoryboolean flag in theAgentTool's constructor andAgentToolConfigto control whether conversation history is maintained for sub-agents. - Conversation History Persistence: When
persist_memoryis enabled, theAgentToolnow stores and reuses theRunnerandSessionobjects for a given session ID, allowing the sub-agent's conversation history to persist across multiplerun_asynccalls within the same session. - Conditional Runner Initialization: The
run_asyncmethod has been updated to check thepersist_memoryflag and a new internal_runnersdictionary. If persistence is enabled and a runner/session pair already exists for the current session, it reuses them; otherwise, it creates new ones. - Unit Tests for Persistence: Comprehensive unit tests (
test_persist_memoryandtest_no_persist_memory) have been added totest_agent_tool.pyto validate the correct behavior of thepersist_memoryflag, ensuring conversation history is either maintained or reset as expected.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
|
Response from ADK Triaging Agent Hello @ThibaultScalbert, thank you for creating this PR! To help us review this PR, could you please:
This information will help reviewers to review your PR more efficiently. Thanks! |
There was a problem hiding this comment.
Code Review
This pull request introduces a persist_memory flag to AgentTool, allowing conversation history to be maintained across multiple tool calls within a session. The implementation correctly caches and reuses Runner instances based on the session ID. The changes are accompanied by new unit tests that verify both the memory persistence and non-persistence scenarios.
My review focuses on a potential memory leak, code style improvements, and test code refactoring. Specifically:
- There's a potential memory leak in
AgentToolas cached runners are never cleaned up. - A redundant import was identified.
- I've suggested adding a type hint for better code clarity.
- The new tests have duplicated setup code that could be refactored into a
pytestfixture for better maintainability.
Overall, the feature is well-implemented, but addressing the memory leak is important for production use.
|
You could use sub-agent which will persist by default. Closing this. |
This PR adds a
persist_memoryflag to theAgentToolclass, which allows the conversation history between a main agent and a sub-agent to be persisted across multiple calls to theAgentToolwithin the same session.Fixes #2850
Testing Plan
I have added a new test case
test_lru_cacheto verify that the LRU cache evicts runners when the cache is full.I have also updated the existing tests
test_persist_memoryandtest_no_persist_memoryto use a fixture to reduce code duplication.