Kotlin ADK 实战:用静态类型语言构建 AI Agent 的完整工作流

前端大鹏 初级 2026/7/29 449 浏览 14 点赞 约 1 分钟

静态类型语言在写AI Agent时简直是救星,尤其是当你得处理复杂的工具Schema和模型返回结果时,编译器能帮你挡掉绝大多数低级错误。这次试了下Google出的Kotlin Agent Development Kit (ADK),配合Gemini 1.5 Flash-lite,跑通一个简单的MCP工具调用链路比想象中快。

如果你想尝试,得先准备好 Java 25(建议用 SDKMAN! 管理版本)和 Gemini API Key。

快速部署流程

一、环境初始化
直接克隆示例库并跑初始化脚本,这步会帮你生成 .env 文件。

Kotlin ADK实战
git clone https://github.com/xbill9/adk-hello-world-kotlin
cd adk-hello-world-kotlin
source init.sh

二、配置凭证
把你的 API Key 填进 .env,然后加载到当前 Shell 环境里。

GOOGLE_API_KEY=your-api-key
Kotlin ADK实战
source set_env.sh

三、启动 Agent
这个项目分成了 agentserver 两个模块。你需要先启动 Ktor 写的 MCP 服务器(提供 greet 工具),然后再运行 Agent 客户端。

核心 Prompt 与逻辑分析

Kotlin ADK实战

这个 Agent 的核心定义在 GreetingAgent.kt 里。最关键的是 LlmAgent 的配置,它把模型、指令和工具集(toolsets)绑定在一起。

这里用到的提示词非常精简,但定义了明确的触发逻辑:

return LlmAgent(
 name = "kotlin_greeting_agent",
 description = "A Kotlin ADK agent that greets people through an MCP tool.",
 model =
 Gemini(
 name = modelName,
 apiKey = apiKey,
 ),
 instruction =
 Instruction(
 """
 You are a concise greeting assistant.
 When the user asks you to greet someone, always call the greet tool with that
 person's name. Return the greeting produced by the tool.
 """.trimIndent(),
 ),
 toolsets = listOf(mcpToolset),
)

这个 Prompt 为什么有效?因为它采用了典型的「角色+触发条件+动作指令」结构。

  • 角色定义concise greeting assistant(简洁的问候助手),限制了模型的废话程度。
  • 硬性约束always call the greet tool,强制模型在遇到特定需求时必须调用工具,而不是自己编一个问候语。
  • 输出闭环Return the greeting produced by the tool,确保模型只做传递,不篡改工具返回的结果。
Kotlin ADK 实战:用静态类型语言构建 AI Agent 的完整工作流

实际运行效果很稳,只要输入“帮我问候一下 XXX”,Agent 就会立刻触发 MCP 接口,拿到结果后再反馈给我。这种 code-first 的构建方式比在 Web 界面里调提示词要可控得多。

Gemini提示词AIPromptkotlin
AI工具与大模型实操经验整理在Claude实战技巧汇总,有不少直接可参考的案例。

全部回复 (3)

老大鹏 专家 2026/7/29

密封类控死状态机简直是救星,再也不用在处理模型回传时面对一堆 null 了!

0 回复
副业中测试 中级 2026/7/29

直接用Python快到飞起,为了搞个类型安全非得把工作流搞这么复杂,真没必要

0 回复
副业中创业者 初级 2026/7/29

赶紧把 Koin 怼上去,不然等工具类堆到几十个,光找类名就能找半小时。

0 回复

发表回复

支持 Markdown 格式