-
Notifications
You must be signed in to change notification settings - Fork 1.8k
feat: Add persist_memory flag to AgentTool #2849
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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_memory
boolean flag in theAgentTool
's constructor andAgentToolConfig
to control whether conversation history is maintained for sub-agents. - Conversation History Persistence: When
persist_memory
is enabled, theAgentTool
now stores and reuses theRunner
andSession
objects for a given session ID, allowing the sub-agent's conversation history to persist across multiplerun_async
calls within the same session. - Conditional Runner Initialization: The
run_async
method has been updated to check thepersist_memory
flag and a new internal_runners
dictionary. 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_memory
andtest_no_persist_memory
) have been added totest_agent_tool.py
to validate the correct behavior of thepersist_memory
flag, 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
AgentTool
as 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
pytest
fixture for better maintainability.
Overall, the feature is well-implemented, but addressing the memory leak is important for production use.
This PR adds a
persist_memory
flag to theAgentTool
class, which allows the conversation history between a main agent and a sub-agent to be persisted across multiple calls to theAgentTool
within the same session.Fixes #2850
Testing Plan
I have added a new test case
test_lru_cache
to verify that the LRU cache evicts runners when the cache is full.I have also updated the existing tests
test_persist_memory
andtest_no_persist_memory
to use a fixture to reduce code duplication.