AI代理工具

基于GigaChat的智能助手,支持多步骤代理、数据分析、文件处理和法律实体分析,适用于企业客户分析和开发集成。

  • by IvanKorch1289
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ivankorch1289/mcp-server

使用说明

# 🤖 GigaChat MCP AI-Агент с инструментами и кэшированием

Умный ассистент на базе **GigaChat** с поддержкой вызова внешних инструментов, анализа данных и кэширования через **Tarantool**.  
Проект построен с использованием `LangGraph`, `LangChain`, `MCP (Model Context Protocol)` и `FastAPI`.

---

## 🔧 Основные возможности

- ✅ **Многошаговые агенты** с поддержкой вызова инструментов  
- ✅ **Анализ юридических лиц по ИНН** через DaData и InfoSphere  
- ✅ **Встроенные инструменты**: работа с файлами, время, заметки  
- ✅ **Кэширование запросов** через Tarantool (с TTL)  
- ✅ **MCP-совместимый сервер** для интеграции с IDE и агентами  
- ✅ **Сессии пользователей** с историей диалога  
- ✅ **Русский язык** по умолчанию  

---

## 📦 Технологии

| Технология   | Назначение |
|--------------|------------|
| `GigaChat`   | Языковая модель от Сбера |
| `LangGraph`  | Оркестрация агентов и графов |
| `FastAPI`    | HTTP API |
| `Tarantool`  | Быстрое кэширование с TTL |
| `MCP Server` | Поддержка Model Context Protocol |
| `aiohttp`    | Асинхронные HTTP-запросы |
| `xmltodict`  | Парсинг XML от InfoSphere |

---

## ⚙️ Установка и настройка

### 1. Установка зависимостей
```bash
pip install -r requirements.txt

需要 Python 3.10+


2. 设置环境变量

创建文件 .env:

# GigaChat
GIGA_API_KEY=your_gigachat_api_key

# DaData
DADATA_API_KEY=your_dadata_api_key
DADATA_URL=https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party

# InfoSphere
INFOSPHERE_LOGIN=your_login
INFOSPHERE_PASSWORD=your_password
INFOSPHERE_URL=https://api.infosphere.ru/xml

# Tarantool
TARANTOOL_HOST=localhost
TARANTOOL_PORT=3301
TARANTOOL_USER=guest
TARANTOOL_PASSWORD=

🔐 所有密钥从 app/settings.py 过 pydantic.BaseSettings.


🚀 启动

python -m app.main

Сервер запустится на:


🌐 API Endpoints

🔹 主要代理请求

POST /prompt

{
  "prompt": "Проанализируй клиента с ИНН 7702302345",
  "session_id": "session_123"
}

答复:

{
  "response": "Компания активна, риск низкий...",
  "session_id": "session_123",
  "tools_used": true,
  "timestamp": "2025-09-01T12:00:00"
}

🔹 会议历史

GET /sessions/{session_id} — Просмотр истории диалога


🧰 可用工具

Инструмент Назначение
get_current_time 获取当前时间
count_files 在目录中查找文件。
read_file 阅读文件内容。
create_note 创建一个文本笔记。
fetch_company_info 通过INN获取公司信息

📌 在INS分析中,代理自动调用 fetch_company_info,处理结果并返回结构化输出。


🔄 代理逻辑

  1. Пользователь отправляет запрос
  2. 代理决定是否需要工具
  3. 如果是-调用工具并保存结果
  4. 模型分析结果
  5. 返回最终答案

🔁 工作图:

agent → tools → agent → ответ

🗃️ Кэширование

  • 所有困难的问题(数据, 信息域)缓存到 Tarantool
  • TTL: 1-2小时 (取决于工具)
  • Используется msgpack 用于系列化
  • 错误处理 max_map_len不正确的数据类型和损坏的数据

🛠️ Отладка

塔兰托波尔

tarantoolctl connect localhost:3301
> box.space.cache:select()

日志

  • 信息 -主要发展
  • 错误 -Tarantool错误、呼叫、解析

🔗 MCP集成

服务器兼容 MCP客户端 (例如VS Code或JetBrains)


🧪 查询示例

了解当前时间

curl -X POST http://localhost:8000/prompt \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Который час?",
    "session_id": "test1"
  }'

INN客户分析

curl -X POST http://localhost:8000/prompt \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Проанализируй клиента с ИНН 7702302345",
    "session_id": "client_analysis_1"
  }'

📁 Структура проекта

app/
├── main.py            # Точка входа
├── server.py          # Граф агента и MCP-сервер
├── session.py         # Управление сессиями
├── tools.py           # Инструменты
├── fetch_data.py      # Запросы к DaData и InfoSphere
├── storage/
│   └── tarantool.py   # Кэширование
├── prompts.py         # Системный промпт
├── settings.py        # Настройки
└── utils.py           # Вспомогательные функции

📄 许可证

该项目是为内部使用而设计的。
传播 无许可证.


💡 开发者 : 科尔奇·伊万
📅 上次更新: 九月2025