Skip to content

Commit d2858c1

Browse files
author
zhenguo.li
committed
Merge branch 'main' of https://github.com/Xiaoaier-Z-L/veadk-python into main
2 parents 6d367b1 + ab9c133 commit d2858c1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+4111
-398
lines changed

.gitleaks.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,4 @@ description = "Empty environment variables with KEY pattern"
7373
regex = '''os\.environ\[".*?KEY"\]\s*=\s*".+"'''
7474

7575
[allowlist]
76-
paths = ["requirements.txt", "tests"]
76+
paths = ["requirements.txt", "tests", "veadk/realtime/client.py", "veadk/realtime/live.py"]

docs/docs/agent/agent.md

Lines changed: 154 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
在代码中直接定义智能体是最常见且最灵活的方式。此方法便于动态调整参数、集成外部模块并进行单元测试。您可以创建一个最简单的 Agent,无需额外设置。**Agent 缺省属性将来自环境变量或默认值。**如下代码实现了一个最简化的 Agent 定义与运行:
1919

20-
=== "代码"
20+
=== "Python"
2121

2222
```python title="agent.py" linenums="1" hl_lines="5"
2323
import asyncio
@@ -31,6 +31,66 @@
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
环境变量列表:
@@ -50,34 +110,72 @@
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

docs/docs/agent/agents.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,19 @@ graph LR
5353
H --> I["最终回答: 根据北京天气给出穿衣建议"]
5454
```
5555

56-
=== "代码"
56+
=== "Python"
5757

5858
```python
5959
--8<-- "examples/agent/agents/llm_agent.py"
6060
```
6161

62+
=== "Golang"
63+
64+
```python
65+
--8<-- "examples/agent/agents/llm_agent.go"
66+
```
67+
68+
6269
=== "环境变量"
6370

6471
环境变量列表:

docs/docs/agent/prompt.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Prompt 管理
2+
3+
在实际生产过程中,Prompt 需要进行版本管理与动态下发,VeADK 提供了 Prompt 管理模块,用户可以通过 Prompt 管理功能来进行 Prompt 的模板化与热更新,在运行时动态切换 Prompt 版本。
4+
5+
## CozeLoop 提示词管理
6+
7+
在使用 CozeLoop 进行提示词管理前,您需要安装 Python 版本的 `cozeloop` SDK:
8+
9+
```bash
10+
pip install cozeloop
11+
```
12+
13+
您可以通过 CozeLoop 云端提示词管理功能来对接您的 Agent 系统提示词。例如:
14+
15+
```python title="agent.py" linenums="1" hl_lines="4 6-11 13"
16+
import asyncio
17+
18+
from veadk import Agent, Runner
19+
from veadk.prompts.prompt_manager import CozeloopPromptManager
20+
21+
prompt_manager = CozeloopPromptManager(
22+
cozeloop_workspace_id="", # CozeLoop workspace ID
23+
cozeloop_token="", # CozeLoop token
24+
prompt_key="", # CozeLoop 中创建的 Prompt Key
25+
label="production", # CozeLoop 中创建的 Prompt 标签
26+
)
27+
28+
agent = Agent(name="test_prompt_mgr", prompt_manager=prompt_manager)
29+
30+
runner = Runner(agent=agent)
31+
32+
response = asyncio.run(runner.run(messages="你的任务是什么?"))
33+
print(response)
34+
```
35+
36+
!!! note "提示"
37+
CozeLoop 会在本地进行 Prompt 缓存,**更新时间为 1 分钟**。当获取 Prompt 失败时,会返回 VeADK 默认的 Agent 系统提示词。
38+
39+
您可以在日志中看到,每次处理用户请求之前,都会执行 `CozeloopPromptManager` 中的 `get_prompt` 方法,来获取最新的 Prompt 模板内容。效果如下:
40+
41+
![img](../assets/images/agents/cozeloop_prompt_mgr.png)
42+
43+
更加详细的说明,请参考 [CozeLoop 提示词管理](https://loop.coze.cn/open/docs/cozeloop/what-is-prompt)
44+
45+
## 实现您自己的 Prompt Manager
46+
47+
若您想实现更高阶的 Prompt 模板或变量组合,您可以继承 `PromptManager` 类,实现自定义的 Prompt 管理逻辑。
48+
49+
在实现自定义 Prompt Manager 时,您需要实现 `get_prompt` 方法,该方法会在每次处理用户请求之前被调用,用于获取最新的 Prompt 模板内容。
232 KB
Loading

docs/docs/index.md

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ hide:
1919
font-size: 1.2rem;
2020
color: #666;
2121
}
22+
23+
.buttons-row {
24+
display: flex;
25+
gap: 16px;
26+
justify-content: center;
27+
align-items: center;
28+
flex-wrap: wrap;
29+
}
2230
</style>
2331

2432
<div class="get-started-text">Volcengine Agent Development Kit</div>
@@ -31,21 +39,35 @@ hide:
3139

3240
!!! tip "快速开始"
3341
通过以下方式安装 VeADK:
34-
=== "稳定版"
42+
=== "Python"
3543

3644
```bash
45+
# 稳定版
3746
pip install veadk-python
47+
48+
# 主分支预览版
49+
pip install git+https://github.com/volcengine/veadk-python.git@main
3850
```
3951

40-
=== "抢先版"
52+
=== "Golang"
4153

4254
```bash
43-
pip install git+https://github.com/volcengine/veadk-python.git@main
55+
go get github.com/volcengine/veadk-go
4456
```
4557

58+
=== "Java"
59+
60+
```xml title="pom.xml"
61+
<dependency>
62+
<groupId>com.volcengine.veadk</groupId>
63+
<artifactId>veadk-java</artifactId>
64+
<version>0.0.1</version>
65+
</dependency>
66+
```
67+
4668
---
4769

48-
或者您可以使用 VeADK 提供的镜像仓库
70+
或者您可以使用 VeADK 提供的 Python 版镜像仓库
4971
=== "稳定版"
5072

5173
```
@@ -64,10 +86,14 @@ hide:
6486
veadk-cn-beijing.cr.volces.com/veadk/veadk-python:0.2.20
6587
```
6688

67-
<div class="grid" markdown>
89+
<div class="buttons-row" markdown>
90+
[veadk-python :fontawesome-brands-github:](https://github.com/volcengine/veadk-python){ .openai-button }
6891

69-
[快速开始 :fontawesome-solid-paper-plane:](quickstart.md){ .openai-button }
92+
[veadk-go :fontawesome-brands-github:](https://github.com/volcengine/veadk-go){ .openai-button }
7093

94+
[veadk-java :fontawesome-brands-github:](https://github.com/volcengine/veadk-java){ .openai-button }
95+
96+
[快速开始 :fontawesome-solid-paper-plane:](quickstart.md){ .openai-button }
7197
</div>
7298

7399
---

0 commit comments

Comments
 (0)