UNPKG

@genkit-ai/ai

Version:

Genkit AI framework generative AI APIs.

1 lines 19.8 kB
{"version":3,"sources":["../src/model-types.ts"],"sourcesContent":["/**\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OperationSchema, z } from '@genkit-ai/core';\nimport { DocumentDataSchema } from './document.js';\nimport {\n CustomPartSchema,\n DataPartSchema,\n MediaPartSchema,\n ReasoningPartSchema,\n ResourcePartSchema,\n TextPartSchema,\n ToolRequestPartSchema,\n ToolResponsePartSchema,\n} from './parts.js';\n\n//\n// IMPORTANT: Please keep type definitions in sync with\n// genkit-tools/src/types/model.ts\n//\n\n/**\n * Zod schema of message part.\n */\nexport const PartSchema = z.union([\n TextPartSchema,\n MediaPartSchema,\n ToolRequestPartSchema,\n ToolResponsePartSchema,\n DataPartSchema,\n CustomPartSchema,\n ReasoningPartSchema,\n ResourcePartSchema,\n]);\n\n/**\n * Message part.\n */\nexport type Part = z.infer<typeof PartSchema>;\n\n/**\n * Zod schema of a message role.\n */\nexport const RoleSchema = z.enum(['system', 'user', 'model', 'tool']);\n\n/**\n * Message role.\n */\nexport type Role = z.infer<typeof RoleSchema>;\n\n/**\n * Zod schema of a message.\n */\nexport const MessageSchema = z.object({\n role: RoleSchema,\n content: z.array(PartSchema),\n metadata: z.record(z.unknown()).optional(),\n});\n\n/**\n * Model message data.\n */\nexport type MessageData = z.infer<typeof MessageSchema>;\n\n/**\n * Zod schema of model info metadata.\n */\nexport const ModelInfoSchema = z.object({\n /** Acceptable names for this model (e.g. different versions). */\n versions: z.array(z.string()).optional(),\n /** Friendly label for this model (e.g. \"Google AI - Gemini Pro\") */\n label: z.string().optional(),\n /** Model Specific configuration. */\n configSchema: z.record(z.any()).optional(),\n /** Supported model capabilities. */\n supports: z\n .object({\n /** Model can process historical messages passed with a prompt. */\n multiturn: z.boolean().optional(),\n /** Model can process media as part of the prompt (multimodal input). */\n media: z.boolean().optional(),\n /** Model can perform tool calls. */\n tools: z.boolean().optional(),\n /** Model can accept messages with role \"system\". */\n systemRole: z.boolean().optional(),\n /** Model can output this type of data. */\n output: z.array(z.string()).optional(),\n /** Model supports output in these content types. */\n contentType: z.array(z.string()).optional(),\n /** Model can natively support document-based context grounding. */\n context: z.boolean().optional(),\n /** Model can natively support constrained generation. */\n constrained: z.enum(['none', 'all', 'no-tools']).optional(),\n /** Model supports controlling tool choice, e.g. forced tool calling. */\n toolChoice: z.boolean().optional(),\n })\n .optional(),\n /** At which stage of development this model is.\n * - `featured` models are recommended for general use.\n * - `stable` models are well-tested and reliable.\n * - `unstable` models are experimental and may change.\n * - `legacy` models are no longer recommended for new projects.\n * - `deprecated` models are deprecated by the provider and may be removed in future versions.\n */\n stage: z\n .enum(['featured', 'stable', 'unstable', 'legacy', 'deprecated'])\n .optional(),\n});\n\n/**\n * Model info metadata.\n */\nexport type ModelInfo = z.infer<typeof ModelInfoSchema>;\n\n/**\n * Zod schema of a tool definition.\n */\nexport const ToolDefinitionSchema = z.object({\n name: z.string(),\n description: z.string(),\n inputSchema: z\n .record(z.any())\n .describe('Valid JSON Schema representing the input of the tool.')\n .nullish(),\n outputSchema: z\n .record(z.any())\n .describe('Valid JSON Schema describing the output of the tool.')\n .nullish(),\n metadata: z\n .record(z.any())\n .describe('additional metadata for this tool definition')\n .optional(),\n});\n\n/**\n * Tool definition.\n */\nexport type ToolDefinition = z.infer<typeof ToolDefinitionSchema>;\n\n/**\n * Configuration parameter descriptions.\n */\nexport const GenerationCommonConfigDescriptions = {\n temperature:\n 'Controls the degree of randomness in token selection. A lower value is ' +\n 'good for a more predictable response. A higher value leads to more ' +\n 'diverse or unexpected results.',\n maxOutputTokens: 'The maximum number of tokens to include in the response.',\n topK: 'The maximum number of tokens to consider when sampling.',\n topP:\n 'Decides how many possible words to consider. A higher value means ' +\n 'that the model looks at more possible words, even the less likely ' +\n 'ones, which makes the generated text more diverse.',\n};\n\n/**\n * Zod schema of a common config object.\n */\nexport const GenerationCommonConfigSchema = z\n .object({\n version: z\n .string()\n .describe(\n 'A specific version of a model family, e.g. `gemini-2.5-flash` ' +\n 'for the `googleai` family.'\n )\n .optional(),\n temperature: z\n .number()\n .describe(GenerationCommonConfigDescriptions.temperature)\n .optional(),\n maxOutputTokens: z\n .number()\n .describe(GenerationCommonConfigDescriptions.maxOutputTokens)\n .optional(),\n topK: z\n .number()\n .describe(GenerationCommonConfigDescriptions.topK)\n .optional(),\n topP: z\n .number()\n .describe(GenerationCommonConfigDescriptions.topP)\n .optional(),\n stopSequences: z\n .array(z.string())\n .max(5)\n .describe(\n 'Set of character sequences (up to 5) that will stop output generation.'\n )\n .optional(),\n apiKey: z\n .string()\n .describe(\n 'API Key to use for the model call, overrides API key provided in plugin config.'\n )\n .optional(),\n })\n .passthrough();\n\n/**\n * Common config object.\n */\nexport type GenerationCommonConfig = typeof GenerationCommonConfigSchema;\n\n/**\n * Zod schema of output config.\n */\nexport const OutputConfigSchema = z.object({\n format: z.string().optional(),\n schema: z.record(z.any()).optional(),\n constrained: z.boolean().optional(),\n contentType: z.string().optional(),\n});\n\n/**\n * Output config.\n */\nexport type OutputConfig = z.infer<typeof OutputConfigSchema>;\n\n/** ModelRequestSchema represents the parameters that are passed to a model when generating content. */\nexport const ModelRequestSchema = z.object({\n messages: z.array(MessageSchema),\n config: z.any().optional(),\n tools: z.array(ToolDefinitionSchema).optional(),\n toolChoice: z.enum(['auto', 'required', 'none']).optional(),\n output: OutputConfigSchema.optional(),\n docs: z.array(DocumentDataSchema).optional(),\n});\n/** ModelRequest represents the parameters that are passed to a model when generating content. */\nexport interface ModelRequest<\n CustomOptionsSchema extends z.ZodTypeAny = z.ZodTypeAny,\n> extends z.infer<typeof ModelRequestSchema> {\n config?: z.infer<CustomOptionsSchema>;\n}\n/**\n * Zod schema of a generate request.\n */\nexport const GenerateRequestSchema = ModelRequestSchema.extend({\n /** @deprecated All responses now return a single candidate. This will always be `undefined`. */\n candidates: z.number().optional(),\n});\n\n/**\n * Generate request data.\n */\nexport type GenerateRequestData = z.infer<typeof GenerateRequestSchema>;\n\n/**\n * Generate request.\n */\nexport interface GenerateRequest<\n CustomOptionsSchema extends z.ZodTypeAny = z.ZodTypeAny,\n> extends z.infer<typeof GenerateRequestSchema> {\n config?: z.infer<CustomOptionsSchema>;\n}\n\n/**\n * Zod schema of usage info from a generate request.\n */\nexport const GenerationUsageSchema = z.object({\n inputTokens: z.number().optional(),\n outputTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n inputCharacters: z.number().optional(),\n outputCharacters: z.number().optional(),\n inputImages: z.number().optional(),\n outputImages: z.number().optional(),\n inputVideos: z.number().optional(),\n outputVideos: z.number().optional(),\n inputAudioFiles: z.number().optional(),\n outputAudioFiles: z.number().optional(),\n custom: z.record(z.number()).optional(),\n thoughtsTokens: z.number().optional(),\n cachedContentTokens: z.number().optional(),\n});\n\n/**\n * Usage info from a generate request.\n */\nexport type GenerationUsage = z.infer<typeof GenerationUsageSchema>;\n\n/** Model response finish reason enum. */\nexport const FinishReasonSchema = z.enum([\n 'stop',\n 'length',\n 'blocked',\n 'interrupted',\n 'other',\n 'unknown',\n]);\n\n/** @deprecated All responses now return a single candidate. Only the first candidate will be used if supplied. */\nexport const CandidateSchema = z.object({\n index: z.number(),\n message: MessageSchema,\n usage: GenerationUsageSchema.optional(),\n finishReason: FinishReasonSchema,\n finishMessage: z.string().optional(),\n custom: z.unknown(),\n});\n/** @deprecated All responses now return a single candidate. Only the first candidate will be used if supplied. */\nexport type CandidateData = z.infer<typeof CandidateSchema>;\n\n/** @deprecated All responses now return a single candidate. Only the first candidate will be used if supplied. */\nexport const CandidateErrorSchema = z.object({\n index: z.number(),\n code: z.enum(['blocked', 'other', 'unknown']),\n message: z.string().optional(),\n});\n/** @deprecated All responses now return a single candidate. Only the first candidate will be used if supplied. */\nexport type CandidateError = z.infer<typeof CandidateErrorSchema>;\n\n/**\n * Zod schema of a model response.\n */\nexport const ModelResponseSchema = z.object({\n message: MessageSchema.optional(),\n finishReason: FinishReasonSchema,\n finishMessage: z.string().optional(),\n latencyMs: z.number().optional(),\n usage: GenerationUsageSchema.optional(),\n /** @deprecated use `raw` instead */\n custom: z.unknown(),\n raw: z.unknown(),\n request: GenerateRequestSchema.optional(),\n operation: OperationSchema.optional(),\n});\n\n/**\n * Model response data.\n */\nexport type ModelResponseData = z.infer<typeof ModelResponseSchema>;\n\n/**\n * Zod schema of generaete response.\n */\nexport const GenerateResponseSchema = ModelResponseSchema.extend({\n /** @deprecated All responses now return a single candidate. Only the first candidate will be used if supplied. Return `message`, `finishReason`, and `finishMessage` instead. */\n candidates: z.array(CandidateSchema).optional(),\n finishReason: FinishReasonSchema.optional(),\n});\n\n/**\n * Generate response data.\n */\nexport type GenerateResponseData = z.infer<typeof GenerateResponseSchema>;\n\n/** ModelResponseChunkSchema represents a chunk of content to stream to the client. */\nexport const ModelResponseChunkSchema = z.object({\n role: RoleSchema.optional(),\n /** index of the message this chunk belongs to. */\n index: z.number().optional(),\n /** The chunk of content to stream right now. */\n content: z.array(PartSchema),\n /** Model-specific extra information attached to this chunk. */\n custom: z.unknown().optional(),\n /** If true, the chunk includes all data from previous chunks. Otherwise, considered to be incremental. */\n aggregated: z.boolean().optional(),\n});\nexport type ModelResponseChunkData = z.infer<typeof ModelResponseChunkSchema>;\n\nexport const GenerateResponseChunkSchema = ModelResponseChunkSchema;\nexport type GenerateResponseChunkData = z.infer<\n typeof GenerateResponseChunkSchema\n>;\n\nexport const GenerateActionOutputConfig = z.object({\n format: z.string().optional(),\n contentType: z.string().optional(),\n instructions: z.union([z.boolean(), z.string()]).optional(),\n jsonSchema: z.any().optional(),\n constrained: z.boolean().optional(),\n});\n\nexport const GenerateActionOptionsSchema = z.object({\n /** A model name (e.g. `vertexai/gemini-1.0-pro`). */\n model: z.string().optional(),\n /** Retrieved documents to be used as context for this generation. */\n docs: z.array(DocumentDataSchema).optional(),\n /** Conversation history for multi-turn prompting when supported by the underlying model. */\n messages: z.array(MessageSchema),\n /** List of registered tool names for this generation if supported by the underlying model. */\n tools: z.array(z.string()).optional(),\n /** List of registered resource names for this generation if supported by the underlying model. */\n resources: z.array(z.string()).optional(),\n /** Tool calling mode. `auto` lets the model decide whether to use tools, `required` forces the model to choose a tool, and `none` forces the model not to use any tools. Defaults to `auto`. */\n toolChoice: z.enum(['auto', 'required', 'none']).optional(),\n /** Configuration for the generation request. */\n config: z.any().optional(),\n /** Configuration for the desired output of the request. Defaults to the model's default output if unspecified. */\n output: GenerateActionOutputConfig.optional(),\n /** Options for resuming an interrupted generation. */\n resume: z\n .object({\n respond: z.array(ToolResponsePartSchema).optional(),\n restart: z.array(ToolRequestPartSchema).optional(),\n metadata: z.record(z.any()).optional(),\n })\n .optional(),\n /** When true, return tool calls for manual processing instead of automatically resolving them. */\n returnToolRequests: z.boolean().optional(),\n /** Maximum number of tool call iterations that can be performed in a single generate call (default 5). */\n maxTurns: z.number().optional(),\n /** Custom step name for this generate call to display in trace views. Defaults to \"generate\". */\n stepName: z.string().optional(),\n});\nexport type GenerateActionOptions = z.infer<typeof GenerateActionOptionsSchema>;\n"],"mappings":"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","names":[]}