Lets l-ai-steam mark inbound Steam chat requests the same way telegram_user_id already marks Telegram ones, so l-ai-core can gate AI tool calling on either signal. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
867 lines
29 KiB
Go
867 lines
29 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||
// versions:
|
||
// protoc-gen-go v1.36.11
|
||
// protoc v7.34.0
|
||
// source: ai.proto
|
||
|
||
package proto
|
||
|
||
import (
|
||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||
reflect "reflect"
|
||
sync "sync"
|
||
unsafe "unsafe"
|
||
)
|
||
|
||
const (
|
||
// Verify that this generated code is sufficiently up-to-date.
|
||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||
)
|
||
|
||
// AIRequest содержит запрос к AI модели
|
||
type AIRequest struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` // Текст запроса
|
||
BotUsername string `protobuf:"bytes,2,opt,name=bot_username,json=botUsername,proto3" json:"bot_username,omitempty"` // Username бота для упоминаний
|
||
ModelName string `protobuf:"bytes,3,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` // Название модели (по умолчанию "deepseek-v4-flash")
|
||
EnableReasoning bool `protobuf:"varint,4,opt,name=enable_reasoning,json=enableReasoning,proto3" json:"enable_reasoning,omitempty"` // Включить режим рассуждений (по умолчанию false)
|
||
GlobalUserId int64 `protobuf:"varint,5,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` // Global user ID для получения доп. данных (профиль, воспоминания)
|
||
Options *AnswerGenerationOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` // Дополнительные опции генерации ответа
|
||
TelegramUserId int64 `protobuf:"varint,7,opt,name=telegram_user_id,json=telegramUserId,proto3" json:"telegram_user_id,omitempty"` // Telegram user ID для применения пользовательских настроек (стиль ответа)
|
||
SteamUserId int64 `protobuf:"varint,8,opt,name=steam_user_id,json=steamUserId,proto3" json:"steam_user_id,omitempty"` // SteamID64 отправителя для живых Steam-диалогов (l-ai-steam) - тот же "сигнал живого чата", что telegram_user_id, для второй платформы
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *AIRequest) Reset() {
|
||
*x = AIRequest{}
|
||
mi := &file_ai_proto_msgTypes[0]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *AIRequest) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*AIRequest) ProtoMessage() {}
|
||
|
||
func (x *AIRequest) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[0]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use AIRequest.ProtoReflect.Descriptor instead.
|
||
func (*AIRequest) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{0}
|
||
}
|
||
|
||
func (x *AIRequest) GetText() string {
|
||
if x != nil {
|
||
return x.Text
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AIRequest) GetBotUsername() string {
|
||
if x != nil {
|
||
return x.BotUsername
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AIRequest) GetModelName() string {
|
||
if x != nil {
|
||
return x.ModelName
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AIRequest) GetEnableReasoning() bool {
|
||
if x != nil {
|
||
return x.EnableReasoning
|
||
}
|
||
return false
|
||
}
|
||
|
||
func (x *AIRequest) GetGlobalUserId() int64 {
|
||
if x != nil {
|
||
return x.GlobalUserId
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func (x *AIRequest) GetOptions() *AnswerGenerationOptions {
|
||
if x != nil {
|
||
return x.Options
|
||
}
|
||
return nil
|
||
}
|
||
|
||
func (x *AIRequest) GetTelegramUserId() int64 {
|
||
if x != nil {
|
||
return x.TelegramUserId
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func (x *AIRequest) GetSteamUserId() int64 {
|
||
if x != nil {
|
||
return x.SteamUserId
|
||
}
|
||
return 0
|
||
}
|
||
|
||
// AnswerGenerationOptions содержит дополнительные опции для генерации ответа
|
||
type AnswerGenerationOptions struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
IncludeUserMemories bool `protobuf:"varint,1,opt,name=include_user_memories,json=includeUserMemories,proto3" json:"include_user_memories,omitempty"` // Включить воспоминания о пользователе в промпт
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *AnswerGenerationOptions) Reset() {
|
||
*x = AnswerGenerationOptions{}
|
||
mi := &file_ai_proto_msgTypes[1]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *AnswerGenerationOptions) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*AnswerGenerationOptions) ProtoMessage() {}
|
||
|
||
func (x *AnswerGenerationOptions) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[1]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use AnswerGenerationOptions.ProtoReflect.Descriptor instead.
|
||
func (*AnswerGenerationOptions) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{1}
|
||
}
|
||
|
||
func (x *AnswerGenerationOptions) GetIncludeUserMemories() bool {
|
||
if x != nil {
|
||
return x.IncludeUserMemories
|
||
}
|
||
return false
|
||
}
|
||
|
||
// AIResponse содержит ответ от AI модели
|
||
type AIResponse struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` // Текст ответа
|
||
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // Текст ошибки, если произошла
|
||
DurationMs float64 `protobuf:"fixed64,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` // Время выполнения в миллисекундах
|
||
ReasoningContent string `protobuf:"bytes,4,opt,name=reasoning_content,json=reasoningContent,proto3" json:"reasoning_content,omitempty"` // Текст рассуждений (если включён режим reasoning)
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *AIResponse) Reset() {
|
||
*x = AIResponse{}
|
||
mi := &file_ai_proto_msgTypes[2]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *AIResponse) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*AIResponse) ProtoMessage() {}
|
||
|
||
func (x *AIResponse) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[2]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use AIResponse.ProtoReflect.Descriptor instead.
|
||
func (*AIResponse) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{2}
|
||
}
|
||
|
||
func (x *AIResponse) GetContent() string {
|
||
if x != nil {
|
||
return x.Content
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AIResponse) GetError() string {
|
||
if x != nil {
|
||
return x.Error
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AIResponse) GetDurationMs() float64 {
|
||
if x != nil {
|
||
return x.DurationMs
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func (x *AIResponse) GetReasoningContent() string {
|
||
if x != nil {
|
||
return x.ReasoningContent
|
||
}
|
||
return ""
|
||
}
|
||
|
||
// CreateSessionRequest для создания новой AI сессии
|
||
type CreateSessionRequest struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // Идентификатор пользователя
|
||
BotUsername string `protobuf:"bytes,2,opt,name=bot_username,json=botUsername,proto3" json:"bot_username,omitempty"` // Username бота для упоминаний
|
||
ModelName string `protobuf:"bytes,3,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` // Название модели (по умолчанию "deepseek-v4-flash")
|
||
TtlSeconds int64 `protobuf:"varint,4,opt,name=ttl_seconds,json=ttlSeconds,proto3" json:"ttl_seconds,omitempty"` // Время жизни сессии в секундах (по умолчанию 3600 = 1 час)
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *CreateSessionRequest) Reset() {
|
||
*x = CreateSessionRequest{}
|
||
mi := &file_ai_proto_msgTypes[3]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *CreateSessionRequest) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*CreateSessionRequest) ProtoMessage() {}
|
||
|
||
func (x *CreateSessionRequest) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[3]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use CreateSessionRequest.ProtoReflect.Descriptor instead.
|
||
func (*CreateSessionRequest) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{3}
|
||
}
|
||
|
||
func (x *CreateSessionRequest) GetUserId() string {
|
||
if x != nil {
|
||
return x.UserId
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *CreateSessionRequest) GetBotUsername() string {
|
||
if x != nil {
|
||
return x.BotUsername
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *CreateSessionRequest) GetModelName() string {
|
||
if x != nil {
|
||
return x.ModelName
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *CreateSessionRequest) GetTtlSeconds() int64 {
|
||
if x != nil {
|
||
return x.TtlSeconds
|
||
}
|
||
return 0
|
||
}
|
||
|
||
// CreateSessionResponse содержит ID созданной сессии
|
||
type CreateSessionResponse struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // ID сессии
|
||
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Статус сессии
|
||
Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` // Текст ошибки, если произошла
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *CreateSessionResponse) Reset() {
|
||
*x = CreateSessionResponse{}
|
||
mi := &file_ai_proto_msgTypes[4]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *CreateSessionResponse) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*CreateSessionResponse) ProtoMessage() {}
|
||
|
||
func (x *CreateSessionResponse) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[4]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use CreateSessionResponse.ProtoReflect.Descriptor instead.
|
||
func (*CreateSessionResponse) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{4}
|
||
}
|
||
|
||
func (x *CreateSessionResponse) GetSessionId() string {
|
||
if x != nil {
|
||
return x.SessionId
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *CreateSessionResponse) GetStatus() string {
|
||
if x != nil {
|
||
return x.Status
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *CreateSessionResponse) GetError() string {
|
||
if x != nil {
|
||
return x.Error
|
||
}
|
||
return ""
|
||
}
|
||
|
||
// AskInSessionRequest для запроса в рамках сессии
|
||
type AskInSessionRequest struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // ID сессии
|
||
Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` // Текст запроса
|
||
EnableReasoning bool `protobuf:"varint,3,opt,name=enable_reasoning,json=enableReasoning,proto3" json:"enable_reasoning,omitempty"` // Включить режим рассуждений (по умолчанию false)
|
||
GlobalUserId int64 `protobuf:"varint,4,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` // Global user ID для получения воспоминаний
|
||
Options *AnswerGenerationOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` // Дополнительные опции генерации
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *AskInSessionRequest) Reset() {
|
||
*x = AskInSessionRequest{}
|
||
mi := &file_ai_proto_msgTypes[5]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *AskInSessionRequest) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*AskInSessionRequest) ProtoMessage() {}
|
||
|
||
func (x *AskInSessionRequest) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[5]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use AskInSessionRequest.ProtoReflect.Descriptor instead.
|
||
func (*AskInSessionRequest) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{5}
|
||
}
|
||
|
||
func (x *AskInSessionRequest) GetSessionId() string {
|
||
if x != nil {
|
||
return x.SessionId
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AskInSessionRequest) GetText() string {
|
||
if x != nil {
|
||
return x.Text
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *AskInSessionRequest) GetEnableReasoning() bool {
|
||
if x != nil {
|
||
return x.EnableReasoning
|
||
}
|
||
return false
|
||
}
|
||
|
||
func (x *AskInSessionRequest) GetGlobalUserId() int64 {
|
||
if x != nil {
|
||
return x.GlobalUserId
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func (x *AskInSessionRequest) GetOptions() *AnswerGenerationOptions {
|
||
if x != nil {
|
||
return x.Options
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// SessionStatusResponse содержит статус сессии и ответ AI
|
||
type SessionStatusResponse struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // ID сессии
|
||
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // Статус сессии (active, expired, closed)
|
||
Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // Текст ответа от AI
|
||
Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` // Текст ошибки, если произошла
|
||
DurationMs float64 `protobuf:"fixed64,5,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` // Время выполнения в миллисекундах
|
||
ReasoningContent string `protobuf:"bytes,6,opt,name=reasoning_content,json=reasoningContent,proto3" json:"reasoning_content,omitempty"` // Текст рассуждений (если включён режим reasoning)
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *SessionStatusResponse) Reset() {
|
||
*x = SessionStatusResponse{}
|
||
mi := &file_ai_proto_msgTypes[6]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *SessionStatusResponse) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*SessionStatusResponse) ProtoMessage() {}
|
||
|
||
func (x *SessionStatusResponse) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[6]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use SessionStatusResponse.ProtoReflect.Descriptor instead.
|
||
func (*SessionStatusResponse) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{6}
|
||
}
|
||
|
||
func (x *SessionStatusResponse) GetSessionId() string {
|
||
if x != nil {
|
||
return x.SessionId
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *SessionStatusResponse) GetStatus() string {
|
||
if x != nil {
|
||
return x.Status
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *SessionStatusResponse) GetContent() string {
|
||
if x != nil {
|
||
return x.Content
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *SessionStatusResponse) GetError() string {
|
||
if x != nil {
|
||
return x.Error
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *SessionStatusResponse) GetDurationMs() float64 {
|
||
if x != nil {
|
||
return x.DurationMs
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func (x *SessionStatusResponse) GetReasoningContent() string {
|
||
if x != nil {
|
||
return x.ReasoningContent
|
||
}
|
||
return ""
|
||
}
|
||
|
||
// StatelessMessage одно сообщение для stateless запроса (role + content)
|
||
type StatelessMessage struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` // "system", "user", "assistant"
|
||
Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` // Текст сообщения
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *StatelessMessage) Reset() {
|
||
*x = StatelessMessage{}
|
||
mi := &file_ai_proto_msgTypes[7]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *StatelessMessage) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*StatelessMessage) ProtoMessage() {}
|
||
|
||
func (x *StatelessMessage) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[7]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use StatelessMessage.ProtoReflect.Descriptor instead.
|
||
func (*StatelessMessage) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{7}
|
||
}
|
||
|
||
func (x *StatelessMessage) GetRole() string {
|
||
if x != nil {
|
||
return x.Role
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (x *StatelessMessage) GetContent() string {
|
||
if x != nil {
|
||
return x.Content
|
||
}
|
||
return ""
|
||
}
|
||
|
||
// StatelessRequest для stateless генерации с полным контролем над messages
|
||
type StatelessRequest struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
Messages []*StatelessMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` // Массив сообщений (system + history + user)
|
||
ModelName string `protobuf:"bytes,2,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` // Название модели (по умолчанию "deepseek-v4-flash")
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *StatelessRequest) Reset() {
|
||
*x = StatelessRequest{}
|
||
mi := &file_ai_proto_msgTypes[8]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *StatelessRequest) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*StatelessRequest) ProtoMessage() {}
|
||
|
||
func (x *StatelessRequest) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[8]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use StatelessRequest.ProtoReflect.Descriptor instead.
|
||
func (*StatelessRequest) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{8}
|
||
}
|
||
|
||
func (x *StatelessRequest) GetMessages() []*StatelessMessage {
|
||
if x != nil {
|
||
return x.Messages
|
||
}
|
||
return nil
|
||
}
|
||
|
||
func (x *StatelessRequest) GetModelName() string {
|
||
if x != nil {
|
||
return x.ModelName
|
||
}
|
||
return ""
|
||
}
|
||
|
||
// HealthCheckRequest для проверки здоровья сервиса
|
||
type HealthCheckRequest struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *HealthCheckRequest) Reset() {
|
||
*x = HealthCheckRequest{}
|
||
mi := &file_ai_proto_msgTypes[9]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *HealthCheckRequest) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*HealthCheckRequest) ProtoMessage() {}
|
||
|
||
func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[9]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
|
||
func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{9}
|
||
}
|
||
|
||
// HealthCheckResponse для ответа на проверку здоровья
|
||
type HealthCheckResponse struct {
|
||
state protoimpl.MessageState `protogen:"open.v1"`
|
||
Serving bool `protobuf:"varint,1,opt,name=serving,proto3" json:"serving,omitempty"`
|
||
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
|
||
unknownFields protoimpl.UnknownFields
|
||
sizeCache protoimpl.SizeCache
|
||
}
|
||
|
||
func (x *HealthCheckResponse) Reset() {
|
||
*x = HealthCheckResponse{}
|
||
mi := &file_ai_proto_msgTypes[10]
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
|
||
func (x *HealthCheckResponse) String() string {
|
||
return protoimpl.X.MessageStringOf(x)
|
||
}
|
||
|
||
func (*HealthCheckResponse) ProtoMessage() {}
|
||
|
||
func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message {
|
||
mi := &file_ai_proto_msgTypes[10]
|
||
if x != nil {
|
||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||
if ms.LoadMessageInfo() == nil {
|
||
ms.StoreMessageInfo(mi)
|
||
}
|
||
return ms
|
||
}
|
||
return mi.MessageOf(x)
|
||
}
|
||
|
||
// Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead.
|
||
func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
|
||
return file_ai_proto_rawDescGZIP(), []int{10}
|
||
}
|
||
|
||
func (x *HealthCheckResponse) GetServing() bool {
|
||
if x != nil {
|
||
return x.Serving
|
||
}
|
||
return false
|
||
}
|
||
|
||
func (x *HealthCheckResponse) GetVersion() string {
|
||
if x != nil {
|
||
return x.Version
|
||
}
|
||
return ""
|
||
}
|
||
|
||
var File_ai_proto protoreflect.FileDescriptor
|
||
|
||
const file_ai_proto_rawDesc = "" +
|
||
"\n" +
|
||
"\bai.proto\x12\x02ai\"\xb7\x02\n" +
|
||
"\tAIRequest\x12\x12\n" +
|
||
"\x04text\x18\x01 \x01(\tR\x04text\x12!\n" +
|
||
"\fbot_username\x18\x02 \x01(\tR\vbotUsername\x12\x1d\n" +
|
||
"\n" +
|
||
"model_name\x18\x03 \x01(\tR\tmodelName\x12)\n" +
|
||
"\x10enable_reasoning\x18\x04 \x01(\bR\x0fenableReasoning\x12$\n" +
|
||
"\x0eglobal_user_id\x18\x05 \x01(\x03R\fglobalUserId\x125\n" +
|
||
"\aoptions\x18\x06 \x01(\v2\x1b.ai.AnswerGenerationOptionsR\aoptions\x12(\n" +
|
||
"\x10telegram_user_id\x18\a \x01(\x03R\x0etelegramUserId\x12\"\n" +
|
||
"\rsteam_user_id\x18\b \x01(\x03R\vsteamUserId\"M\n" +
|
||
"\x17AnswerGenerationOptions\x122\n" +
|
||
"\x15include_user_memories\x18\x01 \x01(\bR\x13includeUserMemories\"\x8a\x01\n" +
|
||
"\n" +
|
||
"AIResponse\x12\x18\n" +
|
||
"\acontent\x18\x01 \x01(\tR\acontent\x12\x14\n" +
|
||
"\x05error\x18\x02 \x01(\tR\x05error\x12\x1f\n" +
|
||
"\vduration_ms\x18\x03 \x01(\x01R\n" +
|
||
"durationMs\x12+\n" +
|
||
"\x11reasoning_content\x18\x04 \x01(\tR\x10reasoningContent\"\x92\x01\n" +
|
||
"\x14CreateSessionRequest\x12\x17\n" +
|
||
"\auser_id\x18\x01 \x01(\tR\x06userId\x12!\n" +
|
||
"\fbot_username\x18\x02 \x01(\tR\vbotUsername\x12\x1d\n" +
|
||
"\n" +
|
||
"model_name\x18\x03 \x01(\tR\tmodelName\x12\x1f\n" +
|
||
"\vttl_seconds\x18\x04 \x01(\x03R\n" +
|
||
"ttlSeconds\"d\n" +
|
||
"\x15CreateSessionResponse\x12\x1d\n" +
|
||
"\n" +
|
||
"session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" +
|
||
"\x06status\x18\x02 \x01(\tR\x06status\x12\x14\n" +
|
||
"\x05error\x18\x03 \x01(\tR\x05error\"\xd0\x01\n" +
|
||
"\x13AskInSessionRequest\x12\x1d\n" +
|
||
"\n" +
|
||
"session_id\x18\x01 \x01(\tR\tsessionId\x12\x12\n" +
|
||
"\x04text\x18\x02 \x01(\tR\x04text\x12)\n" +
|
||
"\x10enable_reasoning\x18\x03 \x01(\bR\x0fenableReasoning\x12$\n" +
|
||
"\x0eglobal_user_id\x18\x04 \x01(\x03R\fglobalUserId\x125\n" +
|
||
"\aoptions\x18\x05 \x01(\v2\x1b.ai.AnswerGenerationOptionsR\aoptions\"\xcc\x01\n" +
|
||
"\x15SessionStatusResponse\x12\x1d\n" +
|
||
"\n" +
|
||
"session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" +
|
||
"\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" +
|
||
"\acontent\x18\x03 \x01(\tR\acontent\x12\x14\n" +
|
||
"\x05error\x18\x04 \x01(\tR\x05error\x12\x1f\n" +
|
||
"\vduration_ms\x18\x05 \x01(\x01R\n" +
|
||
"durationMs\x12+\n" +
|
||
"\x11reasoning_content\x18\x06 \x01(\tR\x10reasoningContent\"@\n" +
|
||
"\x10StatelessMessage\x12\x12\n" +
|
||
"\x04role\x18\x01 \x01(\tR\x04role\x12\x18\n" +
|
||
"\acontent\x18\x02 \x01(\tR\acontent\"c\n" +
|
||
"\x10StatelessRequest\x120\n" +
|
||
"\bmessages\x18\x01 \x03(\v2\x14.ai.StatelessMessageR\bmessages\x12\x1d\n" +
|
||
"\n" +
|
||
"model_name\x18\x02 \x01(\tR\tmodelName\"\x14\n" +
|
||
"\x12HealthCheckRequest\"I\n" +
|
||
"\x13HealthCheckResponse\x12\x18\n" +
|
||
"\aserving\x18\x01 \x01(\bR\aserving\x12\x18\n" +
|
||
"\aversion\x18\x02 \x01(\tR\aversion2\xc1\x02\n" +
|
||
"\tAIService\x12/\n" +
|
||
"\x0eGenerateAnswer\x12\r.ai.AIRequest\x1a\x0e.ai.AIResponse\x129\n" +
|
||
"\x11GenerateStateless\x12\x14.ai.StatelessRequest\x1a\x0e.ai.AIResponse\x12>\n" +
|
||
"\vHealthCheck\x12\x16.ai.HealthCheckRequest\x1a\x17.ai.HealthCheckResponse\x12D\n" +
|
||
"\rCreateSession\x12\x18.ai.CreateSessionRequest\x1a\x19.ai.CreateSessionResponse\x12B\n" +
|
||
"\fAskInSession\x12\x17.ai.AskInSessionRequest\x1a\x19.ai.SessionStatusResponseB,Z*git.be.kaien.ru/l-ai/l-ai-core-proto/protob\x06proto3"
|
||
|
||
var (
|
||
file_ai_proto_rawDescOnce sync.Once
|
||
file_ai_proto_rawDescData []byte
|
||
)
|
||
|
||
func file_ai_proto_rawDescGZIP() []byte {
|
||
file_ai_proto_rawDescOnce.Do(func() {
|
||
file_ai_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ai_proto_rawDesc), len(file_ai_proto_rawDesc)))
|
||
})
|
||
return file_ai_proto_rawDescData
|
||
}
|
||
|
||
var file_ai_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
|
||
var file_ai_proto_goTypes = []any{
|
||
(*AIRequest)(nil), // 0: ai.AIRequest
|
||
(*AnswerGenerationOptions)(nil), // 1: ai.AnswerGenerationOptions
|
||
(*AIResponse)(nil), // 2: ai.AIResponse
|
||
(*CreateSessionRequest)(nil), // 3: ai.CreateSessionRequest
|
||
(*CreateSessionResponse)(nil), // 4: ai.CreateSessionResponse
|
||
(*AskInSessionRequest)(nil), // 5: ai.AskInSessionRequest
|
||
(*SessionStatusResponse)(nil), // 6: ai.SessionStatusResponse
|
||
(*StatelessMessage)(nil), // 7: ai.StatelessMessage
|
||
(*StatelessRequest)(nil), // 8: ai.StatelessRequest
|
||
(*HealthCheckRequest)(nil), // 9: ai.HealthCheckRequest
|
||
(*HealthCheckResponse)(nil), // 10: ai.HealthCheckResponse
|
||
}
|
||
var file_ai_proto_depIdxs = []int32{
|
||
1, // 0: ai.AIRequest.options:type_name -> ai.AnswerGenerationOptions
|
||
1, // 1: ai.AskInSessionRequest.options:type_name -> ai.AnswerGenerationOptions
|
||
7, // 2: ai.StatelessRequest.messages:type_name -> ai.StatelessMessage
|
||
0, // 3: ai.AIService.GenerateAnswer:input_type -> ai.AIRequest
|
||
8, // 4: ai.AIService.GenerateStateless:input_type -> ai.StatelessRequest
|
||
9, // 5: ai.AIService.HealthCheck:input_type -> ai.HealthCheckRequest
|
||
3, // 6: ai.AIService.CreateSession:input_type -> ai.CreateSessionRequest
|
||
5, // 7: ai.AIService.AskInSession:input_type -> ai.AskInSessionRequest
|
||
2, // 8: ai.AIService.GenerateAnswer:output_type -> ai.AIResponse
|
||
2, // 9: ai.AIService.GenerateStateless:output_type -> ai.AIResponse
|
||
10, // 10: ai.AIService.HealthCheck:output_type -> ai.HealthCheckResponse
|
||
4, // 11: ai.AIService.CreateSession:output_type -> ai.CreateSessionResponse
|
||
6, // 12: ai.AIService.AskInSession:output_type -> ai.SessionStatusResponse
|
||
8, // [8:13] is the sub-list for method output_type
|
||
3, // [3:8] is the sub-list for method input_type
|
||
3, // [3:3] is the sub-list for extension type_name
|
||
3, // [3:3] is the sub-list for extension extendee
|
||
0, // [0:3] is the sub-list for field type_name
|
||
}
|
||
|
||
func init() { file_ai_proto_init() }
|
||
func file_ai_proto_init() {
|
||
if File_ai_proto != nil {
|
||
return
|
||
}
|
||
type x struct{}
|
||
out := protoimpl.TypeBuilder{
|
||
File: protoimpl.DescBuilder{
|
||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_ai_proto_rawDesc), len(file_ai_proto_rawDesc)),
|
||
NumEnums: 0,
|
||
NumMessages: 11,
|
||
NumExtensions: 0,
|
||
NumServices: 1,
|
||
},
|
||
GoTypes: file_ai_proto_goTypes,
|
||
DependencyIndexes: file_ai_proto_depIdxs,
|
||
MessageInfos: file_ai_proto_msgTypes,
|
||
}.Build()
|
||
File_ai_proto = out.File
|
||
file_ai_proto_goTypes = nil
|
||
file_ai_proto_depIdxs = nil
|
||
}
|