types/requests.ts (89 lines of code) (raw):
/**
* @license
* 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.
*/
import { CachedContent } from "./server/caching";
import { Content, Part } from "./content";
import { HarmBlockThreshold, HarmCategory, TaskType } from "./enums";
import {
FunctionDeclarationsTool,
ResponseSchema,
ToolConfig,
} from "./function-calling";
import { GoogleSearchRetrievalTool } from "./search-grounding";
/**
* Base parameters for a number of methods.
* @public
*/
export interface BaseParams {
safetySettings?: SafetySetting[];
generationConfig?: GenerationConfig;
}
/**
* Params passed to {@link GoogleGenerativeAI.getGenerativeModel}.
* @public
*/
export interface ModelParams extends BaseParams {
model: string;
tools?: Tool[];
toolConfig?: ToolConfig;
systemInstruction?: string | Part | Content;
cachedContent?: CachedContent;
}
/**
* Request sent to `generateContent` endpoint.
* @public
*/
export interface GenerateContentRequest extends BaseParams {
contents: Content[];
tools?: Tool[];
toolConfig?: ToolConfig;
systemInstruction?: string | Part | Content;
/**
* This is the name of a `CachedContent` and not the cache object itself.
*/
cachedContent?: string;
}
/**
* Request sent to `generateContent` endpoint.
* @internal
*/
export interface _GenerateContentRequestInternal
extends GenerateContentRequest {
model?: string;
}
/**
* Safety setting that can be sent as part of request parameters.
* @public
*/
export interface SafetySetting {
category: HarmCategory;
threshold: HarmBlockThreshold;
}
/**
* Config options for content-related requests
* @public
*/
export interface GenerationConfig {
candidateCount?: number;
stopSequences?: string[];
maxOutputTokens?: number;
temperature?: number;
topP?: number;
topK?: number;
/**
* Output response mimetype of the generated candidate text.
* Supported mimetype:
* `text/plain`: (default) Text output.
* `application/json`: JSON response in the candidates.
*/
responseMimeType?: string;
/**
* Output response schema of the generated candidate text.
* Note: This only applies when the specified `responseMIMEType` supports a schema; currently
* this is limited to `application/json`.
*/
responseSchema?: ResponseSchema;
/**
* Presence penalty applied to the next token's logprobs if the token has
* already been seen in the response.
*/
presencePenalty?: number;
/**
* Frequency penalty applied to the next token's logprobs, multiplied by the
* number of times each token has been seen in the respponse so far.
*/
frequencyPenalty?: number;
/**
* If True, export the logprobs results in response.
*/
responseLogprobs?: boolean;
/**
* Valid if responseLogProbs is set to True. This will set the number of top
* logprobs to return at each decoding step in the logprobsResult.
*/
logprobs?: number;
}
/**
* Params for {@link GenerativeModel.startChat}.
* @public
*/
export interface StartChatParams extends BaseParams {
history?: Content[];
tools?: Tool[];
toolConfig?: ToolConfig;
systemInstruction?: string | Part | Content;
/**
* This is the name of a `CachedContent` and not the cache object itself.
*/
cachedContent?: string;
}
/**
* Params for calling {@link GenerativeModel.countTokens}.
*
* The request must contain either a {@link Content} array or a
* {@link GenerateContentRequest}, but not both. If both are provided
* then a {@link GoogleGenerativeAIRequestInputError} is thrown.
*
* @public
*/
export interface CountTokensRequest {
generateContentRequest?: GenerateContentRequest;
contents?: Content[];
}
/**
* Params for calling {@link GenerativeModel.countTokens}
* @internal
*/
export interface _CountTokensRequestInternal {
generateContentRequest?: _GenerateContentRequestInternal;
contents?: Content[];
}
/**
* Params for calling {@link GenerativeModel.embedContent}
* @public
*/
export interface EmbedContentRequest {
content: Content;
taskType?: TaskType;
title?: string;
}
/**
* Params for calling {@link GenerativeModel.batchEmbedContents}
* @public
*/
export interface BatchEmbedContentsRequest {
requests: EmbedContentRequest[];
}
/**
* Params passed to getGenerativeModel() or GoogleAIFileManager().
* @public
*/
export interface RequestOptions {
/**
* Request timeout in milliseconds.
*/
timeout?: number;
/**
* Version of API endpoint to call (e.g. "v1" or "v1beta"). If not specified,
* defaults to latest stable version.
*/
apiVersion?: string;
/**
* Additional attribution information to include in the x-goog-api-client header.
* Used by wrapper SDKs.
*/
apiClient?: string;
/**
* Base endpoint url. Defaults to "https://generativelanguage.googleapis.com"
*/
baseUrl?: string;
/**
* Custom HTTP request headers.
*/
customHeaders?: Headers | Record<string, string>;
}
/**
* Params passed to atomic asynchronous operations.
* @public
*/
export interface SingleRequestOptions extends RequestOptions {
/**
* An object that may be used to abort asynchronous requests. The request may
* also be aborted due to the expiration of the timeout value, if provided.
*
* NOTE: AbortSignal is a client-only operation. Using it to cancel an
* operation will not cancel the request in the service. You will still
* be charged usage for any applicable operations.
*/
signal?: AbortSignal;
}
/**
* Defines a tool that model can call to access external knowledge.
* @public
*/
export declare type Tool =
| FunctionDeclarationsTool
| CodeExecutionTool
| GoogleSearchRetrievalTool;
/**
* Enables the model to execute code as part of generation.
* @public
*/
export interface CodeExecutionTool {
/**
* Provide an empty object to enable code execution. This field may have
* subfields added in the future.
*/
codeExecution: {};
}