后端与接口
用 Genkit Python 构建 AI 应用时如何组织…
在 Python 中用 Genkit 开发 AI 应用(生成、流式、工具、flow、多轮 agent)时,按此流程搭建、运行并借助 trace 调试。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用 Genkit Python 构建 A特定
解决思路
- 确认环境:Python 3.10+ 与 uv;若 `genkit --version` 缺失则执行 `npm install -g genkit-cli` 安装 Genkit CLI。
- 选择抽象:若任务是对话式、多轮,或被称为 agent/assistant/chatbot,用 `ai.define_agent` 构建(参考 references/agents.md),不要自己在 flow 里手写 `generate` + 工具循环;只有单次、无状态生成才用普通 flow。
- 初始化 Genkit:`from genkit import Genkit`、`from genkit_google_genai import GoogleAI`,用 `Genkit(plugins=[GoogleAI()], model='googleai/gemini-flash-latest')` 创建实例。
- 设置 `GEMINI_API_KEY`,并使用带前缀的模型 id(如 `googleai/gemini-flash-latest`)。
- 入口用 `ai.run_main(main())`(尤其在 `genkit start` 下),不要直接 `asyncio.run`。
- 按需导入:Google AI 用 `from genkit_google_genai import GoogleAI`;Agents 用 `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 用 `chat = agent.chat()`,`await chat.send('Hello')` 返回 AgentResponse,`chat.send_stream('Hello')` 返回 AgentTurn(含 `.stream` / `.response`)。
- 用 Dev Workflow 运行:`genkit start -- uv run src/main.py`(加 `--noui` 可去掉 Dev UI 但仍为常驻服务),它会包装你的程序并捕获所有 Genkit action 的 trace,且转发 stdio。
- 在自动化/CI 等非交互场景加全局 `--non-interactive` 标志:`genkit start --non-interactive -- uv run src/main.py`,避免首次运行提示阻塞。
- 非交互地跑单个 flow:`genkit flow:run myFlow '{"data": "input"}' -- uv run src/main.py`,它会执行一次、打印 Trace ID 后自行退出;注意 `flow:run` 只能跑 flow(`@ai.flow()`),不能直接跑 agent,需把一轮 agent 包进临时 flow 再运行。
- 不要用 `genkit start` 作为自动化中的阻塞步骤;它设计为持续运行直到 Ctrl+C,`--noui` 也不是一次性命令。
- 用 trace 验证而非盲跑:直接 `uv run` 不会捕获 dev trace;运行后可用 `genkit trace:list` 找 trace ID,`genkit trace:get <traceId>` 查看完整输入输出、工具调用、延迟与错误。
- 需要机器可读输出时给 `trace:get` 加 `--format json` 再管道给 jq 等解析器;默认输出是面向人的(含 banner/日志、可能截断),不要直接管道。
- 遇到报错先查 references/common-errors.md,再查其他参考文档(examples、setup、fastapi、dotprompt、evals、dev-workflow、agents)。
适用边界 · 注意事项
- 未安装 uv 或 Python 版本低于 3.10 时无法按此流程搭建。
- 需要非交互/CI 一次性执行时不要用 `genkit start`(会阻塞),应改用 `genkit flow:run` 或加 `--non-interactive`。
- 想直接用 `flow:run` 运行 agent 不可行,必须先包一层临时 flow。