syntax = "proto3"; package ai; option go_package = "git.be.kaien.ru/l-ai/l-ai-core-proto/proto"; // AIRequest содержит запрос к AI модели message AIRequest { string text = 1; // Текст запроса string bot_username = 2; // Username бота для упоминаний string model_name = 3; // Название модели (по умолчанию "venice-uncensored") bool enable_reasoning = 4; // Включить режим рассуждений (по умолчанию false) int64 global_user_id = 5; // Global user ID для получения доп. данных (профиль, воспоминания) AnswerGenerationOptions options = 6; // Дополнительные опции генерации ответа } // AnswerGenerationOptions содержит дополнительные опции для генерации ответа message AnswerGenerationOptions { bool include_user_memories = 1; // Включить воспоминания о пользователе в промпт } // AIResponse содержит ответ от AI модели message AIResponse { string content = 1; // Текст ответа string error = 2; // Текст ошибки, если произошла double duration_ms = 3; // Время выполнения в миллисекундах string reasoning_content = 4; // Текст рассуждений (если включён режим reasoning) } // CreateSessionRequest для создания новой AI сессии message CreateSessionRequest { string user_id = 1; // Идентификатор пользователя string bot_username = 2; // Username бота для упоминаний string model_name = 3; // Название модели (по умолчанию "venice-uncensored") int64 ttl_seconds = 4; // Время жизни сессии в секундах (по умолчанию 3600 = 1 час) } // CreateSessionResponse содержит ID созданной сессии message CreateSessionResponse { string session_id = 1; // ID сессии string status = 2; // Статус сессии string error = 3; // Текст ошибки, если произошла } // AskInSessionRequest для запроса в рамках сессии message AskInSessionRequest { string session_id = 1; // ID сессии string text = 2; // Текст запроса bool enable_reasoning = 3; // Включить режим рассуждений (по умолчанию false) int64 global_user_id = 4; // Global user ID для получения воспоминаний AnswerGenerationOptions options = 5; // Дополнительные опции генерации } // SessionStatusResponse содержит статус сессии и ответ AI message SessionStatusResponse { string session_id = 1; // ID сессии string status = 2; // Статус сессии (active, expired, closed) string content = 3; // Текст ответа от AI string error = 4; // Текст ошибки, если произошла double duration_ms = 5; // Время выполнения в миллисекундах string reasoning_content = 6; // Текст рассуждений (если включён режим reasoning) } // HealthCheckRequest для проверки здоровья сервиса message HealthCheckRequest {} // HealthCheckResponse для ответа на проверку здоровья message HealthCheckResponse { bool serving = 1; string version = 2; } // AIService - основной сервис для работы с AI service AIService { // GenerateAnswer генерирует ответ на запрос rpc GenerateAnswer(AIRequest) returns (AIResponse); // HealthCheck проверяет здоровье сервиса rpc HealthCheck(HealthCheckRequest) returns (HealthCheckResponse); // CreateSession созда новую AI сессию rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse); // AskInSession отправляет запрос в рамках существующей сессии rpc AskInSession(AskInSessionRequest) returns (SessionStatusResponse); }