ai-llm
LLM интеграция: structured output (JSON), системные промпты, STT
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_KEY | API-ключ 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).