- ai_service.py: единый AI-сервис (chat, chat_with_history, analyze_document) - routes/ai.py: POST /api/v1/ai/chat (chat, summarize, extract_risks, classify, translate) - config.py: ANTHROPIC_API_KEY, ANTHROPIC_MODEL - requirements.txt: anthropic>=0.42.0 - api-client.ts: aiApi (chat, summarize, extractRisks) - CSP: connect-src добавлен https://api.anthropic.com - app/api/ai-chat: прокси на бэкенд /api/v1/ai/chat (Anthropic) - legal_agents/llm_client.py: переведён на ai_service (Claude) - AIAccessSettings: только Claude (Sonnet 4, 3 Sonnet, 3 Opus) - k8s, .env.example: OPENAI → ANTHROPIC - package.json: удалена зависимость openai - Документация: OpenAI/GPT заменены на Claude/Anthropic Провайдер: исключительно Anthropic Claude Модель по умолчанию: claude-sonnet-4-20250514 Co-authored-by: Cursor <cursoragent@cursor.com>
5.4 KiB
5.4 KiB
Модуль анализа и подготовки юридических документов
Система с мультиагентной ИИ-архитектурой для анализа, подготовки в соответствии с нормами законодательства разных стран документов (законодательных, рекомендательных, директивных, уведомительных и т.д.), перекрёстных ссылок на цитируемые документы, правовых комментариев и судебной практики.
Компоненты
Модели БД
| Таблица | Описание |
|---|---|
legal_jurisdictions |
Юрисдикции (RU, KZ, EU, US, ICAO, EASA и др.) |
legal_documents |
Документы: законодательные, рекомендательные, директивные, уведомительные, нормативные, договорные, судебные |
legal_cross_references |
Перекрёстные ссылки между цитируемыми документами |
legal_comments |
Правовые комментарии для использования в базе |
legal_judicial_practices |
Судебная практика (решения, определения) |
Типы документов (document_type)
legislative— законодательный (закон, кодекс)recommendatory— рекомендательныйdirective— директивныйnotification— уведомительныйregulatory— нормативно-правовой (приказы, постановления)contractual— договорнойjudicial— судебный актother— иное
ИИ-агенты
- DocumentClassifierAgent — классификация типа документа
- NormComplianceAgent — проверка соответствия нормам юрисдикции
- CrossReferenceAgent — поиск и добавление перекрёстных ссылок на цитируемые документы
- CommentEnrichmentAgent — подбор правовых комментариев из базы
- JudicialPracticeAgent — подбор судебной практики из базы
- FormattingAgent — рекомендации по структуре и оформлению по требованиям юрисдикции
Оркестратор LegalAnalysisOrchestrator запускает агентов, при необходимости сохраняет перекрёстные ссылки в БД и обновляет документ (analysis_json, compliance_notes).
API (префикс /api/v1/legal)
Юрисдикции
GET /legal/jurisdictions— списокPOST /legal/jurisdictions— создание (admin)GET /legal/jurisdictions/{id}— однаPATCH /legal/jurisdictions/{id}— обновление (admin)
Документы
GET /legal/documents?jurisdiction_id=&document_type=&limit=— списокPOST /legal/documents— созданиеGET /legal/documents/{id}— однаPATCH /legal/documents/{id}— обновлениеGET /legal/documents/{id}/cross-references?direction=outgoing|incoming— перекрёстные ссылки
Перекрёстные ссылки
POST /legal/cross-references— ручное добавление ссылки
Правовые комментарии
GET /legal/comments?jurisdiction_id=&document_id=— списокPOST /legal/comments— созданиеPATCH /legal/comments/{id}— обновление
Судебная практика
GET /legal/judicial-practices?jurisdiction_id=&document_id=— списокPOST /legal/judicial-practices— созданиеPATCH /legal/judicial-practices/{id}— обновление
ИИ-анализ
POST /legal/analyze— анализ по переданнымjurisdiction_id,title,content(и опциональноdocument_id). Тело:{ "document_id": "uuid или null", "jurisdiction_id": "uuid", "title": "Название документа", "content": "Текст или фрагмент", "skip_agents": ["classifier", "formatting"], "save_cross_references": true }POST /legal/documents/{id}/analyze?skip_agents=&save_cross_references=— анализ существующего документа по id
Настройка LLM
В .env или переменных окружения:
ANTHROPIC_API_KEY— ключ Anthropic Claude APIANTHROPIC_MODEL— модель (по умолчаниюclaude-sonnet-4-20250514)
В app.core.config добавлены: ANTHROPIC_API_KEY, ANTHROPIC_MODEL.
Если LLM недоступен (нет ключа или ошибка), агенты работают в режиме заглушек (эвристики, пустые списки).
Первичное заполнение
Юрисдикции (RU, KZ, BY, EU, US, US-CA, ICAO, EASA):
cd backend && python -m app.db.seed_legal
Зависимости
anthropic>=0.42.0— для вызова LLM (Anthropic Claude API).