ADK Go 入門 03 - 建立第一個 ADK Agent(Go)

用 ADK Go SDK 建立第一個可運行的 Agent,只需要幾十行程式碼。本篇從最基本的結構出發,帶你跑起一個能對話的 Agent。


安裝依賴

1
go get google.golang.org/adk

最小可運行範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main

import (
"context"
"os"

"google.golang.org/adk/agent"
"google.golang.org/adk/agent/llmagent"
"google.golang.org/adk/cmd/launcher"
"google.golang.org/adk/cmd/launcher/full"
"google.golang.org/adk/model/gemini"
"google.golang.org/genai"
)

func main() {
ctx := context.Background()

// 初始化 Gemini 模型
llm, err := gemini.NewModel(ctx, "gemini-2.0-flash", &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
})
if err != nil {
panic(err)
}

// 建立 Agent
myAgent, err := llmagent.New(llmagent.Config{
Name: "my_agent",
Model: llm,
Description: "一個能回答問題的助理",
Instruction: "You are a helpful assistant. Always respond in Traditional Chinese.",
})
if err != nil {
panic(err)
}

// 啟動 Web UI
config := &launcher.Config{
AgentLoader: agent.NewSingleLoader(myAgent),
}
full.NewLauncher().Execute(ctx, config, os.Args[1:])
}

執行後開啟瀏覽器即可與 Agent 對話。

Config 欄位說明

欄位 必填 說明
Name Agent 的唯一識別名稱,用於 transfer 路由
Model LLM 實例
Description 建議 父 Agent 用來判斷何時移交的描述
Instruction 建議 Agent 的角色與行為規則
GlobalInstruction 選填 套用到所有回應的全域規則(例:語言強制)
Tools 選填 可呼叫的工具清單
Toolsets 選填 工具集合(例:MCP 工具組)
SubAgents 選填 可移交的子 Agent 清單

Instruction 撰寫原則

Instruction 決定 Agent 的行為,好的 Instruction 應該:

  1. 明確角色:「你是一個專責處理訂單的助理」
  2. 說明能力邊界:「只處理訂單相關問題,其他問題請告知無法處理」
  3. 規定回應格式:「回應時永遠使用繁體中文」
  4. 列出決策規則:「當使用者提供訂單編號時,先查詢訂單再回應」

詳細的 Instruction 設計策略與常見錯誤,見 🔧 技巧:ADK Go 入門 07 - Agent Instruction 設計技巧。

⚠️ 注意Name 欄位只能使用英文字母、數字與底線,不能含空格或中文。

Web UI Launcher

full.NewLauncher() 會啟動一個本地 Web 伺服器,提供對話介面,適合開發期間快速測試 Agent 行為。不需要自行建 HTTP 路由或 WebSocket。