Spaces:
Running
Running
| import { ChatOpenAIToolType, OpenAIToolChoice, ResponsesToolChoice } from "../utils/tools.js"; | |
| import { ChatOpenAIResponseFormat, OpenAIApiKey, OpenAICacheRetentionParam, OpenAICallOptions, OpenAIChatInput, OpenAICoreRequestOptions, OpenAIVerbosityParam, ResponseFormatConfiguration } from "../types.js"; | |
| import OpenAI$1, { ClientOptions, OpenAI } from "openai"; | |
| import * as _$_langchain_core_messages0 from "@langchain/core/messages"; | |
| import { AIMessageChunk, BaseMessage } from "@langchain/core/messages"; | |
| import { ChatGeneration } from "@langchain/core/outputs"; | |
| import { InteropZodType } from "@langchain/core/utils/types"; | |
| import { BaseChatModel, BaseChatModelCallOptions, BaseChatModelParams, LangSmithParams } from "@langchain/core/language_models/chat_models"; | |
| import { BaseFunctionCallOptions, BaseLanguageModelInput, StructuredOutputMethodOptions } from "@langchain/core/language_models/base"; | |
| import { Runnable } from "@langchain/core/runnables"; | |
| import { SerializableSchema } from "@langchain/core/utils/standard_schema"; | |
| import * as _$_langchain_core_utils_stream0 from "@langchain/core/utils/stream"; | |
| import { ModelProfile } from "@langchain/core/language_models/profile"; | |
| //#region src/chat_models/base.d.ts | |
| interface OpenAILLMOutput { | |
| tokenUsage: { | |
| completionTokens?: number; | |
| promptTokens?: number; | |
| totalTokens?: number; | |
| }; | |
| } | |
| interface BaseChatOpenAICallOptions extends BaseChatModelCallOptions, BaseFunctionCallOptions { | |
| /** | |
| * Additional options to pass to the underlying axios request. | |
| */ | |
| options?: OpenAICoreRequestOptions; | |
| /** | |
| * A list of tools that the model may use to generate responses. | |
| * Each tool can be a function, a built-in tool, or a custom tool definition. | |
| * If not provided, the model will not use any tools. | |
| */ | |
| tools?: ChatOpenAIToolType[]; | |
| /** | |
| * Specifies which tool the model should use to respond. | |
| * Can be an {@link OpenAIToolChoice} or a {@link ResponsesToolChoice}. | |
| * If not set, the model will decide which tool to use automatically. | |
| */ | |
| tool_choice?: OpenAIToolChoice | ResponsesToolChoice; | |
| /** | |
| * Adds a prompt index to prompts passed to the model to track | |
| * what prompt is being used for a given generation. | |
| */ | |
| promptIndex?: number; | |
| /** | |
| * An object specifying the format that the model must output. | |
| */ | |
| response_format?: ChatOpenAIResponseFormat; | |
| /** | |
| * When provided, the completions API will make a best effort to sample | |
| * deterministically, such that repeated requests with the same `seed` | |
| * and parameters should return the same result. | |
| */ | |
| seed?: number; | |
| /** | |
| * Additional options to pass to streamed completions. | |
| * If provided, this takes precedence over "streamUsage" set at | |
| * initialization time. | |
| */ | |
| stream_options?: OpenAI.Chat.ChatCompletionStreamOptions; | |
| /** | |
| * The model may choose to call multiple functions in a single turn. You can | |
| * set parallel_tool_calls to false which ensures only one tool is called at most. | |
| * [Learn more](https://platform.openai.com/docs/guides/function-calling#parallel-function-calling) | |
| */ | |
| parallel_tool_calls?: boolean; | |
| /** | |
| * If `true`, model output is guaranteed to exactly match the JSON Schema | |
| * provided in the tool definition. If `true`, the input schema will also be | |
| * validated according to | |
| * https://platform.openai.com/docs/guides/structured-outputs/supported-schemas. | |
| * | |
| * If `false`, input schema will not be validated and model output will not | |
| * be validated. | |
| * | |
| * If `undefined`, `strict` argument will not be passed to the model. | |
| */ | |
| strict?: boolean; | |
| /** | |
| * Output types that you would like the model to generate for this request. Most | |
| * models are capable of generating text, which is the default: | |
| * | |
| * `["text"]` | |
| * | |
| * The `gpt-4o-audio-preview` model can also be used to | |
| * [generate audio](https://platform.openai.com/docs/guides/audio). To request that | |
| * this model generate both text and audio responses, you can use: | |
| * | |
| * `["text", "audio"]` | |
| */ | |
| modalities?: Array<OpenAI.Chat.ChatCompletionModality>; | |
| /** | |
| * Parameters for audio output. Required when audio output is requested with | |
| * `modalities: ["audio"]`. | |
| * [Learn more](https://platform.openai.com/docs/guides/audio). | |
| */ | |
| audio?: OpenAI.Chat.ChatCompletionAudioParam; | |
| /** | |
| * Static predicted output content, such as the content of a text file that is being regenerated. | |
| * [Learn more](https://platform.openai.com/docs/guides/latency-optimization#use-predicted-outputs). | |
| */ | |
| prediction?: OpenAI.ChatCompletionPredictionContent; | |
| /** | |
| * Options for reasoning models. | |
| * | |
| * Note that some options, like reasoning summaries, are only available when using the responses | |
| * API. If these options are set, the responses API will be used to fulfill the request. | |
| * | |
| * These options will be ignored when not using a reasoning model. | |
| */ | |
| reasoning?: OpenAI.Reasoning; | |
| /** | |
| * Constrains effort on reasoning for reasoning models. Reduces reasoning in responses, | |
| * which can reduce latency and cost at the expense of quality. | |
| * | |
| * Accepts values: "low", "medium", or "high". | |
| * | |
| * @deprecated This is a convenience option that will be merged into the `reasoning` object. | |
| * Use `reasoning.effort` instead. | |
| */ | |
| reasoningEffort?: OpenAI.Reasoning["effort"]; | |
| /** | |
| * Service tier to use for this request. Can be "auto", "default", or "flex" | |
| * Specifies the service tier for prioritization and latency optimization. | |
| */ | |
| service_tier?: OpenAI.Chat.ChatCompletionCreateParams["service_tier"]; | |
| /** | |
| * Used by OpenAI to cache responses for similar requests to optimize your cache | |
| * hit rates. Replaces the `user` field. | |
| * [Learn more](https://platform.openai.com/docs/guides/prompt-caching). | |
| */ | |
| promptCacheKey?: string; | |
| /** | |
| * Used by OpenAI to set cache retention time | |
| */ | |
| promptCacheRetention?: OpenAICacheRetentionParam; | |
| /** | |
| * The verbosity of the model's response. | |
| */ | |
| verbosity?: OpenAIVerbosityParam; | |
| } | |
| interface BaseChatOpenAIFields extends Partial<OpenAIChatInput>, BaseChatModelParams { | |
| /** | |
| * Optional configuration options for the OpenAI client. | |
| */ | |
| configuration?: ClientOptions; | |
| } | |
| /** @internal */ | |
| declare abstract class BaseChatOpenAI<CallOptions extends BaseChatOpenAICallOptions> extends BaseChatModel<CallOptions, AIMessageChunk> implements Partial<OpenAIChatInput> { | |
| temperature?: number; | |
| topP?: number; | |
| frequencyPenalty?: number; | |
| presencePenalty?: number; | |
| n?: number; | |
| logitBias?: Record<string, number>; | |
| model: string; | |
| modelKwargs?: OpenAIChatInput["modelKwargs"]; | |
| stop?: string[]; | |
| stopSequences?: string[]; | |
| user?: string; | |
| timeout?: number; | |
| streaming: boolean; | |
| streamUsage: boolean; | |
| maxTokens?: number; | |
| logprobs?: boolean; | |
| topLogprobs?: number; | |
| apiKey?: OpenAIApiKey; | |
| organization?: string; | |
| __includeRawResponse?: boolean; | |
| /** @internal */ | |
| client: OpenAI; | |
| /** @internal */ | |
| clientConfig: ClientOptions; | |
| /** | |
| * Whether the model supports the `strict` argument when passing in tools. | |
| * If `undefined` the `strict` argument will not be passed to OpenAI. | |
| */ | |
| supportsStrictToolCalling?: boolean; | |
| audio?: OpenAI.Chat.ChatCompletionAudioParam; | |
| modalities?: Array<OpenAI.Chat.ChatCompletionModality>; | |
| reasoning?: OpenAI.Reasoning; | |
| /** | |
| * Must be set to `true` in tenancies with Zero Data Retention. Setting to `true` will disable | |
| * output storage in the Responses API, but this DOES NOT enable Zero Data Retention in your | |
| * OpenAI organization or project. This must be configured directly with OpenAI. | |
| * | |
| * See: | |
| * https://platform.openai.com/docs/guides/your-data | |
| * https://platform.openai.com/docs/api-reference/responses/create#responses-create-store | |
| * | |
| * @default false | |
| */ | |
| zdrEnabled?: boolean | undefined; | |
| /** | |
| * Service tier to use for this request. Can be "auto", "default", or "flex" or "priority". | |
| * Specifies the service tier for prioritization and latency optimization. | |
| */ | |
| service_tier?: OpenAI.Chat.ChatCompletionCreateParams["service_tier"]; | |
| /** | |
| * Used by OpenAI to cache responses for similar requests to optimize your cache | |
| * hit rates. | |
| * [Learn more](https://platform.openai.com/docs/guides/prompt-caching). | |
| */ | |
| promptCacheKey: string; | |
| /** | |
| * Used by OpenAI to set cache retention time | |
| */ | |
| promptCacheRetention?: OpenAICacheRetentionParam; | |
| /** | |
| * The verbosity of the model's response. | |
| */ | |
| verbosity?: OpenAIVerbosityParam; | |
| protected defaultOptions: CallOptions; | |
| _llmType(): string; | |
| static lc_name(): string; | |
| get callKeys(): string[]; | |
| lc_serializable: boolean; | |
| get lc_secrets(): { | |
| [key: string]: string; | |
| } | undefined; | |
| get lc_aliases(): Record<string, string>; | |
| get lc_serializable_keys(): string[]; | |
| getLsParams(options: this["ParsedCallOptions"]): LangSmithParams; | |
| /** @ignore */ | |
| _identifyingParams(): Omit<OpenAI.Chat.ChatCompletionCreateParams, "messages"> & { | |
| model_name: string; | |
| } & ClientOptions; | |
| /** | |
| * Get the identifying parameters for the model | |
| */ | |
| identifyingParams(): Omit<OpenAI$1.ChatCompletionCreateParams, "messages"> & { | |
| model_name: string; | |
| } & ClientOptions; | |
| constructor(fields?: BaseChatOpenAIFields); | |
| /** | |
| * Returns backwards compatible reasoning parameters from constructor params and call options | |
| * @internal | |
| */ | |
| protected _getReasoningParams(options?: this["ParsedCallOptions"]): OpenAI.Reasoning | undefined; | |
| /** | |
| * Returns an openai compatible response format from a set of options | |
| * @internal | |
| */ | |
| protected _getResponseFormat(resFormat?: CallOptions["response_format"]): ResponseFormatConfiguration | undefined; | |
| protected _combineCallOptions(additionalOptions?: this["ParsedCallOptions"]): this["ParsedCallOptions"]; | |
| /** @internal */ | |
| _getClientOptions(options: OpenAICoreRequestOptions | undefined): OpenAICoreRequestOptions; | |
| protected _convertChatOpenAIToolToCompletionsTool(tool: ChatOpenAIToolType, fields?: { | |
| strict?: boolean; | |
| }): OpenAI.ChatCompletionTool; | |
| bindTools(tools: ChatOpenAIToolType[], kwargs?: Partial<CallOptions>): Runnable<BaseLanguageModelInput, AIMessageChunk, CallOptions>; | |
| stream(input: BaseLanguageModelInput, options?: CallOptions): Promise<_$_langchain_core_utils_stream0.IterableReadableStream<AIMessageChunk<_$_langchain_core_messages0.MessageStructure<_$_langchain_core_messages0.MessageToolSet>>>>; | |
| invoke(input: BaseLanguageModelInput, options?: CallOptions): Promise<AIMessageChunk<_$_langchain_core_messages0.MessageStructure<_$_langchain_core_messages0.MessageToolSet>>>; | |
| /** @ignore */ | |
| _combineLLMOutput(...llmOutputs: OpenAILLMOutput[]): OpenAILLMOutput; | |
| getNumTokensFromMessages(messages: BaseMessage[]): Promise<{ | |
| totalCount: number; | |
| countPerMessage: number[]; | |
| }>; | |
| /** @internal */ | |
| protected _getNumTokensFromGenerations(generations: ChatGeneration[]): Promise<number>; | |
| /** @internal */ | |
| protected _getEstimatedTokenCountFromPrompt(messages: BaseMessage[], functions?: OpenAI.Chat.ChatCompletionCreateParams.Function[], function_call?: "none" | "auto" | OpenAI.Chat.ChatCompletionFunctionCallOption): Promise<number>; | |
| /** | |
| * Moderate content using OpenAI's Moderation API. | |
| * | |
| * This method checks whether content violates OpenAI's content policy by | |
| * analyzing text for categories such as hate, harassment, self-harm, | |
| * sexual content, violence, and more. | |
| * | |
| * @param input - The text or array of texts to moderate | |
| * @param params - Optional parameters for the moderation request | |
| * @param params.model - The moderation model to use. Defaults to "omni-moderation-latest". | |
| * @param params.options - Additional options to pass to the underlying request | |
| * @returns A promise that resolves to the moderation response containing results for each input | |
| * | |
| * @example | |
| * ```typescript | |
| * const model = new ChatOpenAI({ model: "gpt-4o-mini" }); | |
| * | |
| * // Moderate a single text | |
| * const result = await model.moderateContent("This is a test message"); | |
| * console.log(result.results[0].flagged); // false | |
| * console.log(result.results[0].categories); // { hate: false, harassment: false, ... } | |
| * | |
| * // Moderate multiple texts | |
| * const results = await model.moderateContent([ | |
| * "Hello, how are you?", | |
| * "This is inappropriate content" | |
| * ]); | |
| * results.results.forEach((result, index) => { | |
| * console.log(`Text ${index + 1} flagged:`, result.flagged); | |
| * }); | |
| * | |
| * // Use a specific moderation model | |
| * const stableResult = await model.moderateContent( | |
| * "Test content", | |
| * { model: "omni-moderation-latest" } | |
| * ); | |
| * ``` | |
| */ | |
| moderateContent(input: string | string[], params?: { | |
| model?: OpenAI$1.ModerationModel; | |
| options?: OpenAICoreRequestOptions; | |
| }): Promise<OpenAI.ModerationCreateResponse>; | |
| /** | |
| * Return profiling information for the model. | |
| * | |
| * Provides information about the model's capabilities and constraints, | |
| * including token limits, multimodal support, and advanced features like | |
| * tool calling and structured output. | |
| * | |
| * @returns {ModelProfile} An object describing the model's capabilities and constraints | |
| * | |
| * @example | |
| * ```typescript | |
| * const model = new ChatOpenAI({ model: "gpt-4o" }); | |
| * const profile = model.profile; | |
| * console.log(profile.maxInputTokens); // 128000 | |
| * console.log(profile.imageInputs); // true | |
| * ``` | |
| */ | |
| get profile(): ModelProfile; | |
| /** @internal */ | |
| protected _getStructuredOutputMethod(config: StructuredOutputMethodOptions<boolean>): string | undefined; | |
| withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | SerializableSchema<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<false>): Runnable<BaseLanguageModelInput, RunOutput>; | |
| withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | SerializableSchema<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<true>): Runnable<BaseLanguageModelInput, { | |
| raw: BaseMessage; | |
| parsed: RunOutput; | |
| }>; | |
| withStructuredOutput<RunOutput extends Record<string, any> = Record<string, any>>(outputSchema: InteropZodType<RunOutput> | SerializableSchema<RunOutput> | Record<string, any>, config?: StructuredOutputMethodOptions<boolean>): Runnable<BaseLanguageModelInput, RunOutput> | Runnable<BaseLanguageModelInput, { | |
| raw: BaseMessage; | |
| parsed: RunOutput; | |
| }>; | |
| } | |
| //#endregion | |
| export { BaseChatOpenAI, BaseChatOpenAICallOptions, BaseChatOpenAIFields }; | |
| //# sourceMappingURL=base.d.ts.map |