То что дальше требует обновления, но +/- так оно и есть, тесты, да нужно, накинуть...
- 🧠 Архитектура классов chat-api
- ⚙️ Использование OpenTelemetry
- 🤖 Определения CrewAI и поведение агентов
- 📜 Общий обзор CrewAI
- 🛠️ Примеры задач для Codex
Полный обзор микросервиса для работы с LLM (GPT-4 и др.), построенного на FastAPI, с CrewAI-интеграцией, observability-стеком, GitOps-деплоем и тестируемым CI/CD пайплайном.
Проект реализует микросервисную архитектуру, основной задачей которого является взаимодействие с LLM-моделью (через LiteLLM-прокси или напрямую). Внутри интеграция с Notion, CrewAI, observability через OpenTelemetry и инфраструктурная автоматизация.
- FastAPI backend: REST API (
/api/v1/chat,/health,/docs,/behavior/schema) - Логика:
services/chat_service.py - LLM-клиент:
core/llm_client.py, использует LiteLLM / OpenAI API - Notion Behavior: YAML-файл из Notion парсится в
BehaviorDefinition - CrewAI YAML: можно подключать Crew через YAML (см.
crew-infra-cluster.yaml)
ArgoCD— GitOps-подход (слежение заmanifests/)SealedSecrets— безопасное хранение API-ключей и конфигурацийLiteLLM— деплой в отдельный pod (proxy над LLM)Vector,Loki,Grafana— observability стекOpenTelemetry+structlog— логгирование и трассировка
apps/
chat/
app/ # Исходный код FastAPI приложения
api.py
main.py
behavior/ # YAML-модели и схемы поведения
core/ # Клиенты, конфиги, память
models/ # Pydantic модели для истории чатов
integrations/ # Notion client и behavior manager
observability/
services/
schemas/
crew-infra-cluster.yaml # YAML-определение Crew для CrewAI
requirements.txt
manifests/
... # YAML манифесты для ArgoCD, ingress, sealed secrets
readme/
open-telemetry.md
codex-task-example.md
chata-api-classes.md
scripts/
context-chunk-export.sh
k8s-basic.sh
k8s-export-structured.sh
...
tests/
behavior/test_models.py
test_logging.py
Makefile
pyproject.toml
- Сборка Docker-образа
ghcr.io/justgithubaccount/chat-api:latest - Push в GitHub Container Registry
- Автоматически следит за
manifests/chat-api-*.yaml - Применяет обновления и следит за дрейфом
make dev # установка dev-зависимостейmake test # pytestmake run # запускает FastAPIИспользуется SQLModel и PostgreSQL. URL подключения задаётся переменной DATABASE_URL (по умолчанию SQLite sqlite:///db.sqlite3).
Инициализация и миграции через Alembic:
alembic init alembic # однократная инициализация
alembic revision --autogenerate -m "init"
alembic upgrade headmake dev
make test
make lint
make fmt
make run
make docker- Логгирование: через
structlog, enriched контекстом (trace_id, span_id) - Трейсинг: через
OpenTelemetry + Loki - Метрики: Prometheus-compatible (
chat_requests_totalи др.)
# enrich_context(event="chat_api_called", project_id=...) -> лог с trace_id- YAML из Notion загружается при старте
- Преобразуется в
BehaviorDefinitionчерезpydantic - Эндпоинт
/behavior/schemaвозвращает текущее поведение
tasks:
- description: "Search arXiv"
expected_output: "Top 5 paper titles"
context: ["Focus on GPT-4"]
agent: "researcher"
agents:
- role: "researcher"
goal: "Understand GPT-4 applications"
backstory: "PhD in ML"
tools: ["browser"]
allow_delegation: truefrom crewai import Crew
crew = Crew.load("crew-infra-cluster.yaml")
crew.kickoff()| Endpoint | Method | Описание |
|---|---|---|
/api/v1/chat |
POST | Стандартный чат |
/api/v1/projects |
GET/POST | Создание/список проектов |
/api/v1/projects/{id}/chat |
POST | Чат внутри проекта (с историей) |
/api/v1/projects/{id}/history |
GET | История чата по trace_id |
/behavior/schema |
GET | Текущее поведение агента (из Notion) |
/health |
GET | Healthcheck для k8s/Ingress |
.env→SealedSecrets- Чувствительные ключи (
OPENAI_API_KEY,NOTION_TOKEN) не коммитятся
kubeseal --format yaml < secret.yaml > chat-api-secrets-sealed.yamlcrewai-definition.md— архитектура CrewAI и модели поведенияchata-api-classes.md— описание всех классов микросервисаopen-telemetry.md— observability и трассировкаcodex-task-example.md— как писать Codex-таски для автогенерацииsource-v*.md— версии исходников/архитектуры (исторические)
- Добавить новые агенты/роли → в YAML в Notion или
crew-infra-cluster.yaml - Использовать MCP → логика
incident_llm_analyst,bioagent_mapperи др. - Подключить ClickHouse → для хранения больших объёмов логов и ответов
Этот проект объединяет:
- Clean Architecture
- GitOps
- Observability
- CrewAI agent orchestration
Идеально подходит как стартер для AI-сервисов в production-среде.
🔁 Всё можно развёртывать и восстанавливать только по Git: infra as code, app as code, behavior as code.