From 77913256054f974c8afcb6cc3507ce3265136f7a Mon Sep 17 00:00:00 2001 From: Paul Wozniczka <25128922+pwoznic@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:58:38 -0600 Subject: [PATCH 1/2] Auto-generated. Updating Vectara public protos. (00b322398b00caecaa9e01ba767f1ca7f452a800). (#30) Co-authored-by: bitbucket-pipelines --- admin_apikey.proto | 5 +++++ services.proto | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/admin_apikey.proto b/admin_apikey.proto index c7fe344..6b0aadd 100644 --- a/admin_apikey.proto +++ b/admin_apikey.proto @@ -19,6 +19,8 @@ enum ApiKeyType { API_KEY_TYPE__SERVING = 1; // ApiKey for serving and indexing. Gives access to both query and index data. API_KEY_TYPE__SERVING_INDEXING = 2; + // ApiKey for personal access key. + API_KEY_TYPE__PERSONAL = 3; } // Status of ApiKey. @@ -84,6 +86,9 @@ message ListApiKeysRequest { // use the page key returned in previous response, and all other // fields are ignored. bytes page_key = 2; + // [Optional] Get API keys of these types. + // Default: If not set, API_KEY_TYPE__SERVING and API_KEY_TYPE__SERVING_INDEXING are returned. + repeated ApiKeyType api_key_type = 3; // If set, returns corpus name & id associated with api keys. bool read_corpora_info = 1000; } diff --git a/services.proto b/services.proto index 20e512a..9ab82eb 100644 --- a/services.proto +++ b/services.proto @@ -71,7 +71,7 @@ service QueryService { // A streamed response interface when lower latency is absolutely critical. rpc StreamQuery(com.vectara.serving.BatchQueryRequest) - returns (stream com.vectara.serving.QueryResponsePart) { + returns (stream com.vectara.serving.QueryResponsePart) { } } @@ -216,3 +216,4 @@ service DocumentService { }; } } + From fc270e721f8046aade403b4c0ebd14034e30ee26 Mon Sep 17 00:00:00 2001 From: Paul Wozniczka <25128922+pwoznic@users.noreply.github.com> Date: Wed, 14 Feb 2024 11:56:55 -0600 Subject: [PATCH 2/2] Auto-generated. Updating Vectara public protos. (7624919438df6c60c784e5d33ea2e369273744e2). (#31) Co-authored-by: bitbucket-pipelines --- chat.proto | 106 +++++++++++++++++++++++++++++++++++++++++++++++++ services.proto | 49 +++++++++++++++++++++++ serving.proto | 28 +++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 chat.proto diff --git a/chat.proto b/chat.proto new file mode 100644 index 0000000..75473cc --- /dev/null +++ b/chat.proto @@ -0,0 +1,106 @@ +syntax = "proto3"; + +import "status.proto"; + +option java_package = "com.vectara.chat"; +option java_outer_classname = "ChatProtos"; + +option go_package = "vectara.com/public/proto/chat"; + +package com.vectara.chat; + +// A turn in a conversation is a single exchange of query and answer. +// A conversation is composed of several turns. +message Turn { + // The ID of the turn. The ID of the first turn in a conversation is the same as the + // ID of the conversation. This is unique within the chat history corpus. + string id = 1; + // The ID of the conversation this turn belongs to. This is the same as the ID of the + // first turn in the conversation. + string conversation_id = 5; + // The query text. + string query = 10; + // The answer text. + string answer = 15; + // Whether this turn is enabled. If a turn is disabled, it will not be used when + // generating answers for subsequent queries in the conversation. + bool enabled = 20; + // The time at which this turn was created. + int64 epoch_secs = 25; +} + +// A chat contains several back-and-forth messages called turns. +message Conversation { + // The ID of the conversation. This is unique within the chat history corpus. + string id = 1; + // The turns comprising this conversation. + repeated Turn turn = 5; +} + +message ListConversationsRequest { + + // Maximum number of conversations to return per page. + uint32 num_results = 5; + + // A key that is passed in to retrieve a specific page of results. + // Leave empty to retrieve the first page. Subsequent page request should + // use the page key returned in previous response, and all other + // fields are ignored. + bytes page_key = 10; +} + +message ListConversationsResponse { + // The first turn in each conversation. + // This doesn't comprise all turns in each conversation; only the first turn of each + // conversation is returned. + repeated Turn conversation = 1; + Status status = 5; + + // A key that is passed in to retrieve a specific page of results. + // Pass this as is in to the next request to retrieve the next page of results. + bytes page_key = 10; +} + +message ReadConversationsRequest { + // The IDs of the conversations to read. Limit: 10 conversations. + repeated string conversation_id = 5; +} + +message ReadConversationsResponse { + repeated Conversation Conversation = 1; + Status status = 5; +} + +message DeleteConversationsRequest { + // The IDs of the conversations to delete. Limit: 1000 conversations. + repeated string conversation_id = 5; +} + +message DeleteConversationsResponse { + Status status = 1; +} + +message DeleteTurnsRequest { + // The ID of the conversations from which to delete turns. + string conversation_id = 5; + // The ID of the turn to start deletion from. All turns in this conversation starting from this + // turn (inclusive) will be deleted. + string turn_id = 10; +} + +message DeleteTurnsResponse { + Status status = 1; +} + +message DisableTurnsRequest { + // The ID of the conversations from which to disable turns. + string conversation_id = 5; + // The ID of the turn to start disabling from. All turns in this conversation starting from this + // turn will be disabled. + string turn_id = 10; +} + +message DisableTurnsResponse { + Status status = 1; +} + diff --git a/services.proto b/services.proto index 9ab82eb..22eba7d 100644 --- a/services.proto +++ b/services.proto @@ -8,6 +8,7 @@ import "admin_metric.proto"; import "admin_security.proto"; import "admin_user.proto"; +import "chat.proto"; import "common.proto"; import "indexing.proto"; import "serving.proto"; @@ -217,3 +218,51 @@ service DocumentService { } } +// Service for working with chat conversations. +service ChatService { + + // List all conversations. + rpc ListConversations(com.vectara.chat.ListConversationsRequest) + returns (com.vectara.chat.ListConversationsResponse) { + option (google.api.http) = { + post: "/v1/list-conversations" + body: "*" + }; + } + + // Read all turns within the passed conversations. + rpc ReadConversations(com.vectara.chat.ReadConversationsRequest) + returns (com.vectara.chat.ReadConversationsResponse) { + option (google.api.http) = { + post: "/v1/read-conversations" + body: "*" + }; + } + + // Delete conversations (including all turns in it). + rpc DeleteConversations(com.vectara.chat.DeleteConversationsRequest) + returns (com.vectara.chat.DeleteConversationsResponse) { + option (google.api.http) = { + post: "/v1/delete-conversations" + body: "*" + }; + } + + // Delete turns. + rpc DeleteTurns(com.vectara.chat.DeleteTurnsRequest) + returns (com.vectara.chat.DeleteTurnsResponse) { + option (google.api.http) = { + post: "/v1/delete-turns" + body: "*" + }; + } + + // Disable turn. The turn will no longer be used in conversations. + rpc DisableTurns(com.vectara.chat.DisableTurnsRequest) + returns (com.vectara.chat.DisableTurnsResponse) { + option (google.api.http) = { + post: "/v1/disable-turns" + body: "*" + }; + } +} diff --git a/serving.proto b/serving.proto index a2063dc..4d2493e 100644 --- a/serving.proto +++ b/serving.proto @@ -61,6 +61,10 @@ message SummarizationRequest { // the auto-detected language of the incoming query should be used. string response_lang = 20; + + // If present, the query will be treated as a chat query. + // When using chat, only one summarization request is allowed per query. + ChatRequest chat = 225; } @@ -150,6 +154,27 @@ message QueryRequest { } +// The chat request. +message ChatRequest { + // Whether to store the query/answer pair. + bool store = 5; + + // The conversation id of the chat. + // If empty, a new conversation will be started. + string conversation_id = 15; +} + +message Chat { + // The conversation id of the chat. + string conversation_id = 5; + // The id assigned to this query and answer. + string turn_id = 10; + + + // Any errors when processing the chat request. + Status status = 1000; +} + message Attribute { string name = 5; string value = 10; @@ -164,6 +189,9 @@ message Summary { string lang = 15; + // Populated if chat was requested in the SummaryRequest. + Chat chat = 205; + // Statuses are marked “repeated” for consistency and flexibility. A failed // summary should bubble up into the status code of the entire ResponseSet. repeated Status status = 1000;