使用说明
# 🤖 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
Сервер запустится на:
- HTTP API: http://localhost:8000
- MCP服务器: 过
stdio(IDE)
🌐 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,处理结果并返回结构化输出。
🔄 代理逻辑
- Пользователь отправляет запрос
- 代理决定是否需要工具
- 如果是-调用工具并保存结果
- 模型分析结果
- 返回最终答案
🔁 工作图:
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
