Бекенд сервис для городского помощника с использованием FastAPI, GigaChatLLM, MCP и RAG.
RESTful API для генерации ответа пользователям.
- Python 3.12
- Langchain
- PostgreSQL
- ChromaDB
- RAG
- GigaChat
- MCP
- Docker
- GET
/health- healthcheck, позволяет проверить, что сервис живой - POST
/v1/chat- принимает JSON с запросом user_id и message от пользователя. Возвращает reply (ответ пользователю) и user_id (который был в запросе) - POST
/v1/rag/ingest- принимает на вход список URL для парсинга и обогащения RAG - POST
/v1/rag/upload- принимает на вход готовые MD/TXT файлы для обогащения ими RAG
curl -X POST http://localhost:8000/v1/rag/ingest \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/city-service-page"], "source_tag": "city_portal"}'curl -X POST http://localhost:8000/v1/сhat \
-H "Content-Type: application/json" \
-d '{"user_id": 1, "message": "Привет! Как дела?"}'Все промпты, который мы используем в проекте можно найти в директории prompts.
У каждого промпта есть description, который определяет назначение промпта.
Как я уже говорил - я НЕ рекомендую запускать сервисы по отдельности, так как они зависимы друг от друга
Однако, если вы все же хотите это сделать, то ниже инструкция:
-
Собрать Docker-образ:
$ docker build -t spbtechbackend:latest . -
Заполнить файл
.env.sample -
Запустить контейнер с заполненным
.env.sample:$ docker run --env-file .env.sample -p 8000:8000 spbtechbackend:latest
Еще больше я НЕ рекомендую пытыться запустить его вне Docker-контейнера, так как замучаетесь дружить версии зависимостей между собой