1717
1818在代码中直接定义智能体是最常见且最灵活的方式。此方法便于动态调整参数、集成外部模块并进行单元测试。您可以创建一个最简单的 Agent,无需额外设置。** Agent 缺省属性将来自环境变量或默认值。** 如下代码实现了一个最简化的 Agent 定义与运行:
1919
20- === "代码 "
20+ === "python "
2121
2222 ```python title="agent.py" linenums="1" hl_lines="5"
2323 import asyncio
3131 print(response)
3232 ```
3333
34+ === "golang"
35+
36+ ```golang title="agent.go" linenums="1" hl_lines="18"
37+ package main
38+
39+ import (
40+ "context"
41+ "fmt"
42+
43+ "github.com/google/uuid"
44+ _ "github.com/volcengine/veadk-go/agent"
45+ veagent "github.com/volcengine/veadk-go/agent/llmagent"
46+ "google.golang.org/adk/agent"
47+ "google.golang.org/adk/runner"
48+ "google.golang.org/adk/session"
49+ "google.golang.org/genai"
50+ )
51+
52+ func main() {
53+ ctx := context.Background()
54+ veAgent, err := veagent.New(&veagent.Config{})
55+ if err != nil {
56+ fmt.Printf("NewVeAgent failed: %v", err)
57+ return
58+ }
59+
60+ appName := "veAgent_app"
61+ userID := "user-1234"
62+ sessionId := fmt.Sprintf("%s-%s", session.KeyPrefixTemp, uuid.NewString())
63+ sessionService := session.InMemoryService()
64+ agentRunner, err := runner.New(runner.Config{
65+ AppName: appName,
66+ Agent: veAgent,
67+ SessionService: sessionService,
68+ })
69+ if err != nil {
70+ fmt.Printf("New runner error:%v", err)
71+ return
72+ }
73+
74+ _, err = sessionService.Create(ctx, &session.CreateRequest{
75+ AppName: appName,
76+ UserID: userID,
77+ SessionID: sessionId,
78+ })
79+ if err != nil {
80+ fmt.Printf("Create session error:%v", err)
81+ return
82+ }
83+
84+ for event, err := range agentRunner.Run(ctx, userID, sessionId, genai.NewContentFromText("你好", genai.RoleUser), agent.RunConfig{StreamingMode: agent.StreamingModeNone}) {
85+ if err != nil {
86+ fmt.Printf("got unexpected error: %v", err)
87+ }
88+ fmt.Printf("got event: %s\n", event.Content.Parts[0].Text)
89+ }
90+ }
91+ ```
92+
93+
3494=== "所需环境变量"
3595
3696 环境变量列表:
50110
51111您也可以通过以下方式设置更多 Agent 元数据信息:
52112
53- ``` python title="agent.py" linenums="1" hl_lines="4-6"
54- from veadk import Agent, Runner
113+ === "python"
114+
115+ ```python title="agent.py" linenums="1" hl_lines="4-6"
116+ from veadk import Agent, Runner
117+
118+ root_agent = Agent(
119+ name="life_assistant",
120+ description="生活助手",
121+ instruction="你是一个生活助手,你可以回答用户的问题。",
122+ )
123+ ```
124+
125+ === "golang"
126+
127+ ```golang title="agent.go" linenums="1" hl_lines="2-4"
128+ cfg := &veagent.Config{}
129+ cfg.Name = "life_assistant"
130+ cfg.Description = "生活助手"
131+ cfg.Instruction = "你是一个生活助手,你可以回答用户的问题。"
132+
133+ veAgent, err := veagent.New(cfg)
134+ if err != nil {
135+ fmt.Printf("NewVeAgent failed: %v", err)
136+ return
137+ }
138+ ```
55139
56- root_agent = Agent(
57- name = " life_assistant" ,
58- description = " 生活助手" ,
59- instruction = " 你是一个生活助手,你可以回答用户的问题。" ,
60- )
61- ```
62140
63141其中,` name ` 代表 Agent 的名称,` description ` 是对 Agent 功能的简单描述(在Agent Tree中唯一标识某个Agent),` instruction ` 是 Agent 的系统提示词,用于定义其行为和响应风格。
64142
65143#### 使用不同模型
66144
67145如果您想使用本地模型或其他提供商的模型,可以在初始化时指定模型相关配置:
68146
69- ``` python title="agent.py" linenums="1" hl_lines="4-7"
70- from veadk import Agent
147+ === "python"
71148
72- agent = Agent(
73- model_provider = " ..." ,
74- model_name = " ..." ,
75- model_api_key = " ..." ,
76- model_api_base = " ..."
77- )
78- ```
149+ ```python title="agent.py" linenums="1" hl_lines="4-7"
150+ from veadk import Agent
151+
152+ agent = Agent(
153+ model_provider="...",
154+ model_name="...",
155+ model_api_key="...",
156+ model_api_base="..."
157+ )
158+ ```
159+
160+ === "golang"
161+
162+ ```golang title="agent.go" linenums="1" hl_lines="2-4"
163+ cfg := &veagent.Config{
164+ ModelName: "...",
165+ ModelAPIBase: "...",
166+ ModelAPIKey: "...",
167+ }
168+
169+ veAgent, err := veagent.New(cfg)
170+ if err != nil {
171+ fmt.Printf("NewVeAgent failed: %v", err)
172+ return
173+ }
174+ ```
79175
80- 由于 VeADK 的 Agent 基于 [ LiteLLM] ( ) 实现,因此您可以使用 LiteLLM 支持的所有模型提供商。您可以查看 [ LiteLLM 支持的模型提供商列表] ( https://docs.litellm.ai/docs/providers ) 来设置 ` model_provider ` 参数。
176+ 由于 python VeADK 的 Agent 基于 [ LiteLLM] ( ) 实现,因此您可以使用 LiteLLM 支持的所有模型提供商。您可以查看 [ LiteLLM 支持的模型提供商列表] ( https://docs.litellm.ai/docs/providers ) 来设置 ` model_provider ` 参数。
177+
178+ golang 暂不支持 LiteLLM,因此 VeADK 的 Agent 基于 OpenAI 实现,因此您可以使用所有支持OpenAI协议的模型。
81179
82180#### 设置模型客户端
83181
@@ -98,20 +196,46 @@ agent = Agent(model=llm)
98196
99197此外,您还可以根据[ 火山引擎方舟大模型平台] ( https://www.volcengine.com/product/ark ) 的能力,指定一些[ 额外选项] ( https://www.volcengine.com/docs/82379/1494384?lang=zh ) ,例如您可以禁用豆包 1.6 系列模型的思考能力,以实现更加快速的响应:
100198
101- ``` python title="agent.py" linenums="1" hl_lines="7"
102- import asyncio
199+ === "python"
103200
104- from veadk import Agent, Runner
201+ ```python title="agent.py" linenums="1" hl_lines="7"
202+ import asyncio
203+
204+ from veadk import Agent, Runner
205+
206+ agent = Agent(
207+ model_name="doubao-seed-1.6-250615",
208+ model_extra_config={"extra_body": {"thinking": {"type": "disabled"}}},
209+ )
210+ runner = Runner(agent=agent)
211+
212+ response = asyncio.run(runner.run(messages="hi!"))
213+ print(response)
214+ ```
105215
106- agent = Agent(
107- model_name = " doubao-seed-1.6-250615" ,
108- model_extra_config = {" extra_body" : {" thinking" : {" type" : " disabled" }}},
109- )
110- runner = Runner(agent = agent)
216+ === "golang"
217+
218+ ```golang title="agent.go" linenums="1" hl_lines="6-14"
219+ import (
220+ _ "github.com/volcengine/veadk-go/agent"
221+ veagent "github.com/volcengine/veadk-go/agent/llmagent"
222+ )
223+
224+ veAgent, err := veagent.New(&veagent.Config{
225+ ModelExtraConfig: map[string]any{
226+ "extra_body": map[string]any{
227+ "thinking": map[string]string{
228+ "type": "disabled",
229+ },
230+ },
231+ },
232+ })
233+ if err != nil {
234+ fmt.Printf("NewVeAgent failed: %v", err)
235+ return
236+ }
237+ ```
111238
112- response = asyncio.run(runner.run(messages = " hi!" ))
113- print (response)
114- ```
115239
116240### 通过配置文件
117241
0 commit comments