1// Copyright 2023 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.cloud.dialogflow.cx.v3; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/protobuf/empty.proto"; 24import "google/protobuf/field_mask.proto"; 25 26option cc_enable_arenas = true; 27option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3"; 28option go_package = "cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb"; 29option java_multiple_files = true; 30option java_outer_classname = "GeneratorProto"; 31option java_package = "com.google.cloud.dialogflow.cx.v3"; 32option objc_class_prefix = "DF"; 33option ruby_package = "Google::Cloud::Dialogflow::CX::V3"; 34 35// Service for managing [Generators][google.cloud.dialogflow.cx.v3.Generator] 36service Generators { 37 option (google.api.default_host) = "dialogflow.googleapis.com"; 38 option (google.api.oauth_scopes) = 39 "https://www.googleapis.com/auth/cloud-platform," 40 "https://www.googleapis.com/auth/dialogflow"; 41 42 // Returns the list of all generators in the specified agent. 43 rpc ListGenerators(ListGeneratorsRequest) returns (ListGeneratorsResponse) { 44 option (google.api.http) = { 45 get: "/v3/{parent=projects/*/locations/*/agents/*}/generators" 46 }; 47 option (google.api.method_signature) = "parent"; 48 } 49 50 // Retrieves the specified generator. 51 rpc GetGenerator(GetGeneratorRequest) returns (Generator) { 52 option (google.api.http) = { 53 get: "/v3/{name=projects/*/locations/*/agents/*/generators/*}" 54 }; 55 option (google.api.method_signature) = "name"; 56 } 57 58 // Creates a generator in the specified agent. 59 rpc CreateGenerator(CreateGeneratorRequest) returns (Generator) { 60 option (google.api.http) = { 61 post: "/v3/{parent=projects/*/locations/*/agents/*}/generators" 62 body: "generator" 63 }; 64 option (google.api.method_signature) = "parent,generator"; 65 } 66 67 // Update the specified generator. 68 rpc UpdateGenerator(UpdateGeneratorRequest) returns (Generator) { 69 option (google.api.http) = { 70 patch: "/v3/{generator.name=projects/*/locations/*/agents/*/generators/*}" 71 body: "generator" 72 }; 73 option (google.api.method_signature) = "generator,update_mask"; 74 } 75 76 // Deletes the specified generators. 77 rpc DeleteGenerator(DeleteGeneratorRequest) returns (google.protobuf.Empty) { 78 option (google.api.http) = { 79 delete: "/v3/{name=projects/*/locations/*/agents/*/generators/*}" 80 }; 81 option (google.api.method_signature) = "name"; 82 } 83} 84 85// Generators contain prompt to be sent to the LLM model to generate text. The 86// prompt can contain parameters which will be resolved before calling the 87// model. It can optionally contain banned phrases to ensure the model responses 88// are safe. 89message Generator { 90 option (google.api.resource) = { 91 type: "dialogflow.googleapis.com/Generator" 92 pattern: "projects/{project}/locations/{location}/agents/{agent}/generators/{generator}" 93 }; 94 95 // Represents a custom placeholder in the prompt text. 96 message Placeholder { 97 // Unique ID used to map custom placeholder to parameters in fulfillment. 98 string id = 1; 99 100 // Custom placeholder value in the prompt text. 101 string name = 2; 102 } 103 104 // The unique identifier of the generator. 105 // Must be set for the 106 // [Generators.UpdateGenerator][google.cloud.dialogflow.cx.v3.Generators.UpdateGenerator] 107 // method. [Generators.CreateGenerate][] populates the name automatically. 108 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 109 // ID>/generators/<Generator ID>`. 110 string name = 1; 111 112 // Required. The human-readable name of the generator, unique within the 113 // agent. The prompt contains pre-defined parameters such as $conversation, 114 // $last-user-utterance, etc. populated by Dialogflow. It can also contain 115 // custom placeholders which will be resolved during fulfillment. 116 string display_name = 2 [(google.api.field_behavior) = REQUIRED]; 117 118 // Required. Prompt for the LLM model. 119 Phrase prompt_text = 3 [(google.api.field_behavior) = REQUIRED]; 120 121 // Optional. List of custom placeholders in the prompt text. 122 repeated Placeholder placeholders = 5 123 [(google.api.field_behavior) = OPTIONAL]; 124} 125 126// Text input which can be used for prompt or banned phrases. 127message Phrase { 128 // Required. Text input which can be used for prompt or banned phrases. 129 string text = 1 [(google.api.field_behavior) = REQUIRED]; 130} 131 132// The request message for 133// [Generators.ListGenerators][google.cloud.dialogflow.cx.v3.Generators.ListGenerators]. 134message ListGeneratorsRequest { 135 // Required. The agent to list all generators for. 136 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>`. 137 string parent = 1 [ 138 (google.api.field_behavior) = REQUIRED, 139 (google.api.resource_reference) = { 140 child_type: "dialogflow.googleapis.com/Generator" 141 } 142 ]; 143 144 // The language to list generators for. 145 string language_code = 2; 146 147 // The maximum number of items to return in a single page. By default 100 and 148 // at most 1000. 149 int32 page_size = 3; 150 151 // The next_page_token value returned from a previous list request. 152 string page_token = 4; 153} 154 155// The response message for 156// [Generators.ListGenerators][google.cloud.dialogflow.cx.v3.Generators.ListGenerators]. 157message ListGeneratorsResponse { 158 // The list of generators. There will be a maximum number of items returned 159 // based on the page_size field in the request. 160 repeated Generator generators = 1; 161 162 // Token to retrieve the next page of results, or empty if there are no more 163 // results in the list. 164 string next_page_token = 2; 165} 166 167// The request message for 168// [Generators.GetGenerator][google.cloud.dialogflow.cx.v3.Generators.GetGenerator]. 169message GetGeneratorRequest { 170 // Required. The name of the generator. 171 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 172 // ID>/generators/<Generator ID>`. 173 string name = 1 [ 174 (google.api.field_behavior) = REQUIRED, 175 (google.api.resource_reference) = { 176 type: "dialogflow.googleapis.com/Generator" 177 } 178 ]; 179 180 // The language to list generators for. 181 string language_code = 2; 182} 183 184// The request message for 185// [Generators.CreateGenerator][google.cloud.dialogflow.cx.v3.Generators.CreateGenerator]. 186message CreateGeneratorRequest { 187 // Required. The agent to create a generator for. 188 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>`. 189 string parent = 1 [ 190 (google.api.field_behavior) = REQUIRED, 191 (google.api.resource_reference) = { 192 child_type: "dialogflow.googleapis.com/Generator" 193 } 194 ]; 195 196 // Required. The generator to create. 197 Generator generator = 2 [(google.api.field_behavior) = REQUIRED]; 198 199 // The language to create generators for the following fields: 200 // * `Generator.prompt_text.text` 201 // If not specified, the agent's default language is used. 202 string language_code = 3; 203} 204 205// The request message for 206// [Generators.UpdateGenerator][google.cloud.dialogflow.cx.v3.Generators.UpdateGenerator]. 207message UpdateGeneratorRequest { 208 // Required. The generator to update. 209 Generator generator = 1 [(google.api.field_behavior) = REQUIRED]; 210 211 // The language to list generators for. 212 string language_code = 2; 213 214 // The mask to control which fields get updated. If the mask is not present, 215 // all fields will be updated. 216 google.protobuf.FieldMask update_mask = 3; 217} 218 219// The request message for 220// [Generators.DeleteGenerator][google.cloud.dialogflow.cx.v3.Generators.DeleteGenerator]. 221message DeleteGeneratorRequest { 222 // Required. The name of the generator to delete. 223 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 224 // ID>/generators/<Generator ID>`. 225 string name = 1 [ 226 (google.api.field_behavior) = REQUIRED, 227 (google.api.resource_reference) = { 228 type: "dialogflow.googleapis.com/Generator" 229 } 230 ]; 231 232 // This field has no effect for generators not being used. 233 // For generators that are used by pages/flows/transition route groups: 234 // 235 // * If `force` is set to false, an error will be returned with message 236 // indicating the referenced resources. 237 // * If `force` is set to true, Dialogflow will remove the generator, as well 238 // as any references to the generator (i.e. 239 // [Generator][Fulfillment.generator]) in fulfillments. 240 bool force = 2; 241} 242