接口自动化智能体工具
接口演练项目 PetStore
petstore 接口演练项目
这是一个基于 OpenAPI 3.0 规范的宠物商店服务器示例
\
- 在线地址
- 本地部署

\
https://petstore3.swagger.io/
petstore 本地安装
# docker 启动方式,不支持macos
docker pull swaggerapi/petstore3:unstable
#docker rm -f swaggerapi-petstore3
docker run --name swaggerapi-petstore3 -d -p 8080:8080 swaggerapi/petstore3:unstable
# 本地编译
# 增加国内mirror
# https://github.com/swagger-api/swagger-petstore
git clone https://github.com/swagger-api/swagger-petstore.git
cd swagger-petstore
mvn package jetty:run

工具
dify 导入自定义工具 基于 OpenApi 规范的接口
导入本地或者远程地址 记得修改 servers 地址
\
远程地址
\
servers":[{"url":"https://petstore3.swagger.io/api/v3"}]
\
本地地址
\
servers":[{"url":"http://host.docker.internal/api/v3"}]

检查工具


接口导入的常见问题
- 服务器地址需要补齐字段
- dify 的导入没有做到信息的充分导入,比如丢失枚举参数信息,需要依赖增强描述。
- 认证支持不强,需要自己增强
- 接口调用顺序信息在接口文档中不存在,需要借助其他工具或者文档补充
- 大多数接口其实只是被动调用,并不是入口,可以进行上层封装,而不是保留给智能体占用上下文空间
- 可以适当的引入一些数据库查询、服务器日志查询等相关的工具
智能体
构建接口调用智能体

消息列表
{
"model": "qwen3",
"stream": false,
"options": {
"temperature": 0
},
"think": false,
"messages": [
{
"role": "system",
"content": "你是一名接口测试工程师"
},
{
"role": "user",
"content": "根据状态查询已经售出的宠物数量"
},
{
"role": "assistant",
"content": ""
},
{
"role": "tool",
"content": "[{'id': 5, 'category': {'id': 1, 'name': 'Dogs'}, 'name': 'Dog 2', 'photoUrls': ['url1', 'url2'], 'tags': [{'id': 1, 'name': 'tag2'}, {'id': 2, 'name': 'tag3'}], 'status': 'sold'}]"
},
{
"role": "assistant",
"content": "根据状态查询已经售出的宠物数量,可以使用 `findPetsByStatus` 函数,传入状态参数 `sold`。以下是调用该函数的示例:\n\n"
},
{
"role": "assistant",
"content": ""
},
{
"role": "tool",
"content": "[{'id': 5, 'category': {'id': 1, 'name': 'Dogs'}, 'name': 'Dog 2', 'photoUrls': ['url1', 'url2'], 'tags': [{'id': 1, 'name': 'tag2'}, {'id': 2, 'name': 'tag3'}], 'status': 'sold'}]"
}
]
}
智能体常见问题
- 消息清单太长上下文不够,开启记忆窗口
- dify 的记忆窗口实现也不太好,简单根据聊条对话的窗口,而不是只能以工具调用的消息窗口
\
大多数的智能体策略都比较简单,需要自己开发更合适的策略与智能体。
