228 lines
8.2 KiB
Protocol Buffer
228 lines
8.2 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
package memory;
|
||
|
||
option go_package = "git.be.kaien.ru/l-ai/l-ai-memories/proto";
|
||
|
||
// Memory представляет воспоминание о пользователе
|
||
message Memory {
|
||
int64 id = 1;
|
||
int64 user_id = 2;
|
||
string username = 3;
|
||
string key = 4; // Уникальный ключ факта
|
||
string value = 5; // Значение факта
|
||
string category = 6; // preference, fact, personality, relationship
|
||
string priority = 7; // core, normal
|
||
double confidence = 8; // 0.0 - 1.0
|
||
repeated string tags = 9;
|
||
string source = 10;
|
||
int64 created_at = 11;
|
||
int64 updated_at = 12;
|
||
}
|
||
|
||
// StoreMemoryRequest запрос на сохранение воспоминания
|
||
message StoreMemoryRequest {
|
||
int64 user_id = 1;
|
||
string username = 2;
|
||
string message = 3;
|
||
string key = 4;
|
||
string value = 5;
|
||
string category = 6;
|
||
string priority = 7;
|
||
double confidence = 8;
|
||
repeated string tags = 9;
|
||
string source = 10;
|
||
}
|
||
|
||
// StoreMemoryResponse ответ на сохранение воспоминания
|
||
message StoreMemoryResponse {
|
||
bool success = 1;
|
||
string error = 2;
|
||
int64 memory_id = 3;
|
||
}
|
||
|
||
// GetMemoriesRequest запрос на получение воспоминаний
|
||
message GetMemoriesRequest {
|
||
int64 user_id = 1;
|
||
string username = 2;
|
||
repeated string tags = 3;
|
||
string search_query = 4;
|
||
int32 limit = 5;
|
||
}
|
||
|
||
// GetMemoriesResponse ответ с воспоминаниями
|
||
message GetMemoriesResponse {
|
||
repeated Memory memories = 1;
|
||
}
|
||
|
||
// ProcessMessageRequest запрос на обработку сообщения для извлечения фактов
|
||
message ProcessMessageRequest {
|
||
int64 user_id = 1;
|
||
string username = 2;
|
||
string message = 3;
|
||
string context = 4;
|
||
}
|
||
|
||
// ProcessMessageResponse ответ с извлечёнными фактами
|
||
message ProcessMessageResponse {
|
||
bool success = 1;
|
||
string error = 2;
|
||
int32 facts_extracted = 3;
|
||
}
|
||
|
||
// HealthCheckRequest для проверки здоровья сервиса
|
||
message HealthCheckRequest {}
|
||
|
||
// HealthCheckResponse для ответа на проверку здоровья
|
||
message HealthCheckResponse {
|
||
bool serving = 1;
|
||
string version = 2;
|
||
}
|
||
|
||
// GetRelevantMemoriesRequest запрос на получение релевантных воспоминаний
|
||
message GetRelevantMemoriesRequest {
|
||
int64 user_id = 1;
|
||
string username = 2;
|
||
string current_message = 3; // Для генерации тегов
|
||
int32 limit = 4;
|
||
}
|
||
|
||
// GetRelevantMemoriesResponse ответ с релевантными воспоминаниями
|
||
message GetRelevantMemoriesResponse {
|
||
repeated Memory memories = 1;
|
||
string formatted_prompt = 2; // Готовый блок для вставки в промпт
|
||
}
|
||
|
||
// GetMemoriesByUserRequest запрос на получение всех воспоминаний пользователя
|
||
message GetMemoriesByUserRequest {
|
||
int64 user_id = 1;
|
||
string username = 2;
|
||
}
|
||
|
||
// GetMemoriesByUserResponse ответ с воспоминаниями пользователя
|
||
message GetMemoriesByUserResponse {
|
||
repeated Memory memories = 1;
|
||
}
|
||
|
||
// BulkRefreshRequest запрос на массовую обработку сообщений
|
||
message BulkRefreshRequest {
|
||
int64 user_id = 1;
|
||
string username = 2;
|
||
repeated string messages = 3; // Список сообщений для обработки
|
||
}
|
||
|
||
// BulkRefreshResponse ответ с результатами массовой обработки
|
||
message BulkRefreshResponse {
|
||
bool success = 1;
|
||
string error = 2;
|
||
int32 messages_processed = 3;
|
||
int32 facts_extracted = 4;
|
||
int32 batch_count = 5;
|
||
}
|
||
|
||
// DeleteMemoryRequest запрос на удаление воспоминания
|
||
message DeleteMemoryRequest {
|
||
int64 memory_id = 1;
|
||
}
|
||
|
||
// DeleteMemoryResponse ответ на удаление воспоминания
|
||
message DeleteMemoryResponse {
|
||
bool success = 1;
|
||
string error = 2;
|
||
}
|
||
|
||
// GetMemoriesForReviewRequest запрос воспоминаний для опроса-проверки.
|
||
// Возвращает воспоминания с наименьшим confidence, которые давно не проверялись,
|
||
// и сразу помечает их как отправленные на проверку (last_polled_at).
|
||
message GetMemoriesForReviewRequest {
|
||
int32 limit = 1;
|
||
int32 cooldown_days = 2; // Не возвращать воспоминания, проверенные менее N дней назад (по умолчанию 14)
|
||
}
|
||
|
||
// GetMemoriesForReviewResponse ответ с воспоминаниями для проверки
|
||
message GetMemoriesForReviewResponse {
|
||
repeated Memory memories = 1;
|
||
}
|
||
|
||
// MemoryPoll представляет отправленный в чат опрос-проверку памяти
|
||
message MemoryPoll {
|
||
int64 id = 1;
|
||
int64 chat_id = 2;
|
||
int64 message_id = 3;
|
||
repeated int64 memory_ids = 4; // Порядок соответствует вариантам опроса
|
||
int64 evaluate_after = 5; // Unix time, когда пора подводить итоги
|
||
}
|
||
|
||
// RegisterMemoryPollRequest запрос на регистрацию отправленного опроса
|
||
message RegisterMemoryPollRequest {
|
||
int64 chat_id = 1;
|
||
int64 message_id = 2;
|
||
repeated int64 memory_ids = 3;
|
||
int64 evaluate_after = 4;
|
||
}
|
||
|
||
// RegisterMemoryPollResponse ответ на регистрацию опроса
|
||
message RegisterMemoryPollResponse {
|
||
bool success = 1;
|
||
string error = 2;
|
||
int64 poll_id = 3;
|
||
}
|
||
|
||
// ListPendingMemoryPollsRequest запрос незавершённых опросов
|
||
message ListPendingMemoryPollsRequest {}
|
||
|
||
// ListPendingMemoryPollsResponse ответ с незавершёнными опросами
|
||
message ListPendingMemoryPollsResponse {
|
||
repeated MemoryPoll polls = 1;
|
||
}
|
||
|
||
// CompleteMemoryPollRequest запрос на завершение опроса
|
||
message CompleteMemoryPollRequest {
|
||
int64 poll_id = 1;
|
||
}
|
||
|
||
// CompleteMemoryPollResponse ответ на завершение опроса
|
||
message CompleteMemoryPollResponse {
|
||
bool success = 1;
|
||
string error = 2;
|
||
}
|
||
|
||
// MemoryService - сервис для работы с памятью
|
||
service MemoryService {
|
||
// StoreMemory сохраняет воспоминание
|
||
rpc StoreMemory(StoreMemoryRequest) returns (StoreMemoryResponse);
|
||
|
||
// GetMemories получает воспоминания пользователя
|
||
rpc GetMemories(GetMemoriesRequest) returns (GetMemoriesResponse);
|
||
|
||
// ProcessMessage обрабатывает сообщение и извлекает факты
|
||
rpc ProcessMessage(ProcessMessageRequest) returns (ProcessMessageResponse);
|
||
|
||
// GetRelevantMemories получает релевантные воспоминания для текущего сообщения
|
||
rpc GetRelevantMemories(GetRelevantMemoriesRequest) returns (GetRelevantMemoriesResponse);
|
||
|
||
// GetMemoriesByUser получает все воспоминания пользователя
|
||
rpc GetMemoriesByUser(GetMemoriesByUserRequest) returns (GetMemoriesByUserResponse);
|
||
|
||
// BulkRefresh обрабатывает множество сообщений для извлечения фактов
|
||
rpc BulkRefresh(BulkRefreshRequest) returns (BulkRefreshResponse);
|
||
|
||
// DeleteMemory удаляет воспоминание по ID
|
||
rpc DeleteMemory(DeleteMemoryRequest) returns (DeleteMemoryResponse);
|
||
|
||
// GetMemoriesForReview возвращает воспоминания для опроса-проверки
|
||
rpc GetMemoriesForReview(GetMemoriesForReviewRequest) returns (GetMemoriesForReviewResponse);
|
||
|
||
// RegisterMemoryPoll регистрирует отправленный опрос-проверку
|
||
rpc RegisterMemoryPoll(RegisterMemoryPollRequest) returns (RegisterMemoryPollResponse);
|
||
|
||
// ListPendingMemoryPolls возвращает незавершённые опросы
|
||
rpc ListPendingMemoryPolls(ListPendingMemoryPollsRequest) returns (ListPendingMemoryPollsResponse);
|
||
|
||
// CompleteMemoryPoll помечает опрос завершённым
|
||
rpc CompleteMemoryPoll(CompleteMemoryPollRequest) returns (CompleteMemoryPollResponse);
|
||
|
||
// HealthCheck проверяет здоровье сервиса
|
||
rpc HealthCheck(HealthCheckRequest) returns (HealthCheckResponse);
|
||
}
|