Files
aks_agent/search_agent/a2a-ai-search-agent/README.md
T

3.6 KiB
Raw Blame History

A2A AI Search Agent

基于 LiteLLM 和 A2A (Agent2Agent) 协议的智能搜索 Agent API 服务。

🚀 功能特性

  • ✅ A2A 协议兼容 - 完全支持 Google Agent2Agent 协议
  • ✅ 多轮对话 - 维护对话上下文,支持连续对话
  • ✅ 流式响应 - 支持 SSE 流式输出
  • ✅ LiteLLM 集成 - 统一的 LLM 调用接口
  • ✅ 生产就绪 - 适用于 AKS (Azure Kubernetes Service) 部署

📁 项目结构

a2a-ai-search-agent/
├── config.py          # 配置管理
├── agent.py           # Agent 核心逻辑
├── a2a_server.py      # A2A 协议 API 服务
├── requirements.txt   # Python 依赖
├── Dockerfile         # Docker 镜像
├── deploy.sh          # 部署脚本
└── k8s/               # Kubernetes 配置
    ├── deployment.yaml
    ├── service.yaml
    ├── configmap.yaml
    └── secret.yaml

🔧 配置

环境变量:

  • LITELLM_API_KEY - LiteLLM API 密钥(必需)
  • LITELLM_MODEL - 模型名称(如: taiji/gpt-4o-mini)

LiteLLM 服务地址:

https://litellm.graystone-fb459c5d.southeastasia.azurecontainerapps.io

🐳 Docker 部署

构建镜像

docker build -t a2a-ai-search-agent:latest .

运行容器

docker run -d \
  -p 9000:9000 \
  -e LITELLM_API_KEY="your-api-key" \
  -e LITELLM_MODEL="taiji/gpt-4o-mini" \
  a2a-ai-search-agent:latest

☸️ Kubernetes 部署

推送到 ACR

# 登录 ACR
docker login agnettaiji.azurecr.io -u agnettaiji -p 'YOUR_PASSWORD'

# 打标签
docker tag a2a-ai-search-agent:latest agnettaiji.azurecr.io/xiaohei-agent:latest

# 推送
docker push agnettaiji.azurecr.io/xiaohei-agent:latest

部署到 AKS

# 方式1: 使用脚本
./deploy.sh

# 方式2: 手动部署
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml

查看部署状态

# 查看 Pod
kubectl get pods -l app=xiaohei-agent

# 查看 Service 和外网 IP
kubectl get svc xiaohei-agent-service

# 实时监控外网 IP 分配
kubectl get svc xiaohei-agent-service -w

📡 API 端点

健康检查

GET /health

Agent Card (A2A 发现)

GET /.well-known/agent.json

响应示例:

{
  "name": "xiaohei-agent",
  "description": "一个基于LiteLLM的智能Agent,支持A2A协议",
  "version": "1.0.0",
  "capabilities": {
    "text": true,
    "streaming": true,
    "push_notifications": false
  },
  "skills": [
    {
      "id": "general-assistant",
      "name": "通用助手",
      "description": "回答问题、提供建议、协助完成各种任务"
    }
  ]
}

发送消息 (非流式)

POST /message/send
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": "request-1",
  "method": "message/send",
  "params": {
    "message": {
      "role": "user",
      "parts": [{"kind": "text", "text": "你好"}],
      "messageId": "msg-1"
    }
  }
}

发送消息 (流式)

POST /message/stream
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": "request-1",
  "method": "message/stream",
  "params": {
    "message": {
      "role": "user",
      "parts": [{"kind": "text", "text": "你好"}],
      "messageId": "msg-1"
    }
  }
}

🔗 相关资源

📄 许可证

MIT License