// Package domain содержит бизнес-сущности и интерфейсы (порты) приложения. package domain // LLMRequest содержит параметры запроса к Large Language Model. type LLMRequest struct { // Model идентифицирует конкретную модель LLM для использования. Model string // Messages содержит историю диалога (system, user, assistant). Messages []LLMMessage // Temperature контролирует случайность генерации (0.0 - 2.0). Temperature float64 // MaxTokens ограничивает максимальное количество токенов в ответе. MaxTokens int // TopP используется для nucleus sampling. TopP float64 // FrequencyPenalty штрафует повторяющиеся токены. FrequencyPenalty float64 // PresencePenalty штрафует уже встречавшиеся токены. PresencePenalty float64 } // LLMMessage представляет одно сообщение в диалоге. type LLMMessage struct { // Role: "system", "user", или "assistant". Role string // Content текстовое содержимое сообщения. Content string } // LLMResponse содержит результат от LLM сервиса. type LLMResponse struct { // ID уникальный идентификатор запроса. ID string // Model использованная модель. Model string // Choices варианты ответов от модели. Choices []LLMChoice // Usage статистика использования токенов. Usage LLMUsage } // LLMChoice представляет один вариант ответа. type LLMChoice struct { // Index порядковый номер варианта. Index int // Message содержимое ответа. Message LLMMessage // FinishReason причина завершения: "stop", "length", "content_filter". FinishReason string } // LLMUsage содержит статистику использования токенов. type LLMUsage struct { // PromptTokens количество токенов в запросе. PromptTokens int // CompletionTokens количество токенов в ответе. CompletionTokens int // TotalTokens общее количество токенов. TotalTokens int }