Files
pingtai_agent/search_agent
2026-03-10 02:17:12 +00:00
..
2026-03-10 02:17:12 +00:00
2026-03-10 02:17:12 +00:00
2026-03-10 02:17:12 +00:00
2026-02-27 09:48:46 +00:00
2026-02-27 09:48:46 +00:00
2026-02-27 09:48:46 +00:00
2026-03-10 02:17:12 +00:00
2026-03-10 02:17:12 +00:00
2026-03-10 02:17:12 +00:00

Search Agent

基于 Pydantic AI 的智能搜索 Agent,能够理解用户查询意图、自动规划搜索策略、从多个来源获取信息,并生成高质量、有来源引用的答案。

功能特点

能力 描述
🧠 查询理解 分析用户意图,提取关键实体,生成扩展查询
📋 搜索规划 智能分解问题,制定搜索策略
🔎 多源搜索 支持Web搜索和新闻搜索
📄 内容提取 智能提取网页核心内容
🎯 结果排序 基于相关性重排搜索结果
✍️ 答案生成 综合信息生成结构化回答
🔄 自我反思 评估答案质量,决定是否迭代
⚡ 并行优化 流水线执行,高置信度快速返回

性能优化

本 Agent 实现了多项并行优化,显著提升响应速度:

流水线模式(Pipeline Mode)

传统模式下,搜索和内容提取是串行执行的:

搜索任务1 → 搜索任务2 → 搜索任务3 → 等待全部完成 → 内容提取

流水线模式下,搜索完成后立即开始提取:

搜索任务1完成 → 立即开始提取1
搜索任务2完成 → 立即开始提取2
搜索任务3完成 → 立即开始提取3

预期收益:减少 3-8 秒等待时间

高置信度快速返回

对于简单查询(事实查询、操作指南),如果答案置信度为 high,则跳过反思评估步骤,直接返回结果。

预期收益:减少 1-3 秒 LLM 调用时间

性能对比

场景 优化前耗时 优化后耗时 提升
简单事实查询 15-25秒 8-15秒 40-50%
复杂研究查询 30-60秒 20-40秒 30-40%

快速开始

1. 安装依赖

cd search_agent
pip install -r requirements.txt

2. 配置环境变量

# LLM 配置
export OPENAI_BASE_URL=https://your-litellm-gateway/v1
export OPENAI_API_KEY=your-api-key
export MODEL_NAME=taiji/gpt-4o-mini

# Serper API(Google搜索)
export SERPER_API_KEY=your-serper-key

# Jina API(内容提取和重排序)
export JINA_API_KEY=your-jina-key

# 可选配置
export MAX_ITERATIONS=3
export MAX_RESULTS_PER_QUERY=10
export CONTENT_MAX_LENGTH=5000
export API_PORT=8000

3. 本地测试

python run_api_server.py

4. 构建镜像

docker build -t search-agent:latest .

项目结构

search_agent/
├── Dockerfile
├── requirements.txt
├── run_api_server.py      # 启动脚本
└── src/
    ├── __init__.py
    └── server/
        ├── __init__.py
        ├── api_server.py   # FastAPI + MCP HTTP
        ├── mcp_server.py   # MCP 工具定义
        └── core/           # 业务逻辑
            ├── config.py   # 配置管理
            ├── agent.py    # SearchAgent 主类
            ├── schemas.py  # 数据模型
            ├── prompts.py  # Prompt 模板
            ├── modules/    # 功能模块
            │   ├── query_analyzer.py
            │   ├── search_planner.py
            │   ├── search_executor.py
            │   ├── content_extractor.py
            │   ├── result_processor.py
            │   ├── answer_generator.py
            │   └── reflector.py
            ├── tools/      # 外部 API 封装
            │   ├── serper.py
            │   ├── jina_reader.py
            │   └── jina_reranker.py
            └── utils/      # 工具函数
                ├── llm_client.py
                └── helpers.py

API 端点

健康检查

  • GET / - 服务状态
  • GET /health - 健康检查

MCP 端点

  • POST /mcp - MCP HTTP 端点
  • GET /mcp/sse - MCP SSE 端点
  • POST /mcp/sse - MCP SSE POST 端点

REST API

  • POST /api/v1/search - 智能搜索
  • POST /api/v1/quick_search - 快速搜索
  • GET /api/v1/tools - 获取工具列表

MCP 工具

执行智能搜索,支持多轮迭代和自我反思。

{
  "query": "什么是Kubernetes?",
  "max_iterations": 3
}

快速搜索,单次迭代,适合简单问题。

{
  "query": "Python是什么?"
}

使用示例

Python

import requests

# 智能搜索
response = requests.post(
    "http://localhost:8000/api/v1/search",
    headers={"api-key": "your-api-key"},
    json={"query": "什么是Kubernetes?", "max_iterations": 3},
    timeout=120
)

result = response.json()
print(result["answer"]["content"])

cURL

curl -X POST "http://localhost:8000/api/v1/search" \
  -H "api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"query": "什么是Kubernetes?"}'

环境变量

变量 必需 说明 默认值
OPENAI_BASE_URL 是 LiteLLM Gateway URL -
OPENAI_API_KEY 是 API Key sk
MODEL_NAME 否 模型名称 taiji/gpt-4o-mini
SERPER_API_KEY 是 Serper API Key -
JINA_API_KEY 是 Jina API Key -
MAX_ITERATIONS 否 最大迭代次数 3
MAX_RESULTS_PER_QUERY 否 每次搜索结果数 10
CONTENT_MAX_LENGTH 否 内容最大长度 5000
API_PORT 否 服务端口 8000
LOG_LEVEL 否 日志级别 INFO
TIMEOUT 否 请求超时时间 30
并行优化配置
MAX_CONCURRENT_EXTRACTION 否 内容提取最大并发数 10
ENABLE_PIPELINE_MODE 否 启用流水线模式 true
ENABLE_FAST_RETURN 否 启用高置信度快速返回 true

注册到 Agent Manager

在 k8s_manager.py 中添加:

# TEMPLATE_PORTS
"search_agent": 8000,

# image_map
"search_agent": "agnettaiji.azurecr.io/ai-agents/search-agent:latest",

在 app.py 的 valid_templates 中添加 "search_agent"。