Project

General

Profile

Actions

Задача #24

open
HU

Эпик #23: Переключение модели и режимов поведения AI в чате

Backend: интеграция Claude API (Anthropic SDK)

Задача #24: Backend: интеграция Claude API (Anthropic SDK)

Added by Hardelele User about 8 hours ago. Updated about 3 hours ago.

Status:
Решена
Priority:
Нормальный
Assignee:
-
Start date:
02/16/2026
Due date:
% Done:

100%

Estimated time:

Description

Описание

Добавить поддержку Claude (Anthropic) как альтернативного AI-провайдера.

Что нужно

  1. Установить @anthropic-ai/sdk
  2. Создать ClaudeService (или расширить OpenAIService в AIProviderService):
    • chat() — простой запрос
    • chatWithToolsStream() — стриминг с tools + AbortSignal
    • Маппинг OpenAI tool format → Claude tool format (они отличаются)
  3. Конфигурация: ANTHROPIC_API_KEY в .env, модель по умолчанию claude-sonnet-4-5-20250929
  4. Абстракция: единый интерфейс 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 Actions #1

  • 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

Also available in: PDF Atom