
Google ADK最简Hello,World Skill:Python函数注册为Agent可调用的 Tool本文以Google ADKPython为例演示如何将一个Python函数注册为Agent可调用的Tool实现最简“Hello, World”技能。核心在于通过tools[hello_world]将函数注入Agent由模型根据用户意图自主调用。该模式可扩展至真实业务能力如查询Jira、读取飞书文档强调输入输出规范、职责单一与可观测性是构建可复用、可测试研发智能Agent的基础路径。以Google ADKPython为例一个最简单的 “Hello, World Skill” 本质上就是把一个 Python 函数注册为 Agent 可调用的Tool。在 ADK 的语境中通常没有必须叫Skill的固定对象一个 Skill 常以以下形式接入Skill 可被 Agent 调用的 Function Tool / MCP Tool / Sub-Agent / Workflow对于 Hello World最小形态就是Function Tool。1. 最简单的 Hello World Skill目录结构示例hello_agent/ └── agent.pyagent.pyfrom google.adk.agents import Agent def hello_world(name: str World) - dict: 向指定用户返回问候语。 Args: name: 要问候的名称。 Returns: 包含执行结果的字典。 return { success: True, message: fHello, {name}! } root_agent Agent( namehello_agent, modelgemini-2.5-flash, description一个可以调用 Hello World 技能的示例 Agent。, instruction 你是一个友好的问候助手。 当用户要求打招呼、问候某个人或要求调用 Hello World 能力时 1. 调用 hello_world 工具 2. 将用户提到的名字作为 name 参数 3. 清晰返回工具的执行结果。 如果用户没有提供名字使用 World。 , tools[hello_world], # 将函数作为 Tool / Skill 注入 Agent )这里最关键的一行是tools[hello_world]它把hello_world()注册给了root_agent。之后模型会根据用户意图自主决定是否调用它。2. 如何运行先安装 ADKpip install google-adk再配置模型所需的 API Key。以 Gemini API 为例export GOOGLE_API_KEY你的_API_KEY进入hello_agent的上级目录运行 ADK 开发界面adk web然后在浏览器中选择hello_agent输入请向 AI 打个招呼3. 预期 Agent 的执行过程用户输入 请向 AI 打个招呼 Agent 判断 需要调用问候能力 调用 Skill / Tool hello_world(nameAI) 工具返回 { success: true, message: Hello, AI! } Agent 最终回复 Hello, AI!4. 为什么不让 Agent 直接回答 Hello World确实下面这类任务“你好” “请说 Hello World”模型不调用 Tool 也能直接完成。但这个例子的目的不是为了证明“问候一定要用 Tool”而是演示Skill 的接入模式业务函数 ↓ 注册为 Agent Tool ↓ 由 Agent 按意图和指令决定是否调用 ↓ Tool 返回结构化结果 ↓ Agent 整理结果回复用户把hello_world换成真实企业能力模式完全相同hello_world(name) ↓ 替换为 query_jira(issue_id) read_feishu_doc(url) get_git_commits(repo, branch) analyze_android_trace(trace_file) create_feishu_report(content)5. 更像“业务 Skill”的版本例如希望这个 Skill 不只是打招呼而是返回当前环境、执行时间等结构化信息from datetime import datetime from google.adk.agents import Agent def hello_world_skill(name: str, language: str zh) - dict: 示例业务 Skill生成结构化问候结果。 Args: name: 被问候人的名称。 language: 问候语言仅支持 zh 或 en。 Returns: Skill 的结构化执行结果。 greetings { zh: f你好{name}欢迎使用研发智能助手。, en: fHello, {name}! Welcome to RD Assistant. } if language not in greetings: return { success: False, error: f不支持的语言{language}仅支持 zh / en。 } return { success: True, skill_name: hello_world_skill, message: greetings[language], executed_at: datetime.now().isoformat(timespecseconds) } root_agent Agent( namegallery_assistant, modelgemini-2.5-flash, instruction 你是研发智能助手。 当用户要求问候、验证系统连通性、验证 Skill 是否可调用时 调用 hello_world_skill。 如果用户使用中文language 传 zh 用户使用英文language 传 en。 , tools[hello_world_skill], )用户输入用中文向 Zhangsan 问好并验证 Skill 是否正常。Skill 的返回可能是{ success: true, skill_name: hello_world_skill, message: 你好Zhangsan欢迎使用研发智能助手。, executed_at: 2026-10-27T23:34:33 }6. 接入真实 Skill 时建议遵循的规范Hello World 很简单但未来接 Jira、飞书、Git、性能平台时建议统一遵守1. 输入明确参数有类型、含义和边界 2. 输出结构化success、data、error、message 3. 职责单一一个 Skill 聚焦一类能力 4. 无副作用优先查询类与写入类 Skill 分开 5. 写操作加确认创建 Jira、发邮件、改文档必须确认 6. 可观测记录调用人、参数摘要、耗时、结果 7. 可测试函数本身可脱离 Agent 直接单测。例如查询 Jira 的 Skill 建议长这样def query_jira_issue(issue_key: str) - dict: try: # 调 Jira API 的逻辑 issue { key: issue_key, summary: 首页卡顿, status: 处理中 } return { success: True, data: issue } except Exception as e: return { success: False, error: str(e) }然后直接tools[hello_world_skill, query_jira_issue]这就是从一个 Hello World Skill 演进到真实研发 Agent 的基本方式。