Skip to content

Commit

Permalink
feat: [generativelanguage] Add GoogleSearch tool type (#5929)
Browse files Browse the repository at this point in the history
* feat: Add v1alpha
feat: Add BidiGenerateContent + all the necessary protos
feat: Add TuningMultiturnExample

PiperOrigin-RevId: 713078684

Source-Link: googleapis/googleapis@ae0e102

Source-Link: googleapis/googleapis-gen@970d7ef
Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWFpLWdlbmVyYXRpdmVsYW5ndWFnZS8uT3dsQm90LnlhbWwiLCJoIjoiOTcwZDdlZjhkYTg0NDc0NGYxZGU4ZDUyN2E5NGViZDI1ZGM3NTM4NCJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* feat: Add civic_integrity toggle
docs: Update safety filter list to include civic_integrity
feat: Add image_safety block_reason + finish_reason

PiperOrigin-RevId: 713079488

Source-Link: googleapis/googleapis@23553a9

Source-Link: googleapis/googleapis-gen@28d6444
Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWFpLWdlbmVyYXRpdmVsYW5ndWFnZS8uT3dsQm90LnlhbWwiLCJoIjoiMjhkNjQ0NDQyZGM5YmIzZDBkM2Q2ZjFlZTVmM2EwMjJmOGZmMGM5NCJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* feat: Add GoogleSearch tool type
feat: Add return type `Schema response` to function declarations
feat: Add id to FunctionCall and FunctionResponse
feat: Add civic_integrity toggle to generation_config
feat: Add response_modalities to generation_config
feat: Add voice_config to generation_config
docs: Update safety filter list to include civic_integrity
feat: Add image_safety block_reason + finish_reason

PiperOrigin-RevId: 713080033

Source-Link: googleapis/googleapis@130b113

Source-Link: googleapis/googleapis-gen@d3455ba
Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWFpLWdlbmVyYXRpdmVsYW5ndWFnZS8uT3dsQm90LnlhbWwiLCJoIjoiZDM0NTViYWIyN2E1YzdmOGMzOWU1MzQ4MjY0OTQ2OGJhYTAyMWNlMCJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

---------

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: d-goog <[email protected]>
  • Loading branch information
3 people authored Jan 10, 2025
1 parent 866f6b0 commit e5a665a
Show file tree
Hide file tree
Showing 129 changed files with 122,312 additions and 2,483 deletions.
56 changes: 56 additions & 0 deletions packages/google-ai-generativelanguage/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ enum TaskType {
message GenerateContentRequest {
// Required. The name of the `Model` to use for generating the completion.
//
// Format: `name=models/{model}`.
// Format: `models/{model}`.
string model = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
Expand Down Expand Up @@ -164,8 +164,8 @@ message GenerateContentRequest {
// `SafetyCategory` provided in the list, the API will use the default safety
// setting for that category. Harm categories HARM_CATEGORY_HATE_SPEECH,
// HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT,
// HARM_CATEGORY_HARASSMENT are supported. Refer to the
// [guide](https://ai.google.dev/gemini-api/docs/safety-settings)
// HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY are supported.
// Refer to the [guide](https://ai.google.dev/gemini-api/docs/safety-settings)
// for detailed information on available safety settings. Also refer to the
// [Safety guidance](https://ai.google.dev/gemini-api/docs/safety-guidance) to
// learn how to incorporate safety considerations in your AI applications.
Expand Down Expand Up @@ -276,6 +276,11 @@ message GenerationConfig {
// This sets the number of top logprobs to return at each decoding step in the
// [Candidate.logprobs_result][google.ai.generativelanguage.v1.Candidate.logprobs_result].
optional int32 logprobs = 18 [(google.api.field_behavior) = OPTIONAL];

// Optional. Enables enhanced civic answers. It may not be available for all
// models.
optional bool enable_enhanced_civic_answers = 19
[(google.api.field_behavior) = OPTIONAL];
}

// Response from the model supporting multiple candidate responses.
Expand Down Expand Up @@ -310,6 +315,9 @@ message GenerateContentResponse {

// Prompt was blocked due to prohibited content.
PROHIBITED_CONTENT = 4;

// Candidates blocked due to unsafe image generation content.
IMAGE_SAFETY = 5;
}

// Optional. If set, the prompt was blocked and no candidates are returned.
Expand Down Expand Up @@ -387,6 +395,10 @@ message Candidate {

// The function call generated by the model is invalid.
MALFORMED_FUNCTION_CALL = 10;

// Token generation stopped because generated images contain safety
// violations.
IMAGE_SAFETY = 11;
}

// Output only. Index of the candidate in the list of response candidates.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.ai.generativelanguage.v1alpha;

import "google/ai/generativelanguage/v1alpha/cached_content.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";

option go_package = "cloud.google.com/go/ai/generativelanguage/apiv1alpha/generativelanguagepb;generativelanguagepb";
option java_multiple_files = true;
option java_outer_classname = "CacheServiceProto";
option java_package = "com.google.ai.generativelanguage.v1alpha";

// API for managing cache of content (CachedContent resources) that can be used
// in GenerativeService requests. This way generate content requests can benefit
// from preprocessing work being done earlier, possibly lowering their
// computational cost. It is intended to be used with large contexts.
service CacheService {
option (google.api.default_host) = "generativelanguage.googleapis.com";

// Lists CachedContents.
rpc ListCachedContents(ListCachedContentsRequest)
returns (ListCachedContentsResponse) {
option (google.api.http) = {
get: "/v1alpha/cachedContents"
};
option (google.api.method_signature) = "";
}

// Creates CachedContent resource.
rpc CreateCachedContent(CreateCachedContentRequest) returns (CachedContent) {
option (google.api.http) = {
post: "/v1alpha/cachedContents"
body: "cached_content"
};
option (google.api.method_signature) = "cached_content";
}

// Reads CachedContent resource.
rpc GetCachedContent(GetCachedContentRequest) returns (CachedContent) {
option (google.api.http) = {
get: "/v1alpha/{name=cachedContents/*}"
};
option (google.api.method_signature) = "name";
}

// Updates CachedContent resource (only expiration is updatable).
rpc UpdateCachedContent(UpdateCachedContentRequest) returns (CachedContent) {
option (google.api.http) = {
patch: "/v1alpha/{cached_content.name=cachedContents/*}"
body: "cached_content"
};
option (google.api.method_signature) = "cached_content,update_mask";
}

// Deletes CachedContent resource.
rpc DeleteCachedContent(DeleteCachedContentRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1alpha/{name=cachedContents/*}"
};
option (google.api.method_signature) = "name";
}
}

// Request to list CachedContents.
message ListCachedContentsRequest {
// Optional. The maximum number of cached contents to return. The service may
// return fewer than this value. If unspecified, some default (under maximum)
// number of items will be returned. The maximum value is 1000; values above
// 1000 will be coerced to 1000.
int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];

// Optional. A page token, received from a previous `ListCachedContents` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListCachedContents` must
// match the call that provided the page token.
string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
}

// Response with CachedContents list.
message ListCachedContentsResponse {
// List of cached contents.
repeated CachedContent cached_contents = 1;

// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
}

// Request to create CachedContent.
message CreateCachedContentRequest {
// Required. The cached content to create.
CachedContent cached_content = 1 [(google.api.field_behavior) = REQUIRED];
}

// Request to read CachedContent.
message GetCachedContentRequest {
// Required. The resource name referring to the content cache entry.
// Format: `cachedContents/{id}`
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "generativelanguage.googleapis.com/CachedContent"
}
];
}

// Request to update CachedContent.
message UpdateCachedContentRequest {
// Required. The content cache entry to update
CachedContent cached_content = 1 [(google.api.field_behavior) = REQUIRED];

// The list of fields to update.
google.protobuf.FieldMask update_mask = 2;
}

// Request to delete CachedContent.
message DeleteCachedContentRequest {
// Required. The resource name referring to the content cache entry
// Format: `cachedContents/{id}`
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "generativelanguage.googleapis.com/CachedContent"
}
];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.ai.generativelanguage.v1alpha;

import "google/ai/generativelanguage/v1alpha/content.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";

option go_package = "cloud.google.com/go/ai/generativelanguage/apiv1alpha/generativelanguagepb;generativelanguagepb";
option java_multiple_files = true;
option java_outer_classname = "CachedContentProto";
option java_package = "com.google.ai.generativelanguage.v1alpha";

// Content that has been preprocessed and can be used in subsequent request
// to GenerativeService.
//
// Cached content can be only used with model it was created for.
message CachedContent {
option (google.api.resource) = {
type: "generativelanguage.googleapis.com/CachedContent"
pattern: "cachedContents/{id}"
plural: "cachedContents"
singular: "cachedContent"
};

// Metadata on the usage of the cached content.
message UsageMetadata {
// Total number of tokens that the cached content consumes.
int32 total_token_count = 1;
}

// Specifies when this resource will expire.
oneof expiration {
// Timestamp in UTC of when this resource is considered expired.
// This is *always* provided on output, regardless of what was sent
// on input.
google.protobuf.Timestamp expire_time = 9;

// Input only. New TTL for this resource, input only.
google.protobuf.Duration ttl = 10
[(google.api.field_behavior) = INPUT_ONLY];
}

// Optional. Identifier. The resource name referring to the cached content.
// Format: `cachedContents/{id}`
optional string name = 1 [
(google.api.field_behavior) = IDENTIFIER,
(google.api.field_behavior) = OPTIONAL
];

// Optional. Immutable. The user-generated meaningful display name of the
// cached content. Maximum 128 Unicode characters.
optional string display_name = 11 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = IMMUTABLE
];

// Required. Immutable. The name of the `Model` to use for cached content
// Format: `models/{model}`
optional string model = 2 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "generativelanguage.googleapis.com/Model"
}
];

// Optional. Input only. Immutable. Developer set system instruction.
// Currently text only.
optional Content system_instruction = 3 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = INPUT_ONLY
];

// Optional. Input only. Immutable. The content to cache.
repeated Content contents = 4 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = INPUT_ONLY
];

// Optional. Input only. Immutable. A list of `Tools` the model may use to
// generate the next response
repeated Tool tools = 5 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = INPUT_ONLY
];

// Optional. Input only. Immutable. Tool config. This config is shared for all
// tools.
optional ToolConfig tool_config = 6 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = INPUT_ONLY
];

// Output only. Creation time of the cache entry.
google.protobuf.Timestamp create_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. When the cache entry was last updated in UTC time.
google.protobuf.Timestamp update_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. Metadata on the usage of the cached content.
UsageMetadata usage_metadata = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.ai.generativelanguage.v1alpha;

import "google/api/field_behavior.proto";

option go_package = "cloud.google.com/go/ai/generativelanguage/apiv1alpha/generativelanguagepb;generativelanguagepb";
option java_multiple_files = true;
option java_outer_classname = "CitationProto";
option java_package = "com.google.ai.generativelanguage.v1alpha";

// A collection of source attributions for a piece of content.
message CitationMetadata {
// Citations to sources for a specific response.
repeated CitationSource citation_sources = 1;
}

// A citation to a source for a portion of a specific response.
message CitationSource {
// Optional. Start of segment of the response that is attributed to this
// source.
//
// Index indicates the start of the segment, measured in bytes.
optional int32 start_index = 1 [(google.api.field_behavior) = OPTIONAL];

// Optional. End of the attributed segment, exclusive.
optional int32 end_index = 2 [(google.api.field_behavior) = OPTIONAL];

// Optional. URI that is attributed as a source for a portion of the text.
optional string uri = 3 [(google.api.field_behavior) = OPTIONAL];

// Optional. License for the GitHub project that is attributed as a source for
// segment.
//
// License info is required for code citations.
optional string license = 4 [(google.api.field_behavior) = OPTIONAL];
}
Loading

0 comments on commit e5a665a

Please sign in to comment.