ai-llm

LLM интеграция: structured output (JSON), системные промпты, STT

Code
Source: magicreek
Files: 2
Stack:
Claude SDKWhisper APITypeScript

Specification

ai-llm

Назначение

Абстракция для работы с LLM-провайдерами: structured output (JSON), системные промпты, STT (speech-to-text).

Контракты

LLM-клиент

// Singleton-паттерн для инициализации клиента
function getClient(): LLMClient

// Типы для structured output
interface AnalysisInput {
  index: number;
  senderName: string;
  text: string;
  mediaDescriptions: string[];
}

interface ExtractedIssue {
  title: string;
  description: string;
  type: "bug" | "feature" | "improvement";
  priority: "low" | "medium" | "high" | "critical";
  steps_to_reproduce?: string;
  related_message_indices: number[];
  media_references: string[];
}

interface AnalysisResult {
  issues: ExtractedIssue[];
  raw: string;
}

// Основная функция
async function analyzeFeedback(
  messages: AnalysisInput[],
  projectName: string
): Promise<AnalysisResult>

**Паттерн structured output**: системный промпт задаёт JSON-формат → модель отвечает JSON → парсинг с fallback на извлечение JSON из markdown code blocks.

STT (Speech-to-Text)

async function transcribe(
  audioBuffer: Buffer,
  language?: string  // default: "ru"
): Promise<string>

Конфигурация

ПеременнаяОписание

|-----------|----------|

LLM_PROVIDERПровайдер LLM (claude, openai)
STT_PROVIDERПровайдер STT (whisper-api, deepgram)
STT_API_KEYAPI-ключ STT-провайдера

Зависимости

@anthropic-ai/sdk (для Claude)
openai (для Whisper STT)

Реализации

СтекПутьИсточникСтатус

|------|------|----------|--------|

Claude + Whisper (TypeScript)implementations/claude-sdk/magicreekпроверен

Адаптация

**Системный промпт** — заменить ANALYSIS_PROMPT на свой use-case (анализ, классификация, генерация).
**Типы ExtractedIssue** — заменить на свои типы structured output.
**Модель** — изменить model в messages.create() (claude-sonnet-4-20250514, claude-opus-4 и т.д.).
**Язык STT** — изменить default language в transcribe().
**Провайдер** — паттерн singleton позволяет заменить SDK на другой провайдер (OpenAI, Gemini).