mirror of
https://github.com/googleapis/genai-toolbox.git
synced 2026-01-30 09:48:27 -05:00
This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [toolbox-core](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python) ([changelog](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/blob/main/packages/toolbox-core/CHANGELOG.md)) | `==0.5.0` -> `==0.5.2` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>googleapis/mcp-toolbox-sdk-python (toolbox-core)</summary> ### [`v0.5.2`](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/releases/tag/toolbox-core-v0.5.2): toolbox-core: v0.5.2 [Compare Source](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/compare/toolbox-core-v0.5.1...toolbox-core-v0.5.2) ##### Miscellaneous Chores - **deps:** update python-nonmajor ([#​372](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/issues/372)) ([d915624](d9156246fd)) ### [`v0.5.1`](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/releases/tag/toolbox-core-v0.5.1): toolbox-core: v0.5.1 [Compare Source](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/compare/toolbox-core-v0.5.0...toolbox-core-v0.5.1) ##### Bug Fixes - **toolbox-core:** Use typing.Annotated for reliable parameter descriptions instead of docstrings ([#​371](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/issues/371)) ([eb76680](eb76680d24)) ##### Documentation - Update langgraph sample in toolbox-core ([#​366](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/issues/366)) ([fe35082](fe35082104)) ##### Miscellaneous Chores - Remove redundant test for test\_add\_auth\_token\_getter\_unused\_token ([#​347](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/issues/347)) ([dccaf1b](dccaf1bd70)) - Remove duplicate header check during initialization ([#​357](https://redirect.github.com/googleapis/mcp-toolbox-sdk-python/issues/357)) ([888170b](888170b3c3)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/genai-toolbox). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> --------- Co-authored-by: Harsh Jha <83023263+rapid-killer-9@users.noreply.github.com>
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
from google.adk.agents import Agent
|
|
from google.adk.runners import Runner
|
|
from google.adk.sessions import InMemorySessionService
|
|
from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService
|
|
from google.genai import types
|
|
from toolbox_core import ToolboxSyncClient
|
|
|
|
import asyncio
|
|
import os
|
|
|
|
# TODO(developer): replace this with your Google API key
|
|
|
|
api_key = os.environ.get("GOOGLE_API_KEY") or "your-api-key" # Set your API key here
|
|
os.environ["GOOGLE_API_KEY"] = api_key
|
|
|
|
async def main():
|
|
with ToolboxSyncClient("http://127.0.0.1:5000") as toolbox_client:
|
|
|
|
prompt = """
|
|
You're a helpful hotel assistant. You handle hotel searching, booking and
|
|
cancellations. When the user searches for a hotel, mention it's name, id,
|
|
location and price tier. Always mention hotel ids while performing any
|
|
searches. This is very important for any operations. For any bookings or
|
|
cancellations, please provide the appropriate confirmation. Be sure to
|
|
update checkin or checkout dates if mentioned by the user.
|
|
Don't ask for confirmations from the user.
|
|
"""
|
|
|
|
root_agent = Agent(
|
|
model='gemini-2.0-flash-001',
|
|
name='hotel_agent',
|
|
description='A helpful AI assistant.',
|
|
instruction=prompt,
|
|
tools=toolbox_client.load_toolset("my-toolset"),
|
|
)
|
|
|
|
session_service = InMemorySessionService()
|
|
artifacts_service = InMemoryArtifactService()
|
|
session = await session_service.create_session(
|
|
state={}, app_name='hotel_agent', user_id='123'
|
|
)
|
|
runner = Runner(
|
|
app_name='hotel_agent',
|
|
agent=root_agent,
|
|
artifact_service=artifacts_service,
|
|
session_service=session_service,
|
|
)
|
|
|
|
queries = [
|
|
"Find hotels in Basel with Basel in its name.",
|
|
"Can you book the Hilton Basel for me?",
|
|
"Oh wait, this is too expensive. Please cancel it and book the Hyatt Regency instead.",
|
|
"My check in dates would be from April 10, 2024 to April 19, 2024.",
|
|
]
|
|
|
|
for query in queries:
|
|
content = types.Content(role='user', parts=[types.Part(text=query)])
|
|
events = runner.run(session_id=session.id,
|
|
user_id='123', new_message=content)
|
|
|
|
responses = (
|
|
part.text
|
|
for event in events
|
|
for part in event.content.parts
|
|
if part.text is not None
|
|
)
|
|
|
|
for text in responses:
|
|
print(text)
|
|
|
|
asyncio.run(main())
|