多代理智能问答系统

MCP多代理系统是一个自动化的智能问答平台,能够分析用户查询、整合多数据源并生成自然语言响应,适用于数据分析、知识检索等多种场景。

  • by hodu-56
  • Python
  • 本地部署
  • 更新于

使用说明

MCP多代理系统

基于Model Context Protocol的智能问答平台

完全自动化的多代理系统,可分析用户查询、搜索多个数据源并生成自然的答案。

🏗️ 系统体系结构

👤 사용자 질의
      ⬇️
🔍 Query Analyzer Agent
   • 의도 분석 (검색, 분석, 비교, 생성 등)
   • 키워드 추출 및 엔티티 인식
   • 데이터 소스 추천
   • 7개 카테고리, 6개 패턴 인식
      ⬇️
🔧 Query Executor Agent
   • 실행 계획 생성
   • 4개 데이터 소스 통합 쿼리
   • 안전성 검증 및 결과 수집
      ⬇️
✍️ Response Generator Agent
   • 6개 템플릿 기반 자연어 생성
   • 다양한 형식 지원 (자연어, 표, JSON)
   • 소스 인용 및 신뢰도 계산
      ⬇️
🎭 Orchestrator Agent
   • 전체 파이프라인 조율
   • 세션 관리 및 성능 모니터링
   • 오류 복구 및 리소스 관리
      ⬇️
📝 최종 답변 (평균 신뢰도 92%, 처리시간 < 0.01초)

核心功能

🧠 智能查询分析

  • 目的分类:8种意图(搜索、摘要、说明、比较、生成、分析、翻译、计算)
  • 查询类型:6种类型(事实型、分析型、比较型、创作型、程序型、意见型)
  • 提取关键字:利用7个域的关键字数据库
  • 实体识别:6种模式(日期、数字、百分比、货币、期限、组织名称)
  • 语言感知:韩语/英语自动检测和复杂度评估

🔧 多数据源集成

  1. 内存数据库

    • 示例数据:用户(3)、产品(3)、收入(3)记录
    • 高级过滤支持($gt、$lt、$gte、$lte、$eq、$ne)
    • 字段选择和投影功能
  2. 文件系统

    • 支持读/写/列表查询
    • UTF-8编码,自动生成目录
    • 提供文件元数据
  3. Web API

    • HTTP方法支持(GET、POST、PUT、DELETE)
    • JSON/文本响应处理
    • 超时和错误处理
  4. 知识库

    • 4个定义,3个内置概念
    • 基于关联度的搜索和排序
    • AI/ML相关术语说明

🎯 创建智能响应

  • 模板系统:针对6种查询类型优化的模板
  • 格式支持:自然语言,表格,JSON,比较分析格式
  • 跟踪源:明确和验证数据来源
  • 可靠性评估:基于多因素的置信度分数(0.0-1.0)
  • 元数据:跟踪字数、字符数和创建时间

🎭 集成协调

  • 会话管理:基于UUID的会话跟踪
  • 监视管线:实时状态跟踪
  • 性能度量:成功率100%,平均处理时间0.0007秒
  • 自动清理:自动删除旧会话
  • 错误恢复:逐步错误处理和回滚

📁 项目结构

mcp/
├── core/                        # 핵심 모듈
│   ├── models.py               # 17개 Pydantic 데이터 모델
│   ├── interfaces.py           # 7개 추상 인터페이스
│   └── config.py               # 환경 설정 및 샘플 데이터
├── agents/                      # 4개 전문 에이전트
│   ├── query_analyzer/         # 질의 분석 에이전트
│   │   ├── agent.py           # 키워드 추출, 의도 분류
│   │   ├── mcp_server.py      # MCP 서버 래퍼
│   │   └── __init__.py        # 패키지 초기화
│   ├── query_executor/         # 쿼리 실행 에이전트
│   │   ├── agent.py           # 실행 계획 및 쿼리
│   │   ├── data_sources.py    # 4개 데이터 소스 구현
│   │   ├── mcp_server.py      # MCP 서버 래퍼
│   │   └── __init__.py        # 패키지 초기화
│   ├── response_generator/     # 응답 생성 에이전트
│   │   ├── agent.py           # 템플릿 기반 응답 생성
│   │   ├── mcp_server.py      # MCP 서버 래퍼
│   │   └── __init__.py        # 패키지 초기화
│   ├── orchestrator/           # 오케스트레이터
│   │   ├── agent.py           # 파이프라인 조율 로직
│   │   ├── mcp_server.py      # MCP 서버 래퍼
│   │   └── __init__.py        # 패키지 초기화
│   └── __init__.py             # 에이전트 패키지 초기화
├── api/                         # FastAPI 웹 인터페이스
│   ├── models/                 # API 요청/응답 모델
│   │   ├── requests.py        # 4개 요청 모델
│   │   ├── responses.py       # 7개 응답 모델
│   │   └── __init__.py        # 모델 패키지 초기화
│   ├── routes/
│   │   └── agents.py          # 10개 API 엔드포인트
│   └── main.py                # FastAPI 애플리케이션
├── app/                         # 애플리케이션 모듈
│   └── core/                   # 추가 핵심 기능
├── docker/                      # Docker 설정 파일들
├── data/                        # 파일 시스템 데이터 소스
├── tests/                       # 테스트 프레임워크
├── .env                         # 환경 변수 설정
├── run_api.py                   # API 서버 실행 스크립트
├── run_mcp_servers.py          # MCP 서버 관리자
├── test_agents.py              # 에이전트 단위 테스트
├── test_system.py              # 통합 시스템 테스트
├── requirements.txt            # 의존성 패키지 목록
└── pyproject.toml              # 프로젝트 메타데이터

🚀 快速入门

📋 系统要求

  • Python 3.9+
  • 内存:最少512MB
  • OS:支持Windows、macOS和Linux

🔧 安装和运行

  1. 依赖性安装:
cd /mnt/d/IdeaProjects/mcp
pip install -r requirements.txt

或作为Docker运行:

# Docker Compose로 전체 스택 실행
cd /mnt/d/IdeaProjects/mcp
docker compose up -d

# 개별 서비스만 실행
docker compose up app          # API 서버만
docker compose up postgres     # PostgreSQL만
docker compose up kafka        # Kafka 스택만
  1. 系统测试:
# 개별 에이전트 테스트
python test_agents.py
# 결과: 4/4 통과, 모든 에이전트 정상 작동

# 통합 시스템 테스트 (API 서버를 먼저 실행해야 함)
python run_api.py &           # 백그라운드에서 API 서버 실행
python test_system.py         # 시스템 테스트 실행
# 결과: 5/5 통과, 성공률 100%
  1. 启动服务:

运行本地Python:

python run_api.py

运行Docker Compose:

# 전체 스택 실행 (권장)
docker compose up -d

# 서비스 상태 확인
docker compose ps

# 로그 확인
docker compose logs -f app

Web服务连接:

  • 📖 API文档: http://localhost:8000/docs
  • 🏥 健康检查: http://localhost:8000/health
  • 🎯 处理查询: http://localhost:8000/agents/query
  • 📊 Prometheus度量: http://localhost:8080/metrics

📊 API端点

🔄 管线端点

方法 端点 说明 响应时间
职位 /agents/query 完整的查询处理管道<0.01秒
职位 /agents/analyze 仅执行查询分析<0.005秒
职位 /agents/execute 只执行查询<0.005秒
职位 /agents/generate 仅生成响应<0.005秒

📈 监控端点

方法 端点 说明 提供信息
得到 /agents/health 系统整体状态 代理状态,连接数据源
得到 /agents/metrics 性能度量 成功率、处理时间、会话统计
得到 /agents/sessions 活动会话列表 运行中的管线信息
得到 /agents/status/{session_id} 特定会话状态 管线进度

🔧 管理端点

方法 端点 说明 功能
删除 /agents/cancel/{session_id} 取消管线停止运行
职位 /agents/cleanup 清理会话删除旧会话

🎯 使用示例

💼 业务数据分析

curl -X POST http://localhost:8000/agents/query \
  -H "Content-Type: application/json" \
  -d '{
    "query": "부서별 평균 급여를 분석해줘",
    "context": {"user_id": "analyst_001"},
    "preferences": {
      "response_format": "natural",
      "include_sources": true
    }
  }'

响应示例:

{
  "success": true,
  "processing_time": 0.0008,
  "session_id": "abc123",
  "final_response": {
    "response_text": "분석 결과\n\n질문: 부서별 평균 급여를 분석해줘\n\n분석을 수행한 결과는 다음과 같습니다:\n\n📊 데이터베이스 (users) - 3개 레코드\n  • Engineering: 80,000원\n  • Sales: 75,000원\n  • Marketing: 70,000원\n\n📊 주요 인사이트:\n• 평균 급여: 75,000원\n• 최고 급여 부서: Engineering (80,000원)\n• 급여 편차: 10,000원\n\n총 1개의 데이터 소스에서 검색을 수행했습니다.",
    "confidence_score": 0.9,
    "sources_used": ["database"],
    "generation_time": 0.0001
  }
}

🔍 知识库查询

curl -X POST http://localhost:8000/agents/query \
  -H "Content-Type: application/json" \
  -d '{
    "query": "AI와 머신러닝의 차이점을 설명해줘"
  }'

回复:在知识库中搜索AI定义和ML定义以提供比较分析

📊 实时状态检查

curl http://localhost:8000/agents/health

当前系统状态:

  • 所有代理正常(analyzer,executor,generator)
  • 连接数据源(4/4激活)
  • 总会话数:9个,成功率:100%
  • 平均处理时间:0.0007秒

配置和设置⚙ENT

🔧 环境变量

📊 数据库设置

变量名 默认值 说明
DATABASE_URL postgresql+asyncpg://mcp_user:mcp_password@本地主机:5433/mcp_db PostgreSQL연결 URL

🔄 Kafka设置

变量名 默认值 说明
KAFKA_BOOTSTRAP_SERVERS localhost:9092 Kafka代理服务器
KAFKA_CDC_TOPIC cdc_events CDC事件主题
KAFKA_CONSUMER_GROUP cdc_consumer_group消费者组ID

🔍 配置OpenSearch

变量名 默认值 说明
OPENSEARCH_HOST localhost OpenSearch主机
OPENSEARCH_PORT 9200 OpenSearch端口
OPENSEARCH_USERNAME admin OpenSearch用户名
OPENSEARCH_PASSWORD admin OpenSearch密码
OPENSEARCH_INDEX cdc_logs OpenSearch索引名

🤖 MCP和应用程序设置

变量名 默认值 说明
MCP_SERVER_PORT 8001 MCP服务器端口
MCP_CLIENT_TIMEOUT 30 MCP客户端超时(秒)
APP_HOST 0.0.0.0应用程序服务器主机
APP_PORT 8000 应用程序服务器端口
DEBUG true 调试模式
LOG_LEVEL INFO日志级别

📈 设置监视

变量名 默认值 说明
PROMETHEUS_PORT 8080Prometheus度量端口

🛡️ 安全设置

  • 限制查询长度:1000个字符(阻止恶意查询)
  • 过滤命令:DROP、DELETE、TRUNCATE、ALTER阻止
  • 超时控制:每个代理的时间限制(30-60秒)
  • 验证输入:基于Pydantic模型的严格类型验证
  • 定期会议:限制每分钟60次请求

📁 数据目录

data/                    # 파일 시스템 데이터 소스
├── documents/          # 문서 파일
├── logs/              # 시스템 로그
└── exports/           # 내보낸 결과

🤖 MCP集成方法

Claude Code集成

{
  "servers": {
    "multi-agent-system": {
      "command": "python",
      "args": ["run_mcp_servers.py", "4"],
      "cwd": "/mnt/d/IdeaProjects/mcp"
    }
  }
}

运行单个MCP服务器

# 사용 가능한 서버 목록
python run_mcp_servers.py list

# 특정 서버 실행
python run_mcp_servers.py 1    # Query Analyzer
python run_mcp_servers.py 2    # Query Executor
python run_mcp_servers.py 3    # Response Generator
python run_mcp_servers.py 4    # Orchestrator (권장)

📊 性能和统计

🎯 实际性能数据

  • 处理速度:平均0.0007秒(小于1 ms)
  • 成功率:100%(0次失败)
  • 并行处理:最多60个请求/分钟
  • 内存使用量:约50MB(默认运行)
  • 支持的语言:韩语,英语(自动检测)

📈 可扩展性

  • 数据源:4个(可扩展)
  • 查询类型:6个(分析、事实、比较等)
  • 响应格式:4个(自然语言、表格、JSON、比较)
  • 会话管理:无限制(自动清理)

🔧 扩展和自定义

添加新数据源

# agents/query_executor/data_sources.py에 추가
class CustomDataSource(DataSourceInterface):
    async def connect(self) -> bool:
        # 연결 로직 구현
        pass

    async def query(self, query_params: Dict[str, Any]) -> Dict[str, Any]:
        # 쿼리 실행 로직 구현
        pass

自定义响应模板

# agents/response_generator/agent.py에서 템플릿 수정
templates = {
    "custom": "사용자 정의 템플릿: {query}\n결과: {results}"
}

新的代理集成

  1. agents/ 在子目录中创建新目录
  2. agent.py, mcp_server.py, __init__.py 实施
  3. orchestrator/agent.py在注册代理
  4. agents/__init__.py在中添加新代理

解决问题

🔧 常见问题

端口冲突:

export PORT=8001 && python run_api.py

依赖性错误:

pip install --upgrade -r requirements.txt

内存不足:

# 개별 에이전트만 실행
python run_mcp_servers.py 1

📊 调试

# 디버그 모드로 실행
export DEBUG=true LOG_LEVEL=DEBUG
python run_api.py

# 에이전트별 테스트
python test_agents.py analyzer     # 분석 에이전트만
python test_agents.py executor     # 실행 에이전트만
python test_agents.py generator    # 생성 에이전트만
python test_agents.py orchestrator # 오케스트레이터만

🏥 检查状态

# 시스템 상태
curl http://localhost:8000/health

# 에이전트 상태
curl http://localhost:8000/agents/health

# 성능 메트릭
curl http://localhost:8000/agents/metrics

🤝 贡献方法

设置开发环境

# 개발 의존성 설치
pip install -r requirements.txt

# 코드 스타일 검사
python -m flake8 agents/ api/ core/

# 타입 검사
python -m mypy agents/ api/ core/

运行测试

# 전체 테스트
python test_agents.py && python test_system.py

# 성능 테스트
time python test_system.py

📄 技术堆栈

🐍 核心技术

  • Python 3.9+:主开发语言
  • 快速API:高性能Web API框架
  • 派丹蒂克:数据验证和设置管理
  • 异步:异步处理
  • 意图tp:HTTP客户端
  • 结构日志:结构化日志记录

🔧 MCP和AI

  • MCP-SDK:Model Context Protocol实现
  • 定制代理:4个专业代理
  • 模板引擎:自然语言生成系统

📊 数据和消息传递

  • PostgreSQL:关系数据库(异步asyncpg)
  • 阿帕奇卡夫卡:实时数据流和CDC
  • 开放搜索:分布式搜索和分析引擎
  • 内存DB:快速样本数据处理
  • 文件系统:访问本地数据
  • Web API:连接外部服务
  • 知识库:AI/ML术语数据库

🐳 基础架构和DevOps

  • Docker&Docker编写:容器化和编排
  • 普罗米修斯:收集和监视度量
  • 动物园管理员:Kafka集群管理
  • 管理环境变量:基于.env文件的配置

📞 支持和文档

  • API文档: http://localhost:8000/docs(交互式Swagger UI)
  • 测试示例: test_agents.py, test_system.py 参考
  • 设置示例: core/config.py 参考
  • 使用示例:请参阅上面的curl命令

🎉 使用MCP多代理系统开始智能问答!

当前系统 100%成功率和 响应时间不到1ms运行稳定。