llm

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package llm содержит реализации LLMProvider и StreamingLLMProvider для внешних провайдеров.

Index

Constants

This section is empty.

Variables

View Source
var ErrTestStreaming = errors.New("test streaming error")

ErrTestStreaming — тестовая ошибка для streaming.

Functions

This section is empty.

Types

type ClaudeLLM

type ClaudeLLM struct {
	// contains filtered or unexported fields
}

ClaudeLLM реализует нативный клиент для Anthropic Messages API. @ds-task T1.2: Структура клиента и конструктор (DEC-001)

func NewClaudeLLM

func NewClaudeLLM(
	httpClient *http.Client,
	baseURL string,
	apiKey string,
	model string,
	anthropicVersion string,
	temperature *float64,
	maxTokens *int,
) *ClaudeLLM

NewClaudeLLM создаёт клиент для Anthropic Messages API. Если httpClient == nil, используется http.DefaultClient. Если model == "", используется defaultAnthropicModel. Если anthropicVersion == "", используется defaultAnthropicVersion.

func (*ClaudeLLM) Generate

func (c *ClaudeLLM) Generate(ctx context.Context, systemPrompt, userMessage string) (string, error)

Generate генерирует текстовый ответ на основе system и user сообщений. @ds-task T1.3: Generate реализация (AC-001, AC-002, AC-003)

func (*ClaudeLLM) GenerateStream

func (c *ClaudeLLM) GenerateStream(ctx context.Context, systemPrompt, userMessage string) (<-chan string, error)

GenerateStream генерирует ответ токен за токеном через SSE streaming. Возвращает канал для чтения текстовых чанков; канал закрывается при завершении или ошибке. @ds-task T2.2: GenerateStream реализация (AC-004)

type MockStreamingLLM

type MockStreamingLLM struct {
	// Tokens — токены, которые будут отправлены в канал
	Tokens []string
	// Delay — задержка между токенами
	Delay time.Duration
	// Err — ошибка, которую нужно вернуть при инициализации streaming'а
	Err error
	// GenerateErr — ошибка для синхронного Generate
	GenerateErr error
	// GenerateResult — результат для синхронного Generate
	GenerateResult string
}

MockStreamingLLM — мок-реализация StreamingLLMProvider для тестирования. Поддерживает controlled token emission, таймауты и ошибки.

@ds-task T3.2: Создать мок-реализацию StreamingLLMProvider (RQ-007)

func (*MockStreamingLLM) Generate

func (m *MockStreamingLLM) Generate(_ context.Context, _, _ string) (string, error)

Generate возвращает мок-результат или ошибку.

func (*MockStreamingLLM) GenerateStream

func (m *MockStreamingLLM) GenerateStream(ctx context.Context, _, _ string) (<-chan string, error)

GenerateStream возвращает канал с токенами и опциональную задержку.

type MockStreamingLLMWithCancel

type MockStreamingLLMWithCancel struct {
	Tokens []string
	Delay  time.Duration
}

MockStreamingLLMWithCancel — мок, который не закрывается до отмены контекста. Используется для тестирования обработки отмены контекста.

func (*MockStreamingLLMWithCancel) Generate

func (m *MockStreamingLLMWithCancel) Generate(_ context.Context, _, _ string) (string, error)

Generate возвращает пустую строку.

func (*MockStreamingLLMWithCancel) GenerateStream

func (m *MockStreamingLLMWithCancel) GenerateStream(ctx context.Context, _, _ string) (<-chan string, error)

GenerateStream возвращает канал, который не закрывается сам.

type NonStreamingLLM

type NonStreamingLLM struct {
	Result string
	Err    error
}

NonStreamingLLM — мок, который НЕ реализует StreamingLLMProvider. Используется для тестирования graceful degradation.

func (*NonStreamingLLM) Generate

func (m *NonStreamingLLM) Generate(_ context.Context, _, _ string) (string, error)

Generate возвращает мок-результат.

type OllamaLLM

type OllamaLLM struct {
	// contains filtered or unexported fields
}

OllamaLLM реализует LLMProvider для локального Ollama API. @ds-task T1.1: Структура клиента и конструктор (AC-001, DEC-001, DEC-003)

func NewOllamaLLM

func NewOllamaLLM(
	httpClient *http.Client,
	baseURL string,
	apiKey string,
	model string,
	temperature *float64,
	maxTokens *int,
) *OllamaLLM

NewOllamaLLM создаёт клиент для Ollama Chat API. Если httpClient == nil, используется http.DefaultClient. Если baseURL == "", используется ollamaDefaultBaseURL (http://localhost:11434). Если model == "", используется пустая строка (должна быть задана явно).

func (*OllamaLLM) Generate

func (o *OllamaLLM) Generate(ctx context.Context, systemPrompt, userMessage string) (string, error)

Generate генерирует текстовый ответ на основе system и user сообщений. @ds-task T2.1: Реализация Generate для Ollama Chat API (AC-001, AC-003, AC-004, AC-005, RQ-001, RQ-002, RQ-003, RQ-006, RQ-007)

type OpenAICompatibleResponsesLLM

type OpenAICompatibleResponsesLLM struct {
	// contains filtered or unexported fields
}

OpenAICompatibleResponsesLLM реализует минимальный OpenAI-compatible Responses API клиент.

func NewOpenAICompatibleResponsesLLM

func NewOpenAICompatibleResponsesLLM(
	httpClient *http.Client,
	baseURL string,
	apiKey string,
	model string,
	temperature *float64,
	maxOutputTokens *int,
) *OpenAICompatibleResponsesLLM

NewOpenAICompatibleResponsesLLM создаёт LLM-клиент для `POST /v1/responses`.

func (*OpenAICompatibleResponsesLLM) Generate

func (l *OpenAICompatibleResponsesLLM) Generate(ctx context.Context, systemPrompt, userMessage string) (string, error)

Generate генерирует текстовый ответ на основе system и user сообщений.

func (*OpenAICompatibleResponsesLLM) GenerateStream

func (l *OpenAICompatibleResponsesLLM) GenerateStream(ctx context.Context, systemPrompt, userMessage string) (<-chan string, error)

GenerateStream генерирует ответ токен за токеном через SSE streaming. Возвращает канал для чтения текстовых чанков; канал закрывается при завершении или ошибке.

@ds-task T2.1: Реализовать GenerateStream с SSE парсингом (AC-001, AC-003, AC-005, DEC-002) @ds-task T2.2: Обработка SSE edge cases (AC-005)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL