flyteplugins-agents-google
Run Google ADK (Agent Development Kit) agents on Flyte. You keep writing ADK agents; Flyte is the runtime underneath.
pip install flyteplugins-agents-google
import flyte
from flyteplugins.agents.google import tool, run_agent
env = flyte.TaskEnvironment(
"google-agent",
secrets=[flyte.Secret(key="google_api_key", as_env_var="GOOGLE_API_KEY")],
)
@tool
@env.task(cache="auto", retries=3)
async def get_weather(city: str) -> str:
"""Get the current weather for a city."""
return f"The weather in {city} is sunny, 22°C."
@env.task(report=True, retries=3)
async def city_agent(question: str) -> str:
return await run_agent(question, tools=[get_weather], model="gemini-2.0-flash")
How it maps to Flyte
- The SDK owns the loop — we don't reimplement it. ADK's
Runnerdrives the agent loop (model + tools, yieldingEvents);run_agentbuilds anLlmAgent, runsRunner.run_asyncinside your@env.task, and returns the final answer. - Tools as durable child actions.
toolwraps an@env.taskas the Python function ADK calls; its body dispatches totask.aio(), so each tool call runs as a durable Flyte child action. ADK derives the tool declaration from the task signature. - Durable, replayable model turns. With
durable=True, the agent's model is wrapped (FlyteLlm) so each turn throughBaseLlm.generate_content_async— the seam below the loop — is recorded viaflyte.trace. On a crash/retry, completed turns replay from their recordedLlmResponseand tools are cache hits. (Same idea as swapping OpenAI'sModelProvider: trace the model-call seam, not the loop.) - Observability: the turns and tool calls render into the task report.
The API key is read from the environment (e.g. GOOGLE_API_KEY for Gemini, or your
Vertex AI config), so it can't leak into task inputs — wire it as a Flyte secret.
Memory
Pass memory_key (a user/thread id) for cross-run memory — the agent continues
the same conversation across separate runs:
await run_agent(message, model="gemini-2.0-flash", memory_key="user-alice")
ADK keeps the conversation as a list of Events on the session; we persist those to a
durable, keyed MemoryStore and restore them into a fresh session on the next run
with the same key.
Examples
See examples/:
google_durable_agent.py— a single durable agent: tools as Flyte tasks, traced model turns, agent timeline in the report.google_multi_agent.py— multi-agent orchestration: a planner agent decomposes a topic, researcher agents fan out in parallel, an editor agent synthesizes — each agent its own durable action.google_crash_resume.py— crash & resume: the task crashes on its first attempt; on retry the completed model turns replay from theirflyte.tracerecords and the tool calls are cache hits. Run on a backend.google_memory.py— cross-run memory: two separate runs share amemory_key; the agent learns a fact in run 1 and recalls it in run 2.google_handoffs.py— native agent transfer: a triage agent transfers to a billing or technical-support sub-agent, the whole agent tree durable on Flyte. The specialist can pause on a Flyte condition (flyte.new_condition) to have a human share details mid-conversation, then resume with them.
Conformance
This adapter passes the shared flyteplugins.agents.core.testing.assert_adapter_conforms
check — the same one every adapter runs — so it follows the common format
(tool + run_agent, tool tasks wired to the resolver), shared with the
OpenAI, Claude and Mistral adapters.
Metadata
Release files for flyteplugins-agents-google 2.12.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| flyteplugins_agents_google-2.12.0-py3-none-any.whl | Python 3 | none | any | Details for flyteplugins_agents_google-2.12.0-py3-none-any.whl |
Release files / flyteplugins_agents_google-2.12.0-py3-none-any.whl
| Download URL | flyteplugins_agents_google-2.12.0-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7674b3ab751fa8088a4ec693d5f8b8d7636075dfca90b1f41fb3bfd2bd6f4e99
|
|
BLAKE2b-256 checksum How to use checksums |
b3831635235c08033b37bd054d8e865e31375b2be0d6721a3c73cefb322062a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for flyteplugins-agents-google 2.12.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.