关于 developing-genkit-python
用于在 Python 中使用 Genkit 构建 AI 功能的技能,涵盖生成、流式处理、工具、流程和多轮 Agent,并提供运行与追踪指导。
主要功能
- 01生成与流式响应
- 02定义工具和流程
- 03构建多轮 Agent
- 04通过 CLI 运行并查看追踪
- 05提供 FastAPI 与评估器集成
适用场景
- 01为 Python 应用添加生成能力
- 02构建带历史记录的多轮对话
- 03运行流程并检查调用追踪
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ skills --skill developing-genkit-python安装后在 Claude Code 中输入/developing-genkit-python确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/agents-artifacts.mdagents-background.mdagents-branching.mdagents-custom.mdagents-http.mdagents-human-in-the-loop.mdagents-sessions.mdagents-state.mdagents.mdcommon-errors.mddev-workflow.mddotprompt.mdevals.mdexamples.mdfastapi.mdsetup.md详细介绍
Genkit Python
使用一套 SDK,在 Python 中构建 AI 功能——生成、流式处理、工具、工作流和多轮 Agent。
前置条件
- Python 3.10+ 和
uv(安装) - Genkit CLI:如果缺少
genkit --version,请运行npm install -g genkit-cli
Hello World
from genkit import Genkit
from genkit_google_genai import GoogleAI
ai = Genkit(
plugins=[GoogleAI()],
model='googleai/gemini-flash-latest',
)
async def main():
response = await ai.generate(prompt='Tell me a joke about Python.')
print(response.text)
if __name__ == '__main__':
ai.run_main(main())
Agent(Beta)
支持历史记录、类型化状态、人工审批、分支和后台任务的多轮聊天。从这里开始:Agent。
chat = agent.chat()
res = await chat.send('Hello') # AgentResponse
turn = chat.send_stream('Hello') # AgentTurn — .stream / .response
更多内容:会话 · 人在回路中 · 分支 · 后台任务 · 状态 · 制品 · 自定义 · HTTP
导入
- Google AI:
from genkit_google_genai import GoogleAI - Agent:
from genkit.agent import InMemorySessionStore, ... - 中间件:
from genkit_middleware import Middleware, ToolApproval, ... - FastAPI:
from genkit_fastapi import serve_agent, serve_flow - 评估:
from genkit_evaluators import register_genkit_evaluators
工作流
- Agent 还是工作流? 如果任务是对话式、多轮的,或被描述为“Agent”“助手”或“聊天机器人”,请使用
ai.define_agent构建(参见 Agent),而不是在工作流中手动编写generate+ 工具循环。只有在单次、无状态生成时才使用普通工作流。 - 设置
GEMINI_API_KEY。使用带前缀的模型 ID(googleai/gemini-flash-latest)。 - 对于 Genkit 应用,请通过
ai.run_main(main())进入(尤其是在genkit start下运行时)。参见常见错误。 - 使用开发工作流运行(
genkit start+ Dev UI)。 - 通过跟踪记录进行验证,不要盲目运行。直接运行应用(
uv run)不会捕获开发跟踪记录。有关如何运行应用并捕获跟踪记录,请参阅 Genkit CLI。 - 遇到问题?先查看常见错误。
Genkit CLI(推荐)
genkit start 会以无侵入的方式包装任何使用 Genkit 库的 Python 程序,在不做任何更改的情况下运行程序,同时捕获每个 Genkit 操作的跟踪记录,让你能够证明工具确实被调用,并从终端检查模型的输入和输出,即使是无头检查也可以。它会转发标准输入和标准输出,因此依赖 stdin/stdout 的交互式 CLI 工具也能正常工作。直接运行应用(uv run)会跳过跟踪记录捕获,让你只能盲目调试。
主要用法(默认): 在常用运行命令前加上 genkit start --。这样会收集程序运行的任何 Genkit 代码的遥测数据,无论它是由开发 UI、你自己的 Web 服务器/Web UI 还是普通脚本触发的:
genkit start -- uv run src/main.py
genkit start --noui -- uv run src/main.py # same, without the Dev UI (still a persistent server)
genkit start 会一直运行,直到你按 Ctrl+C 将其停止。这对于常见场景来说是预期且正确的做法:例如 Web/移动应用调用的服务器,或由你自行退出的交互式 CLI。--noui 只会关闭 Dev UI;它并非单次运行命令,也不会自行退出。在自动化/非交互式场景中,不要将 genkit start 用作阻塞步骤;这种情况下请使用 flow:run(如下)。
非交互式用法(Agent/CI): 在 -- 前添加全局标志 --non-interactive,这样 CLI 会使用默认值,并且不会因提示而阻塞(例如首次运行时的分析数据收集提示):genkit start --non-interactive -- uv run src/main.py(flow:run 也适用)。
运行 flow(flow:run): 从 CLI 按名称调用指定的 flow。在 -- 后附上运行命令,以便仅为此次运行启动运行时(命令会按原样运行以注册你的 flows):
genkit flow:run myFlow '{"data": "input"}' -- uv run src/main.py
此命令会自行终止:它会运行一次 flow,打印一个 Trace ID,然后退出,因此适合进行快速的非交互式检查(与 genkit start 不同)。注意:flow:run 运行的是 flows(@ai.flow()),而不是 Agent;你无法直接对 Agent(ai.define_agent)运行 flow:run。要从 CLI 测试 Agent,请将一次交互封装在一个临时 flow 中并运行它(参见 Agents)。
使用跟踪记录进行调试: 这是查看提示词、模型输入/输出、工具调用、延迟和错误的最快方式。在任何 genkit start 运行后,都可以从终端检查跟踪记录:
genkit trace:list # find recent trace IDs
genkit trace:get <traceId> # full trace details (inputs, outputs, tool calls, errors)
genkit trace:get <traceId> --format json # machine-readable JSON, safe to pipe into jq or other parsers
如需机器可读的输出,请传入 --format json,以获取可通过管道传递给 jq 或其他解析器的纯净 JSON。默认输出面向人工阅读(含横幅/日志行,大型跟踪记录可能会被截断),因此不要直接将这种格式通过管道传递;请使用 --format json、grep 或 Dev UI 跟踪记录查看器。
完整的检查清单和 Dev UI 操作指南,请参见 Dev Workflow。