Sample Inputs
【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python
Hello WorldADK workflowstesting concurrent nodes
而带解释的写法(来自 [readme-template.md](https://link.gitcode.com/i/301da51ced07421cd770d113a7158af4) 的模板): ```markdown - `Prompt example 2` *Explanation or expected behavior*其中*Explanation or expected behavior*前有两个空格缩进,且与提示词列表项之间隔了一个空行。这种格式在 Markdown 渲染后会形成"提示词 + 附注"的独立列表项,对屏幕阅读器和 LLM 解析都更友好。
另外需要注意:并非所有样本都需要输入。例如 sequence/README.md 明确写着 "This sample does not require any input to run."——如实说明即可,不要硬凑提示词。
Graph:画结构拓扑,而不是请求/响应时序
Graph 小节是模板中最容易被误解的部分。模板的规则是:
A Mermaid diagram of the structure, not of the request/response flow.
即画"结构"而非"请求/响应流程"。模板明确警告:user -> agent -> API -> tool -> user这样的时序图是噪音,它没有表达出拓扑图已经表达的任何信息。具体绘图规则分两种形态:
Workflow根 agent:画节点与边的图(nodes and edges)。- 编排工具或子 agent 的 agent(
LlmAgent、ManagedAgent):画该 agent 与其工具/子 agent 的拓扑,而不是内部工作流节点。
图中保持少量节点和边即可。仓库中的工作流样本都遵循了这一规则,例如 dynamic_nodes/README.md:
它用虚线箭头(-.->)标注ctx.run_node的动态调用关系,用实线箭头表达静态边,用<br/>在节点内补充类型说明(PYTHON FUNCTION),让读者一眼看懂"orchestrate 是驱动节点,通过上下文动态调度两个 agent"。
再如 fan_out_fan_in/README.md:
三路并行分支汇入join_node(节点标注 "Waits for all 3"),再进入聚合节点。整个图不超过 6 个节点,信息一目了然。
How To:展示样本用到的关键技术点
How To 小节列出样本使用的关键技术(例如ctx.run_node),并附上展示每个技术点的少量关键代码行。目标是让读者不用通读整个agent.py就能抓住核心手法。
以 dynamic_nodes/agent.py 为例,其 How To 拆解为两个要点:
1. 启用可恢复性:Python 节点若想使用ctx.run_node,必须用@node(rerun_on_resume=True)声明。这告诉引擎:如果任何动态调度的节点被中断(例如等待人工介入 human-in-the-loop),编排节点需要暂停并可能重跑。
from google.adk.workflow import node @node(rerun_on_resume=True) async def orchestrate(ctx: Context, node_input: str) -> str: # ...2. 从 Context 运行节点:把ctx: Context注入 Python 节点定义,await ctx.run_node(node_to_run)的返回值就是那次执行的最终输出;循环内还可以用yield Event(state={...})在进入下一轮迭代前更新状态:
@node(rerun_on_resume=True) async def orchestrate(ctx: Context, node_input: str) -> str: yield Event(state={"topic": node_input}) while True: headline = await ctx.run_node(generate_headline) feedback = Feedback.model_validate( await ctx.run_node(evaluate_headline, node_input=headline) ) if feedback.grade == "tech-related": yield headline break再看 fan_out_fan_in/agent.py 对应的 How To:
- 定义
JoinNode:join_node = JoinNode(name="join_for_results") - 在
edges中用元组先扇出、再经join_node扇入、最后交给聚合节点:
( "START", (make_uppercase, count_characters, reverse_string), join_node, aggregate, )JoinNode之后的节点会收到一个dict作为输入,键是上游节点名,值是各自输出:
async def aggregate(node_input: dict[str, Any]): uppercase_result = node_input['make_uppercase'] # ...How To 的写作原则是"少而准":每个要点配几行能独立说明问题的代码,而不是粘贴整个文件。更完整的图论语义(如max_concurrency、rerun_on_resume覆盖规则)应交由 Related Guides 中的指南文档承担。
Related Guides:指向 docs/guides/ 的链接与四级路径转换
Related Guides 小节把样本与 docs/guides/README.md 下解释相关类的指南一一对应,每个链接附带一行摘要。
模板给出了路径计算的规则:样本位于contributing/samples/{category}/{sample_name}/,指南在docs/guides/下,二者在仓库树中的相对关系是向上四级,因此相对链接写法为:
- [Workflow](https://link.gitcode.com/i/0178e92c01dc459f56f8864ec349c721) - Explains building complex multi-step graphs.模板中的占位形式为:
- Guide Title - Brief description of what the guide covers.需要特别强调:在输出面向仓库整体的文章时,这类从样本目录出发的四级相对路径应转换为以仓库根目录为起点的路径,即[Workflow](https://link.gitcode.com/i/c91656541202f31fdb11fb0158d0dd95),避免链接因解析基准不同而 404。
实际样本可以链接的指南非常丰富,从 docs/guides/README.md 的索引看,与工作流样本直接相关的有:
- Workflow —— 图驱动的多步 agent 编排,含
edges、max_concurrency、rerun_on_resume等配置项表格; - Workflow Graphs —— 节点、边与图结构,以及运行前校验的九条规则;
- Function Nodes —— 将普通 Python 函数与生成器包装为工作流节点;
- JoinNode —— 同步并行执行路径;
- Dynamic Nodes —— 运行时动态调度节点;
- RetryConfig —— 为节点配置重试策略。
Template:可直接复制的空白骨架
模板(readme-template.md)在文档末尾提供了完整可复制的 Markdown 骨架,是新增样本 README 的起点:
# ADK Sample Name ## Overview Brief description. ## Sample Inputs - `Prompt example 1` - `Prompt example 2` *Explanation or expected behavior* ## Graph For a Workflow root agent:  For an agent orchestrating tools or sub-agents:  ## How To Explain the details. ## Related Guides - Guide Title - Brief description of what the guide covers.【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考