l-ai-memories-proto/memory.proto

228 lines
8.2 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}