Skip to content

Commit 41a545a

Browse files
authored
feat: inspection assistant agent (#56)
2 parents 53022f1 + 7dbbe29 commit 41a545a

27 files changed

+1461
-12
lines changed

.markdownlint-cli2.jsonc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"01-tutorials/workshop/README.md",
1212
"01-tutorials/README.md",
1313
"02-use-cases/beginner/README.md",
14+
"02-use-cases/customer_support/README.md",
1415
"**/.venv/**"
1516
],
1617
"config": {

02-use-cases/ai_coding/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ ai_coding/
7272
1. 登录 [火山引擎控制台](https://console.volcengine.com)
7373
2. 进入"访问控制" → "用户" -> 新建用户 或 搜索已有用户名 -> 点击用户名进入"用户详情" -> 进入"密钥" -> 新建密钥 或 复制已有的 AK/SK
7474
- 如下图所示
75-
![Volcengine AK/SK Management](../img/volcengine_aksk.jpg)
75+
![Volcengine AK/SK Management](../../assets/images/volcengine_aksk.jpg)
7676
3. 为用户配置 AgentKit运行所依赖服务的访问权限:
7777
- 在"用户详情"页面 -> 进入"权限" -> 点击"添加权限",将以下策略授权给用户
7878
- `AgentKitFullAccess`(AgentKit 全量权限)
@@ -81,7 +81,7 @@ ai_coding/
8181
- 登陆[火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
8282
- 进入"API Key管理" -> 创建 或 复制已有的 API Key,后续`MODEL_AGENT_API_KEY`环境变量需要配置为该值
8383
- 如下图所示
84-
![Ark API Key Management](../img/ark_api_key_management.jpg)
84+
![Ark API Key Management](../../assets/images/ark_api_key_management.jpg)
8585
5. 开通模型预置推理接入点
8686
- 登陆[火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
8787
- 进入"开通管理" -> "语言模型" -> 找到相应模型 -> 点击"开通服务"
@@ -90,7 +90,7 @@ ai_coding/
9090
- `deepseek-v3-1-terminus`
9191
- `doubao-seed-code-preview-251028`
9292
- 如下图所示
93-
![Ark Model Service Management](../img/ark_model_service_management.jpg)
93+
![Ark Model Service Management](../../assets/images/ark_model_service_management.jpg)
9494

9595
#### AgentKit 工具 ID
9696

@@ -100,7 +100,7 @@ ai_coding/
100100
- 工具名称: `ai-coding-agent`
101101
- 描述: AI 编程助手工具
102102
4. 复制生成的工具 ID 用于配置(后续`AGENTKIT_TOOL_ID`环境变量需要配置为该值), 如下图所示
103-
![AgentKit Sandbox Tool](../img/agentkit_sandbox_tool.jpg)
103+
![AgentKit Sandbox Tool](../../assets/images/agentkit_sandbox_tool.jpg)
104104

105105
### 安装依赖
106106

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
veadk-python==0.2.27
22
agentkit-sdk-python==0.1.15
33
tos>=2.8.7
4-
google-adk==1.18.0
4+
google-adk==1.18.0
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
veadk-python[extensions]==0.2.29
12
veadk-python==0.2.29
23
agentkit-sdk-python==0.1.15
34
google-adk==1.18.0
45
urllib3<2.0.0
5-
volcengine-python-sdk>=4.0.31
6+
volcengine-python-sdk>=4.0.33

02-use-cases/customer_support/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ customer_support/
7272
1. 登录 [火山引擎控制台](https://console.volcengine.com)
7373
2. 进入"访问控制" → "用户" -> 新建用户 或 搜索已有用户名 -> 点击用户名进入"用户详情" -> 进入"密钥" -> 新建密钥 或 复制已有的 AK/SK
7474
- 如下图所示
75-
![Volcengine AK/SK Management](../img/volcengine_aksk.jpg)
75+
![Volcengine AK/SK Management](../../assets/images/volcengine_aksk.jpg)
7676
3. 为用户配置 AgentKit运行所依赖服务的访问权限:
7777
- 在"用户详情"页面 -> 进入"权限" -> 点击"添加权限",将以下策略授权给用户
7878
- `AgentKitFullAccess`(AgentKit 全量权限)
@@ -81,15 +81,15 @@ customer_support/
8181
- 登陆[火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
8282
- 进入"API Key管理" -> 创建 或 复制已有的 API Key,后续`MODEL_AGENT_API_KEY`环境变量需要配置为该值
8383
- 如下图所示
84-
![Ark API Key Management](../img/ark_api_key_management.jpg)
84+
![Ark API Key Management](../../assets/images/ark_api_key_management.jpg)
8585
5. 开通模型预置推理接入点
8686
- 登陆[火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
8787
- 进入"开通管理" -> "语言模型" -> 找到相应模型 -> 点击"开通服务"
8888
- 确认开通,等待服务生效(通常1-2分钟)
8989
- 开通本案例中使用到的以下模型(您也可以根据实际需求开通其他模型的预置推理接入点,并在`agent.py`代码中指定使用的模型)
9090
- `deepseek-v3-1-terminus`
9191
- 如下图所示
92-
![Ark Model Service Management](../img/ark_model_service_management.jpg)
92+
![Ark Model Service Management](../../assets/images/ark_model_service_management.jpg)
9393

9494
**知识库(首次运行自动配置):**:
9595

@@ -215,7 +215,7 @@ agentkit config \
215215
agentkit launch
216216
```
217217

218-
1. 调用智能体
218+
2. 调用智能体
219219

220220
```bash
221221
agentkit invoke '{"prompt": "我想买一款客厅用的智能电视,主要用来打游戏,预算 3000 元以内"}'
@@ -296,4 +296,4 @@ Customer Support 效果展示。
296296

297297
## 代码许可
298298

299-
本工程遵循 Apache 2.0 License
299+
本工程遵循 Apache 2.0 License

02-use-cases/customer_support/__init__.py

Whitespace-only changes.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
veadk-python==0.2.27
22
google-adk==1.18.0
33
agentkit-sdk-python==0.1.15
4-
mem0ai==0.1.118
4+
mem0ai==0.1.118
Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# 智能门店巡检系统
2+
3+
基于AgentKit的智能门店巡检助手,专门用于门店质量检测:招牌LED发光状态检测、洗手池整洁检测、货架陈列检测、工服穿着检测。系统能够自动识别异常情况,实现门店运营的标准化管理。
4+
5+
## 概述
6+
7+
本项目构建了一个AI驱动的门店质量检测解决方案,通过计算机视觉和人工智能技术,实现对门店各项设施状态的自动化巡检。系统能够智能识别招牌LED发光状态、洗手池整洁度、货架陈列规范等关键指标,并在发现异常时及时上报,帮助门店管理者快速响应和处理问题。
8+
9+
## 核心功能
10+
11+
### 🔍 智能图像处理与分析
12+
13+
- **精准目标检测**:自动识别门店招牌区域,智能框选完整招牌范围
14+
- **智能图像剪裁**:自动提取招牌主体,去除无关背景干扰
15+
- **文字智能识别**:准确检测招牌中的中英文文字
16+
- **多模态图像理解**:通过视觉大模型深度理解图像内容,识别LED发光异常、货架/洗手池整洁度等问题
17+
18+
### 🤖 多智能体协同架构
19+
20+
- **Multi-Agent架构**:采用多智能体协同工作模式,自主判断最优任务执行流程
21+
- **专业分工协作**:图像处理、异常分析各司其职,提升检测效率
22+
- **端到端自动化**:从图像采集到告警通知的全流程自动化处理
23+
24+
## Agent 能力
25+
26+
主要的火山引擎产品或 Agent 组件:
27+
28+
- 豆包大模型:
29+
- doubao-seed-1.6-vision
30+
- doubao-seed-1-6-251015
31+
- 自定义工具
32+
- Identity
33+
- APMPlus
34+
35+
## 目录结构说明
36+
37+
```bash
38+
.
39+
├── Dockerfile
40+
├── README.md
41+
├── __init__.py
42+
├── agent.py # Agent应用入口
43+
├── agent.yaml # Agent配置文件(定义智能体核心特性、行为规则)
44+
├── requirements.txt
45+
└── tools # 自定义工具
46+
├── __init__.py
47+
├── image # 图片识别、图片检测工具
48+
│ ├── __init__.py
49+
│ ├── attire_inspection.py # 工人着装检查工具
50+
│ ├── image_cropper.py # 图片裁剪工具
51+
│ ├── image_editor.py # 图片标识画框工具
52+
│ ├── shelf_inspection.py # 货架检测工具
53+
│ ├── signboard_inspection.py # 门店招牌检测工具
54+
│ └── sink_inspection.py # 水池检测工具
55+
├── model_auth.py # 方舟大模型API_KEY置换工具
56+
└── tos_upload.py # 火山TOS文件上传工具
57+
```
58+
59+
## 快速开始
60+
61+
### 前置条件
62+
63+
**Python 版本:**
64+
65+
- Python 3.12 或更高版本
66+
67+
**火山引擎访问凭证:**
68+
69+
1. 登录 [火山引擎控制台](https://console.volcengine.com)
70+
2. 进入"访问控制" → "用户" -> 新建用户 或 搜索已有用户名 -> 点击用户名进入"用户详情" -> 进入"密钥" -> 新建密钥 或 复制已有的 AK/SK
71+
- 如下图所示
72+
![Volcengine AK/SK Management](../../assets/images/volcengine_aksk.jpg)
73+
3. 为用户配置 AgentKit运行所依赖服务的访问权限:
74+
- 在"用户详情"页面 -> 进入"权限" -> 点击"添加权限",将以下策略授权给用户
75+
- `AgentKitFullAccess`(AgentKit 全量权限)
76+
- `APMPlusServerFullAccess`(APMPlus 全量权限)
77+
4. 为用户获取火山方舟模型 Agent API Key
78+
- 登陆[火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
79+
- 进入"API Key管理" -> 创建 或 复制已有的 API Key,后续 `MODEL_AGENT_API_KEY`环境变量需要配置为该值
80+
- 如下图所示
81+
![Ark API Key Management](../../assets/images/ark_api_key_management.jpg)
82+
5. 开通模型预置推理接入点
83+
- 登陆[火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
84+
- 进入"开通管理" -> "语言模型" -> 找到相应模型 -> 点击"开通服务"
85+
- 确认开通,等待服务生效(通常1-2分钟)
86+
- 开通本案例中使用到的以下模型(您也可以根据实际需求开通其他模型的预置推理接入点,并在 `agent.py`代码中指定使用的模型)
87+
- `deepseek-v3-1-terminus`
88+
- `doubao-seed-1-6-vision-250815`
89+
- `doubao-seed-1-6-251015`
90+
- 如下图所示
91+
![Ark Model Service Management](../../assets/images/ark_model_service_management.jpg)
92+
93+
### 安装依赖
94+
95+
```bash
96+
pip install -r requirements.txt
97+
```
98+
99+
### 配置环境变量
100+
101+
设置以下环境变量:
102+
103+
```bash
104+
# 火山引擎AK/SK
105+
export VOLCENGINE_ACCESS_KEY=AK
106+
export VOLCENGINE_SECRET_KEY=SK
107+
# TOS桶名称
108+
export DATABASE_TOS_BUCKET=agentkit-platform-{{your_account_id}}
109+
# 大模型API_KEY (可选)
110+
export MODEL_AGENT_API_KEY=<your_ark_api_key>
111+
```
112+
113+
## 本地运行
114+
115+
使用 `veadk web` 进行本地调试:
116+
117+
```bash
118+
# 1. 进入上级目录
119+
cd 02-use-cases
120+
121+
# 2. 可选: 创建 .env 文件 (如果已设置环境变量可跳过)
122+
touch .env
123+
echo "VOLCENGINE_ACCESS_KEY=AK" >> .env
124+
echo "VOLCENGINE_SECRET_KEY=SK" >> .env
125+
# 设置 TOS 存储桶用于上传检测过程的结果文件
126+
echo "DATABASE_TOS_BUCKET=agentkit-platform-{{your_account_id}}" >> .env
127+
128+
# 3. 启动 Web 界面
129+
veadk web
130+
```
131+
132+
服务默认运行在 8000 端口。访问 `http://127.0.0.1:8000`,选择 `inspection_assistant` 智能体,在输入面板中开始测试。
133+
134+
### 示例提示词
135+
136+
```text
137+
检查门店招牌的LED发光状态,图片url: https://agentkit-demo.tos-cn-beijing.volces.com/volc_coffe.jpeg
138+
检查门店的洗手池整洁度,图片url: https://agentkit-demo.tos-cn-beijing.volces.com/20251111-174301.png
139+
检查门店的的货架陈列,图片url: https://agentkit-demo.tos-cn-beijing.volces.com/20251111-192602.jpeg
140+
检查门店的工人着装,图片url: https://agentkit-demo.tos-cn-beijing.volces.com/20251112-102002.jpeg
141+
```
142+
143+
## AgentKit 部署
144+
145+
1. 部署到火山引擎 AgentKit Runtime:
146+
147+
```bash
148+
# 1. 进入项目目录
149+
cd 02-use-cases/inspection_assistant
150+
151+
# 2. 配置 agentkit
152+
agentkit config \
153+
--agent_name inspection_assistant \
154+
--entry_point 'agent.py' \
155+
--runtime_envs DATABASE_TOS_BUCKET=agentkit-platform-{{your_account_id}} \
156+
--launch_type cloud
157+
158+
# 3. 部署到运行时
159+
agentkit launch
160+
```
161+
162+
### 测试已部署的智能体
163+
164+
部署成功后:
165+
166+
1. 访问 [火山引擎 AgentKit 控制台](https://console.volcengine.com/agentkit/region:agentkit+cn-beijing/runtime)
167+
2. 点击 **Runtime** 查看已部署的智能体 `inspection_assistant`
168+
3. 获取公网访问域名 (例如: `https://xxxxx.apigateway-cn-beijing.volceapi.com`) 和 API Key
169+
170+
#### **基于chatui调试**
171+
172+
Agentkit的智能体列表页面提供了调试入口,点击之后即可以UI可视化的方式调试智能体功能
173+
174+
![img](./img/agent-test-run-01.png)
175+
176+
#### **基于命令行调试**
177+
178+
可以直接使用agentkit invoke发起对当前智能体的调试,命令如下
179+
180+
```bash
181+
agentkit invoke '{"prompt": "检查门店招牌的LED发光状态,图片url: https://agentkit-demo.tos-cn-beijing.volces.com/volc_coffe.jpeg"}'
182+
```
183+
184+
## 效果展示
185+
186+
智能门店巡检效果展示。
187+
188+
## 常见问题
189+
190+
## 最佳实践
191+
192+
- **图像质量要求**:确保上传的门店图像清晰、光线充足,以获得最佳的检测效果
193+
- **监控与维护**:建立完善的监控机制,确保系统稳定运行
194+
195+
## 🔗 相关资源
196+
197+
- [AgentKit 官方文档](https://www.volcengine.com/docs/86681/1844878?lang=zh)
198+
- [TOS 对象存储](https://www.volcengine.com/product/TOS)
199+
- [AgentKit 控制台](https://console.volcengine.com/agentkit/region:agentkit+cn-beijing/overview?projectName=default)
200+
- [火山方舟控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/overview?briefPage=0&briefType=introduce&type=new)
201+
202+
## 代码许可
203+
204+
本工程遵循 Apache 2.0 License
205+
206+
## 技术支持
207+
208+
如需技术支持或有任何疑问,请参考AgentKit官方文档或联系火山引擎技术支持团队。

02-use-cases/inspection_assistant/__init__.py

Whitespace-only changes.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import logging
16+
import os
17+
import sys
18+
from pathlib import Path
19+
20+
from agentkit.apps import AgentkitAgentServerApp
21+
from veadk import Runner
22+
from veadk.agent_builder import AgentBuilder
23+
from veadk.memory.short_term_memory import ShortTermMemory
24+
25+
# 建议通过logging.basicConfig设置全局logger,默认Log级别为INFO
26+
logging.basicConfig(level=logging.INFO)
27+
logger = logging.getLogger(__name__)
28+
29+
# current path
30+
sys.path.append(str(Path(__file__).resolve().parent))
31+
# parent path
32+
sys.path.append(str(Path(__file__).resolve().parent.parent))
33+
34+
# 1. Define root_agent with veadk.AgentBuilder (support veadk web)
35+
yaml_path = "agent.yaml"
36+
if not os.path.isfile(yaml_path):
37+
yaml_path = "inspection_assistant/agent.yaml"
38+
39+
app_name = "inspection_assistant"
40+
agent_builder = AgentBuilder()
41+
agent = agent_builder.build(path=yaml_path)
42+
runner = Runner(agent=agent, app_name=app_name)
43+
44+
# support veadk web
45+
root_agent = agent
46+
47+
# 2. Build Agent as Server App (support agentkit)
48+
short_term_memory = ShortTermMemory(backend="local")
49+
agent_server_app = AgentkitAgentServerApp(
50+
agent=root_agent, short_term_memory=short_term_memory
51+
)
52+
53+
if __name__ == "__main__":
54+
agent_server_app.run(host="0.0.0.0", port=8000)

0 commit comments

Comments
 (0)