Files
agent_management/plans/API_DOCUMENTATION.md
2026-01-05 12:44:28 +00:00

15 KiB
Raw Permalink Blame History

AI Agent Manager API 文档

概述

AI Agent Manager 是一个基于 FastAPI 构建的 Kubernetes AI Agent 管理服务。该服务提供 RESTful API 接口,用于在 Kubernetes 集群中创建、删除、查询和管理 AI Agent Pod。

基本信息

项目 值
服务名称 AI Agent Manager
版本 1.0.0
基础URL http://<host>:<port>
默认端口 8000
内容类型 application/json

环境变量配置

变量名 默认值 说明
NAMESPACE ai-agents AI Agent 部署的 Kubernetes 命名空间
KUBECONFIG_PATH None kubeconfig 文件路径(可选)
SERVICE_HOST 0.0.0.0 服务监听地址
SERVICE_PORT 8000 服务监听端口

API 端点

1. 健康检查

检查服务运行状态。

请求

GET /

响应

{
  "service": "AI Agent Manager",
  "status": "running",
  "namespace": "ai-agents"
}

cURL 示例

curl -X GET "http://localhost:8000/"

2. 列出所有模板

获取所有可用的 Agent 模板及其所需参数。

请求

GET /templates

成功响应 (200)

{
  "templates": [
    {
      "template": "echo_agent",
      "port": null,
      "env_info": {}
    },
    {
      "template": "jina_search_agent",
      "port": 8080,
      "env_info": {
        "required": {
          "JINA_API_KEY": "Jina API密钥,从 https://jina.ai/ 获取"
        },
        "optional": {
          "SERVICE_PORT": "HTTP服务端口,默认8080",
          "SERVICE_HOST": "HTTP服务监听地址,默认0.0.0.0"
        }
      }
    },
    {
      "template": "mysql_agent",
      "port": null,
      "env_info": {
        "required": {
          "MYSQL_HOST": "MySQL数据库主机地址",
          "MYSQL_USER": "MySQL用户名",
          "MYSQL_PASSWORD": "MySQL密码",
          "MYSQL_DATABASE": "MySQL数据库名",
          "OPENAI_API_KEY": "OpenAI API密钥"
        },
        "optional": {
          "MYSQL_PORT": "MySQL端口,默认3306"
        }
      }
    }
  ],
  "count": 7
}

cURL 示例

curl -X GET "http://localhost:8000/templates"

3. 获取模板详情

获取指定模板的详细信息,包括所需环境变量。

请求

GET /templates/{template_name}

路径参数

参数 类型 必填 说明
template_name string 是 模板名称

成功响应 (200)

{
  "template": "jina_search_agent",
  "port": 8080,
  "env_info": {
    "required": {
      "JINA_API_KEY": "Jina API密钥,从 https://jina.ai/ 获取"
    },
    "optional": {
      "SERVICE_PORT": "HTTP服务端口,默认8080",
      "SERVICE_HOST": "HTTP服务监听地址,默认0.0.0.0"
    }
  }
}

错误响应

状态码 说明
404 模板不存在

cURL 示例

curl -X GET "http://localhost:8000/templates/jina_search_agent"

4. 创建 Agent

创建一个新的 AI Agent Pod。

请求

POST /agents

请求头

Content-Type: application/json

请求体参数

参数 类型 必填 说明
name string 是 Agent 名称,长度 1-63 字符
template string 是 模板类型(见模板列表)
config object 否 配置信息(见下表)

config 配置参数

参数 类型 默认值 说明
replicas integer 1 副本数量
cpu_request string 100m CPU 请求量
cpu_limit string 500m CPU 限制量
memory_request string 128Mi 内存请求量
memory_limit string 512Mi 内存限制量
env object {} 自定义环境变量

请求体示例(带环境变量)

{
  "name": "my-jina-agent",
  "template": "jina_search_agent",
  "config": {
    "cpu_request": "100m",
    "cpu_limit": "500m",
    "memory_request": "128Mi",
    "memory_limit": "512Mi",
    "env": {
      "JINA_API_KEY": "your-jina-api-key"
    }
  }
}

成功响应 (200) - HTTP服务类型Agent

{
  "name": "my-jina-agent",
  "namespace": "ai-agents",
  "status": "Pending",
  "created_at": "2025-12-31T01:00:00.000000+00:00",
  "template": "jina_search_agent",
  "service_port": 8080,
  "access_info": {
    "note": "Pod IP将在Pod运行后可用,请通过 /agents/{name}/status 获取",
    "port": 8080,
    "endpoints": {
      "root": "http://<pod_ip>:8080/",
      "health": "http://<pod_ip>:8080/health"
    }
  }
}

成功响应 (200) - 普通Agent

{
  "name": "my-echo-agent",
  "namespace": "ai-agents",
  "status": "Pending",
  "created_at": "2025-12-31T01:00:00.000000+00:00",
  "template": "echo_agent"
}

错误响应

状态码 说明
400 无效的模板类型
500 服务器内部错误

cURL 示例

# 创建 Jina Search Agent(带环境变量)
curl -X POST "http://localhost:8000/agents" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-jina-agent",
    "template": "jina_search_agent",
    "config": {
      "env": {
        "JINA_API_KEY": "your-jina-api-key"
      }
    }
  }'

# 创建 MySQL Agent
curl -X POST "http://localhost:8000/agents" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-mysql-agent",
    "template": "mysql_agent",
    "config": {
      "env": {
        "MYSQL_HOST": "mysql.example.com",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "password",
        "MYSQL_DATABASE": "mydb",
        "OPENAI_API_KEY": "sk-xxx"
      }
    }
  }'

5. 删除 Agent

删除指定的 AI Agent Pod。

请求

DELETE /agents/{agent_name}

路径参数

参数 类型 必填 说明
agent_name string 是 要删除的 Agent 名称

成功响应 (200)

{
  "status": "success",
  "message": "Pod my-jina-agent 已删除"
}

cURL 示例

curl -X DELETE "http://localhost:8000/agents/my-jina-agent"

6. 获取 Agent 状态

获取指定 Agent 的详细状态信息,包括访问URL和资源使用情况(CPU、内存)。

请求

GET /agents/{agent_name}/status

路径参数

参数 类型 必填 说明
agent_name string 是 Agent 名称

成功响应 (200) - HTTP服务类型Agent(运行中)

{
  "name": "my-jina-agent",
  "namespace": "ai-agents",
  "status": "Running",
  "template": "jina_search_agent",
  "created_at": "2025-12-31T01:00:00.000000+00:00",
  "node": "aks-nodepool1-12345678-vmss000000",
  "pod_ip": "10.244.0.15",
  "resources": {
    "requests": {
      "cpu": "100m",
      "memory": "128Mi"
    },
    "limits": {
      "cpu": "500m",
      "memory": "512Mi"
    },
    "usage": {
      "cpu": "50m",
      "memory": "64Mi",
      "available": true
    }
  },
  "service_port": 8080,
  "access_url": "http://10.244.0.15:8080",
  "endpoints": {
    "root": "http://10.244.0.15:8080/",
    "health": "http://10.244.0.15:8080/health"
  },
  "conditions": [
    {
      "type": "Ready",
      "status": "True",
      "reason": null
    }
  ]
}

resources 字段说明

字段 说明
requests 资源请求配额(Pod 启动时保证的资源)
limits 资源限制配额(Pod 可使用的最大资源)
usage 实际资源使用情况(需要集群安装 metrics-server)

usage 字段说明

字段 类型 说明
cpu string 当前 CPU 使用量(如 "50m" 表示 50 毫核)
memory string 当前内存使用量(如 "64Mi" 表示 64 MiB)
available boolean 资源使用数据是否可用
reason string 如果 available 为 false,说明原因

注意: 实际资源使用量(usage)需要 Kubernetes 集群安装 metrics-server。如果未安装,usage.available 为 false,并在 usage.reason 中说明原因。

状态值说明

状态 说明
Pending Pod 已被接受,但容器尚未创建
Running Pod 已绑定到节点,所有容器已创建
Succeeded Pod 中所有容器已成功终止
Failed Pod 中所有容器已终止,至少一个容器失败
Unknown 无法获取 Pod 状态

cURL 示例

curl -X GET "http://localhost:8000/agents/my-jina-agent/status"

7. 获取 Agent 资源使用情况

获取指定 Agent 的 CPU 和内存资源配置信息。

请求

GET /agents/{agent_name}/metrics

成功响应 (200)

{
  "name": "my-jina-agent",
  "requests": {
    "cpu": "100m",
    "memory": "128Mi"
  },
  "limits": {
    "cpu": "500m",
    "memory": "512Mi"
  }
}

cURL 示例

curl -X GET "http://localhost:8000/agents/my-jina-agent/metrics"

8. 列出所有 Agent

获取所有 AI Agent 的列表,支持按模板类型过滤。

请求

GET /agents

查询参数

参数 类型 必填 说明
template string 否 按模板类型过滤

成功响应 (200)

{
  "agents": [
    {
      "name": "my-jina-agent",
      "status": "Running",
      "template": "jina_search_agent",
      "created_at": "2025-12-31T01:00:00.000000+00:00",
      "pod_ip": "10.244.0.15"
    }
  ],
  "count": 1
}

cURL 示例

# 列出所有 Agent
curl -X GET "http://localhost:8000/agents"

# 按模板类型过滤
curl -X GET "http://localhost:8000/agents?template=jina_search_agent"

模板类型说明

echo_agent

简单的回显 Agent,用于测试和演示。

  • 镜像: agnettaiji.azurecr.io/ai-agents/echo-agent:latest
  • 用途: 测试、演示、健康检查
  • 所需环境变量: 无

chat_agent

聊天对话 Agent,支持对话交互。

  • 镜像: agnettaiji.azurecr.io/ai-agents/chat-agent:latest
  • 用途: 对话系统、客服机器人
  • 所需环境变量: 无

code_agent

代码生成 Agent,支持代码相关任务。

  • 镜像: agnettaiji.azurecr.io/ai-agents/code-agent:latest
  • 用途: 代码生成、代码审查、代码解释
  • 所需环境变量: 无

search_agent

搜索 Agent。

  • 镜像: agnettaiji.azurecr.io/ai-agents/search-agent:latest
  • 用途: 搜索功能
  • 所需环境变量: 无

jina_search_agent

使用 Jina Reader API 获取网站内容的 HTTP 服务 Agent。

  • 镜像: agnettaiji.azurecr.io/ai-agents/jina-search-agent:latest

  • 服务端口: 8080

  • 用途: 网站内容抓取、网页转文本

  • 所需环境变量:

    变量名 必填 说明
    JINA_API_KEY 是 Jina API密钥
    SERVICE_PORT 否 HTTP服务端口,默认8080
    SERVICE_HOST 否 HTTP服务监听地址,默认0.0.0.0
  • Agent API端点:

    • GET / - 服务信息和所需参数
    • GET /health - 健康检查
    • POST /search - 搜索网站内容
    • GET /fetch?url=<url> - 快速获取网站内容

mysql_agent

MySQL 数据库查询 Agent,使用 LangChain 实现。

  • 镜像: agnettaiji.azurecr.io/ai-agents/mysql-agent:latest
  • 用途: MySQL 数据库自然语言查询
  • 所需环境变量:
    变量名 必填 说明
    MYSQL_HOST 是 MySQL数据库主机地址
    MYSQL_USER 是 MySQL用户名
    MYSQL_PASSWORD 是 MySQL密码
    MYSQL_DATABASE 是 MySQL数据库名
    OPENAI_API_KEY 是 OpenAI API密钥
    MYSQL_PORT 否 MySQL端口,默认3306

postgresql_agent

PostgreSQL 数据库查询 Agent,使用 LangChain 实现。

  • 镜像: agnettaiji.azurecr.io/ai-agents/postgresql-agent:latest
  • 用途: PostgreSQL 数据库自然语言查询
  • 所需环境变量:
    变量名 必填 说明
    POSTGRES_HOST 是 PostgreSQL数据库主机地址
    POSTGRES_USER 是 PostgreSQL用户名
    POSTGRES_PASSWORD 是 PostgreSQL密码
    POSTGRES_DATABASE 是 PostgreSQL数据库名
    OPENAI_API_KEY 是 OpenAI API密钥
    POSTGRES_PORT 否 PostgreSQL端口,默认5432

完整使用流程示例

场景:创建并使用 Jina Search Agent

import requests
import time

BASE_URL = "http://localhost:8000"

# 1. 查看模板所需参数
print("=== 查看模板信息 ===")
response = requests.get(f"{BASE_URL}/templates/jina_search_agent")
template_info = response.json()
print(f"所需环境变量: {template_info['env_info']}")

# 2. 创建 Agent
print("\n=== 创建 Agent ===")
response = requests.post(
    f"{BASE_URL}/agents",
    json={
        "name": "my-jina-agent",
        "template": "jina_search_agent",
        "config": {
            "env": {
                "JINA_API_KEY": "your-jina-api-key"
            }
        }
    }
)
create_result = response.json()
print(f"创建结果: {create_result}")

# 3. 等待 Agent 运行
print("\n=== 等待 Agent 启动 ===")
for i in range(30):
    response = requests.get(f"{BASE_URL}/agents/my-jina-agent/status")
    status = response.json()
    if status.get("status") == "Running":
        print(f"Agent 已启动!")
        print(f"访问地址: {status.get('access_url')}")
        break
    print(f"当前状态: {status.get('status')}, 等待中...")
    time.sleep(2)

# 4. 调用 Agent 服务
if status.get("access_url"):
    agent_url = status["access_url"]
    
    # 查看 Agent 信息
    print("\n=== Agent 服务信息 ===")
    response = requests.get(f"{agent_url}/")
    print(response.json())
    
    # 搜索网站内容
    print("\n=== 搜索网站内容 ===")
    response = requests.post(
        f"{agent_url}/search",
        json={"url": "https://www.example.com"}
    )
    print(response.json())

# 5. 删除 Agent
print("\n=== 删除 Agent ===")
response = requests.delete(f"{BASE_URL}/agents/my-jina-agent")
print(response.json())

错误处理

通用错误响应格式

{
  "detail": "错误描述信息"
}

HTTP 状态码

状态码 说明
200 请求成功
400 请求参数错误
404 资源不存在
500 服务器内部错误

OpenAPI/Swagger 文档

FastAPI 自动生成交互式 API 文档:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc
  • OpenAPI JSON: http://localhost:8000/openapi.json

注意事项

  1. Agent 名称规范: 名称必须符合 Kubernetes 命名规范(小写字母、数字、连字符,长度 1-63)
  2. 资源配额: 请根据实际需求配置 CPU 和内存,避免资源浪费或不足
  3. 命名空间: 所有 Agent 默认部署在 ai-agents 命名空间
  4. 镜像拉取: 需要配置 ACR 密钥(acr-secret)才能拉取私有镜像
  5. 网络访问: 服务默认监听所有网络接口(0.0.0.0),生产环境请注意安全配置
  6. 环境变量安全: 敏感信息(如 API 密钥)应通过安全方式传递,避免在日志中暴露
  7. 资源监控: 获取 Agent 实际 CPU/内存使用量需要集群安装 metrics-server。安装命令:
    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml