A tool-aware agent powered by Gemini for structured query handling
Project description
Gemini Tool Agent
A lightweight, tool-aware Gemini agent to handle structured prompts and tool usage in conversations.
Overview
Gemini Tool Agent is a Python library that provides a simple interface for creating tool-aware agents powered by Google's Gemini AI models. It enables developers to define custom tools with structured input schemas and seamlessly integrate them into conversational flows.
Features
- Tool-aware conversation handling
- Structured prompt processing
- Automatic context management
- JSON response parsing
- Conversation history tracking
Installation
pip install gemini-tool-agent
Requirements
- Python 3.8 or higher
- Google Generative AI Python SDK (google-genai >= 0.3.2)
Usage
from gemini_tool_agent.agent import Agent
# Initialize the agent with your API key
agent = Agent(key="your-api-key")
# Define your tools
agent.tools = [
{
"name": "save_note",
"description": "Save a note to the database",
"input_schema": {
"title": "string",
"content": "string"
}
}
]
# Process a query that might use tools
response = agent.process_query("Save a note about AI agents")
print(response)
Response Format
The agent returns a structured response in JSON format:
{
"needs_tool": true,
"tool_name": "save_note",
"needs_direct_response": true,
"direct_response_first": false,
"reasoning": "The query explicitly asks to save a note, which requires the save_note tool",
"direct_response": "AI agents are software entities that can perform tasks autonomously..."
}
Advanced Usage
You can access the conversation history:
# Get the conversation history
history = agent.history
1### Tool Parameter Extraction
After identifying that a tool needs to be used, you can extract parameters from the conversation:
# First process the query to determine if a tool is needed
response = agent.process_query("Save a note titled 'AI Agents' with content about machine learning")
# If a tool is needed, extract the parameters
if response.get("needs_tool", False):
tool_name = response.get("tool_name")
tool_params = agent.process_use_tool(tool_name)
# Now you can use the extracted parameters to execute the tool
print(tool_params)
# Output: {'tool_name': 'save_note', 'input': {'title': 'AI Agents', 'content': '...'}}
Optimized Response Generation
The agent automatically handles large prompts for memory efficiency:
# For direct usage (normally used internally by the agent)
response_text = agent.generate_response(large_prompt)
# The method automatically optimizes prompts over 10,000 characters by:
# - Trimming conversation history to the most recent 15 lines when needed
# - Truncating large direct responses while preserving start and end content
License
MIT
Author
Paul Fruitful (fruitful2007@outlook.com)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gemini_tool_agent-0.1.2.tar.gz.
File metadata
- Download URL: gemini_tool_agent-0.1.2.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35e265c93642e74e684f0fe33cfaddd36fec6bc6a0917145e458a33affa3b9ce
|
|
| MD5 |
174b740b7e6cd13d766c38479979f46a
|
|
| BLAKE2b-256 |
740acc21fde6ce10fdf4e59a80ffe07c6f6e30401fbd8679d43940ea43edd937
|
File details
Details for the file gemini_tool_agent-0.1.2-py3-none-any.whl.
File metadata
- Download URL: gemini_tool_agent-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcf07cad4c4bdeefc851f6933f98ccf47471d39e81a6cc7d777a62fdbf2c2b84
|
|
| MD5 |
1e540e65d79f9a55441dee9790a16cfb
|
|
| BLAKE2b-256 |
eeb6db3948c09062e9a104ce0115430326f124560536a4281cbefcabdd88ae10
|