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