Skip to content

接口自动化智能体工具


接口演练项目 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 的记忆窗口实现也不太好,简单根据聊条对话的窗口,而不是只能以工具调用的消息窗口

\

大多数的智能体策略都比较简单,需要自己开发更合适的策略与智能体。