Actions
Задача #24
open
HU
Эпик #23: Переключение модели и режимов поведения AI в чате
Backend: интеграция Claude API (Anthropic SDK)
Задача #24:
Backend: интеграция Claude API (Anthropic SDK)
Status:
Решена
Priority:
Нормальный
Assignee:
-
Start date:
02/16/2026
Due date:
% Done:
100%
Estimated time:
Description
Описание¶
Добавить поддержку Claude (Anthropic) как альтернативного AI-провайдера.
Что нужно¶
- Установить
@anthropic-ai/sdk - Создать
ClaudeService(или расширить OpenAIService в AIProviderService):-
chat()— простой запрос -
chatWithToolsStream()— стриминг с tools + AbortSignal - Маппинг OpenAI tool format → Claude tool format (они отличаются)
-
- Конфигурация:
ANTHROPIC_API_KEYв .env, модель по умолчанию claude-sonnet-4-5-20250929 - Абстракция: единый интерфейс AIProvider чтобы runner не знал о конкретной модели
Tool format различия¶
OpenAI: { "type": "function", "function": { "name": "...", "parameters": {...} } }
Claude: { "name": "...", "input_schema": {...} }
Файлы¶
- backend/src/ai/openai.service.ts → рефакторинг в абстракцию
- backend/src/ai/claude.service.ts — новый
- backend/src/ai/ai-provider.interface.ts — новый
- backend/src/narrator/narrator.runner.ts — использует абстракцию
HU Updated by Hardelele User about 3 hours ago
- Status changed from Новая to Решена
- % Done changed from 0 to 100
Claude API полностью интегрирован:
- ClaudeService (chat + chatWithToolsStream)
- AIProviderService абстракция (openai/claude)
- Конвертация messages/tools OpenAI→Claude
- Prompt caching + cost tracking
- Модели haiku/sonnet с динамическим роутингом в narrator runner
- Env: CLAUDE_API_KEY, AI_PROVIDER, AI_SWITCH_ALL
- @anthropic-ai/sdk v0.74.0
Actions