Initial commit: antigravity-claudekit

This commit is contained in:
nvtien
2026-02-16 14:02:42 +09:00
commit 2d31c0a137
93 changed files with 9518 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
---
name: ck-google-adk-python
description: >
Builds AI agents using Google Agent Development Kit (ADK) for Python.
Activate when user says 'build a Google ADK agent', 'create agent with ADK',
'Google Agent Development Kit', 'multi-agent with ADK', or 'ADK tool calling'.
Accepts agent goals, tool definitions, and orchestration requirements.
---
## Overview
Scaffolds and implements AI agents using Google's Agent Development Kit (ADK) for Python, covering single agents, multi-agent pipelines, tool definitions, and deployment to Vertex AI Agent Engine.
## When to Use
- Building autonomous agents that use tools to complete tasks
- Creating multi-agent systems with specialized sub-agents
- Implementing agents that need Google Cloud service integrations
- Deploying production agents on Vertex AI Agent Engine
- Building agents with structured tool calling and state management
## Don't Use When
- Project uses a different agent framework (LangChain, CrewAI, AutoGen)
- Simple single-turn LLM calls without tool use (use direct Gemini API)
- Frontend-only application with no agent orchestration needs
- Budget constraints prohibit Vertex AI usage (ADK has local dev mode though)
## Steps / Instructions
### 1. Install ADK
```bash
pip install google-adk
# For Vertex AI deployment:
pip install google-adk[vertexai]
```
### 2. Define a Simple Agent
```python
# agent.py
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
import os
def get_weather(city: str) -> dict:
"""Get current weather for a city."""
# Replace with real weather API call
return {"city": city, "temperature": 22, "condition": "sunny"}
weather_tool = FunctionTool(func=get_weather)
root_agent = Agent(
name="weather_agent",
model="gemini-1.5-pro",
description="Answers weather questions for any city.",
instruction="""You help users get weather information.
Use the get_weather tool to fetch current conditions.
Always confirm the city before reporting.""",
tools=[weather_tool],
)
```
### 3. Run Locally
```python
# main.py
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.genai.types import Content, Part
from agent import root_agent
async def main():
session_service = InMemorySessionService()
runner = Runner(
agent=root_agent,
app_name="weather_app",
session_service=session_service,
)
session = await session_service.create_session(
app_name="weather_app",
user_id="user_001",
)
message = Content(parts=[Part(text="What's the weather in Tokyo?")])
async for event in runner.run_async(
user_id="user_001",
session_id=session.id,
new_message=message,
):
if event.is_final_response():
print(event.content.parts[0].text)
import asyncio
asyncio.run(main())
```
### 4. Multi-Agent Pattern
```python
from google.adk.agents import Agent
from google.adk.agents.sequential import SequentialAgent
research_agent = Agent(
name="researcher",
model="gemini-1.5-pro",
instruction="Research the given topic and return key facts.",
tools=[search_tool],
)
writer_agent = Agent(
name="writer",
model="gemini-1.5-pro",
instruction="Write a concise summary based on the research provided.",
)
pipeline = SequentialAgent(
name="research_writer",
sub_agents=[research_agent, writer_agent],
)
```
### 5. Tool Definition Best Practices
```python
from typing import Annotated
from pydantic import Field
def search_database(
query: Annotated[str, Field(description="Search query string")],
limit: Annotated[int, Field(description="Max results to return", ge=1, le=50)] = 10,
) -> list[dict]:
"""Search the product database and return matching items."""
# implementation
pass
```
- Use type annotations — ADK generates JSON schema from them
- Write clear docstrings — used as tool description for the model
- Return dicts/lists that serialize cleanly to JSON
- Handle errors gracefully and return error info in the dict
### 6. Session State Management
```python
from google.adk.sessions import DatabaseSessionService
# Persist sessions across restarts
session_service = DatabaseSessionService(
db_url=os.environ["DATABASE_URL"]
)
```
### 7. Deploy to Vertex AI Agent Engine
```python
from google.adk.deployment import deploy_agent
deploy_agent(
agent=root_agent,
project=os.environ["GOOGLE_CLOUD_PROJECT"],
location="us-central1",
staging_bucket=os.environ["GCS_STAGING_BUCKET"],
)
```
## Notes
- Set `GOOGLE_API_KEY` or `GOOGLE_APPLICATION_CREDENTIALS` for authentication
- Use `adk web` CLI for interactive local testing with a built-in UI
- ADK auto-traces tool calls — view in Google Cloud Trace
- Always validate tool inputs; the model may pass unexpected types