@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 32.7 kB
Source Map (JSON)
{"version":3,"file":"minimax.cjs","names":["ChatMessage","BaseChatModel","convertToOpenAIFunction","HumanMessage","AIMessage"],"sources":["../../src/chat_models/minimax.ts"],"sourcesContent":["import type { OpenAIClient } from \"@langchain/openai\";\n\nimport {\n BaseChatModel,\n type BaseChatModelParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport {\n AIMessage,\n BaseMessage,\n ChatMessage,\n HumanMessage,\n} from \"@langchain/core/messages\";\nimport { ChatResult, ChatGeneration } from \"@langchain/core/outputs\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport type { StructuredToolInterface } from \"@langchain/core/tools\";\nimport { BaseFunctionCallOptions } from \"@langchain/core/language_models/base\";\nimport { convertToOpenAIFunction } from \"@langchain/core/utils/function_calling\";\n\n/**\n * Type representing the sender_type of a message in the Minimax chat model.\n */\nexport type MinimaxMessageRole = \"BOT\" | \"USER\" | \"FUNCTION\";\n\n/**\n * Interface representing a message in the Minimax chat model.\n */\ninterface MinimaxChatCompletionRequestMessage {\n sender_type: MinimaxMessageRole;\n sender_name?: string;\n text: string;\n}\n\n/**\n * Interface representing a request for a chat completion.\n */\ninterface MinimaxChatCompletionRequest {\n model: string;\n messages: MinimaxChatCompletionRequestMessage[];\n stream?: boolean;\n prompt?: string;\n temperature?: number;\n top_p?: number;\n tokens_to_generate?: number;\n skip_info_mask?: boolean;\n mask_sensitive_info?: boolean;\n beam_width?: number;\n use_standard_sse?: boolean;\n role_meta?: RoleMeta;\n bot_setting?: BotSetting[];\n reply_constraints?: ReplyConstraints;\n sample_messages?: MinimaxChatCompletionRequestMessage[];\n /**\n * A list of functions the model may generate JSON inputs for.\n * @type {Array<OpenAIClient.Chat.ChatCompletionCreateParams.Function[]>}\n */\n functions?: OpenAIClient.Chat.ChatCompletionCreateParams.Function[];\n plugins?: string[];\n}\n\ninterface RoleMeta {\n role_meta: string;\n bot_name: string;\n}\n\ninterface RawGlyph {\n type: \"raw\";\n raw_glyph: string;\n}\n\ninterface JsonGlyph {\n type: \"json_value\";\n // oxlint-disable-next-line typescript/no-explicit-any\n json_properties: any;\n}\n\ntype ReplyConstraintsGlyph = RawGlyph | JsonGlyph;\n\ninterface ReplyConstraints {\n sender_type: string;\n sender_name: string;\n glyph?: ReplyConstraintsGlyph;\n}\n\ninterface BotSetting {\n content: string;\n bot_name: string;\n}\n\nexport declare interface ConfigurationParameters {\n basePath?: string;\n headers?: Record<string, string>;\n}\n\n/**\n * Interface defining the input to the ChatMinimax class.\n */\ndeclare interface MinimaxChatInputBase {\n /**\n * Model name to use\n * Alias for `model`\n * @default \"abab5.5-chat\"\n */\n modelName: string;\n /**\n * Model name to use\n * @default \"abab5.5-chat\"\n */\n model: string;\n\n /** Whether to stream the results or not. Defaults to false. */\n streaming?: boolean;\n\n prefixMessages?: MinimaxChatCompletionRequestMessage[];\n\n /**\n * API key to use when making requests. Defaults to the value of\n * `MINIMAX_GROUP_ID` environment variable.\n */\n minimaxGroupId?: string;\n\n /**\n * Secret key to use when making requests. Defaults to the value of\n * `MINIMAX_API_KEY` environment variable.\n * Alias for `apiKey`\n */\n minimaxApiKey?: string;\n /**\n * Secret key to use when making requests. Defaults to the value of\n * `MINIMAX_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /** Amount of randomness injected into the response. Ranges\n * from 0 to 1 (0 is not included). Use temp closer to 0 for analytical /\n * multiple choice, and temp closer to 1 for creative\n * and generative tasks. Defaults to 0.95.\n */\n temperature?: number;\n\n /**\n * The smaller the sampling method, the more determinate the result;\n * the larger the number, the more random the result.\n */\n topP?: number;\n\n /**\n * Enable Chatcompletion pro\n */\n proVersion?: boolean;\n\n /**\n * Pay attention to the maximum number of tokens generated,\n * this parameter does not affect the generation effect of the model itself,\n * but only realizes the function by truncating the tokens exceeding the limit.\n * It is necessary to ensure that the number of tokens of the input context plus this value is less than 6144 or 16384,\n * otherwise the request will fail.\n */\n tokensToGenerate?: number;\n}\n\ndeclare interface MinimaxChatInputNormal {\n /**\n * Dialogue setting, characters, or functionality setting.\n */\n prompt?: string;\n /**\n * Sensitize text information in the output that may involve privacy issues,\n * currently including but not limited to emails, domain names,\n * links, ID numbers, home addresses, etc. Default false, ie. enable sensitization.\n */\n skipInfoMask?: boolean;\n\n /**\n * Whether to use the standard SSE format, when set to true,\n * the streaming results will be separated by two line breaks.\n * This parameter only takes effect when stream is set to true.\n */\n useStandardSse?: boolean;\n\n /**\n * If it is true, this indicates that the current request is set to continuation mode,\n * and the response is a continuation of the last sentence in the incoming messages;\n * at this time, the last sender is not limited to USER, it can also be BOT.\n * Assuming the last sentence of incoming messages is {\"sender_type\": \" U S E R\", \"text\": \"天生我材\"},\n * the completion of the reply may be \"It must be useful.\"\n */\n continueLastMessage?: boolean;\n\n /**\n * How many results to generate; the default is 1 and the maximum is not more than 4.\n * Because beamWidth generates multiple results, it will consume more tokens.\n */\n beamWidth?: number;\n\n /**\n * Dialogue Metadata\n */\n roleMeta?: RoleMeta;\n}\n\ndeclare interface MinimaxChatInputPro extends MinimaxChatInputBase {\n /**\n * For the text information in the output that may involve privacy issues,\n * code masking is currently included but not limited to emails, domains, links, ID numbers, home addresses, etc.,\n * with the default being true, that is, code masking is enabled.\n */\n maskSensitiveInfo?: boolean;\n\n /**\n * Default bot name\n */\n defaultBotName?: string;\n\n /**\n * Default user name\n */\n defaultUserName?: string;\n\n /**\n * Setting for each robot, only available for pro version.\n */\n botSetting?: BotSetting[];\n\n replyConstraints?: ReplyConstraints;\n}\n\ntype MinimaxChatInput = MinimaxChatInputNormal & MinimaxChatInputPro;\n\n/**\n * Function that extracts the custom sender_type of a generic chat message.\n * @param message Chat message from which to extract the custom sender_type.\n * @returns The custom sender_type of the chat message.\n */\nfunction extractGenericMessageCustomRole(message: ChatMessage) {\n if (message.role !== \"ai\" && message.role !== \"user\") {\n console.warn(`Unknown message role: ${message.role}`);\n }\n if (message.role === \"ai\") {\n return \"BOT\" as MinimaxMessageRole;\n }\n if (message.role === \"user\") {\n return \"USER\" as MinimaxMessageRole;\n }\n return message.role as MinimaxMessageRole;\n}\n\n/**\n * Function that converts a base message to a Minimax message sender_type.\n * @param message Base message to convert.\n * @returns The Minimax message sender_type.\n */\nfunction messageToMinimaxRole(message: BaseMessage): MinimaxMessageRole {\n const type = message._getType();\n switch (type) {\n case \"ai\":\n return \"BOT\";\n case \"human\":\n return \"USER\";\n case \"system\":\n throw new Error(\"System messages not supported\");\n case \"function\":\n return \"FUNCTION\";\n case \"generic\": {\n if (!ChatMessage.isInstance(message))\n throw new Error(\"Invalid generic chat message\");\n return extractGenericMessageCustomRole(message);\n }\n default:\n throw new Error(`Unknown message type: ${type}`);\n }\n}\n\nexport interface ChatMinimaxCallOptions extends BaseFunctionCallOptions {\n tools?: StructuredToolInterface[];\n defaultUserName?: string;\n defaultBotName?: string;\n plugins?: string[];\n botSetting?: BotSetting[];\n replyConstraints?: ReplyConstraints;\n sampleMessages?: BaseMessage[];\n}\n\n/**\n * Wrapper around Minimax large language models that use the Chat endpoint.\n *\n * To use you should have the `MINIMAX_GROUP_ID` and `MINIMAX_API_KEY`\n * environment variable set.\n * @example\n * ```typescript\n * // Define a chat prompt with a system message setting the context for translation\n * const chatPrompt = ChatPromptTemplate.fromMessages([\n * SystemMessagePromptTemplate.fromTemplate(\n * \"You are a helpful assistant that translates {input_language} to {output_language}.\",\n * ),\n * HumanMessagePromptTemplate.fromTemplate(\"{text}\"),\n * ]);\n *\n * // Create a new LLMChain with the chat model and the defined prompt\n * const chainB = new LLMChain({\n * prompt: chatPrompt,\n * llm: new ChatMinimax({ temperature: 0.01 }),\n * });\n *\n * // Call the chain with the input language, output language, and the text to translate\n * const resB = await chainB.call({\n * input_language: \"English\",\n * output_language: \"Chinese\",\n * text: \"I love programming.\",\n * });\n *\n * // Log the result\n * console.log({ resB });\n *\n * ```\n */\nexport class ChatMinimax\n extends BaseChatModel<ChatMinimaxCallOptions>\n implements MinimaxChatInput\n{\n static lc_name() {\n return \"ChatMinimax\";\n }\n\n get callKeys(): (keyof ChatMinimaxCallOptions)[] {\n return [\n ...(super.callKeys as (keyof ChatMinimaxCallOptions)[]),\n \"functions\",\n \"tools\",\n \"defaultBotName\",\n \"defaultUserName\",\n \"plugins\",\n \"replyConstraints\",\n \"botSetting\",\n \"sampleMessages\",\n ];\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n minimaxApiKey: \"MINIMAX_API_KEY\",\n apiKey: \"MINIMAX_API_KEY\",\n minimaxGroupId: \"MINIMAX_GROUP_ID\",\n };\n }\n\n lc_serializable = true;\n\n minimaxGroupId?: string;\n\n minimaxApiKey?: string;\n\n apiKey?: string;\n\n streaming = false;\n\n prompt?: string;\n\n modelName = \"abab5.5-chat\";\n\n model = \"abab5.5-chat\";\n\n defaultBotName?: string = \"Assistant\";\n\n defaultUserName?: string = \"I\";\n\n prefixMessages?: MinimaxChatCompletionRequestMessage[];\n\n apiUrl: string;\n\n basePath?: string = \"https://api.minimax.chat/v1\";\n\n headers?: Record<string, string>;\n\n temperature?: number = 0.9;\n\n topP?: number = 0.8;\n\n tokensToGenerate?: number;\n\n skipInfoMask?: boolean;\n\n proVersion?: boolean = true;\n\n beamWidth?: number;\n\n botSetting?: BotSetting[];\n\n continueLastMessage?: boolean;\n\n maskSensitiveInfo?: boolean;\n\n roleMeta?: RoleMeta;\n\n useStandardSse?: boolean;\n\n replyConstraints?: ReplyConstraints;\n\n constructor(\n fields?: Partial<MinimaxChatInput> &\n BaseChatModelParams & {\n configuration?: ConfigurationParameters;\n }\n ) {\n super(fields ?? {});\n\n this.minimaxGroupId =\n fields?.minimaxGroupId ?? getEnvironmentVariable(\"MINIMAX_GROUP_ID\");\n if (!this.minimaxGroupId) {\n throw new Error(\"Minimax GroupID not found\");\n }\n\n this.minimaxApiKey =\n fields?.apiKey ??\n fields?.minimaxApiKey ??\n getEnvironmentVariable(\"MINIMAX_API_KEY\");\n\n if (!this.minimaxApiKey) {\n throw new Error(\"Minimax ApiKey not found\");\n }\n this.apiKey = this.minimaxApiKey;\n\n this.streaming = fields?.streaming ?? this.streaming;\n this.prompt = fields?.prompt ?? this.prompt;\n this.temperature = fields?.temperature ?? this.temperature;\n this.topP = fields?.topP ?? this.topP;\n this.skipInfoMask = fields?.skipInfoMask ?? this.skipInfoMask;\n this.prefixMessages = fields?.prefixMessages ?? this.prefixMessages;\n this.maskSensitiveInfo =\n fields?.maskSensitiveInfo ?? this.maskSensitiveInfo;\n this.beamWidth = fields?.beamWidth ?? this.beamWidth;\n this.continueLastMessage =\n fields?.continueLastMessage ?? this.continueLastMessage;\n this.tokensToGenerate = fields?.tokensToGenerate ?? this.tokensToGenerate;\n this.roleMeta = fields?.roleMeta ?? this.roleMeta;\n this.botSetting = fields?.botSetting ?? this.botSetting;\n this.useStandardSse = fields?.useStandardSse ?? this.useStandardSse;\n this.replyConstraints = fields?.replyConstraints ?? this.replyConstraints;\n this.defaultBotName = fields?.defaultBotName ?? this.defaultBotName;\n\n this.modelName = fields?.model ?? fields?.modelName ?? this.model;\n this.model = this.modelName;\n this.basePath = fields?.configuration?.basePath ?? this.basePath;\n this.headers = fields?.configuration?.headers ?? this.headers;\n this.proVersion = fields?.proVersion ?? this.proVersion;\n\n const modelCompletion = this.proVersion\n ? \"chatcompletion_pro\"\n : \"chatcompletion\";\n this.apiUrl = `${this.basePath}/text/${modelCompletion}`;\n }\n\n fallbackBotName(options?: this[\"ParsedCallOptions\"]) {\n let botName = options?.defaultBotName ?? this.defaultBotName ?? \"Assistant\";\n if (this.botSetting) {\n botName = this.botSetting[0].bot_name;\n }\n return botName;\n }\n\n defaultReplyConstraints(options?: this[\"ParsedCallOptions\"]) {\n const constraints = options?.replyConstraints ?? this.replyConstraints;\n if (!constraints) {\n let botName =\n options?.defaultBotName ?? this.defaultBotName ?? \"Assistant\";\n if (this.botSetting) {\n botName = this.botSetting[0].bot_name;\n }\n\n return {\n sender_type: \"BOT\",\n sender_name: botName,\n };\n }\n return constraints;\n }\n\n /**\n * Get the parameters used to invoke the model\n */\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): Omit<MinimaxChatCompletionRequest, \"messages\"> {\n return {\n model: this.model,\n stream: this.streaming,\n prompt: this.prompt,\n temperature: this.temperature,\n top_p: this.topP,\n tokens_to_generate: this.tokensToGenerate,\n skip_info_mask: this.skipInfoMask,\n mask_sensitive_info: this.maskSensitiveInfo,\n beam_width: this.beamWidth,\n use_standard_sse: this.useStandardSse,\n role_meta: this.roleMeta,\n bot_setting: options?.botSetting ?? this.botSetting,\n reply_constraints: this.defaultReplyConstraints(options),\n sample_messages: this.messageToMinimaxMessage(\n options?.sampleMessages,\n options\n ),\n functions:\n options?.functions ??\n (options?.tools\n ? options?.tools.map(convertToOpenAIFunction)\n : undefined),\n plugins: options?.plugins,\n };\n }\n\n /**\n * Get the identifying parameters for the model\n */\n identifyingParams() {\n return {\n ...this.invocationParams(),\n };\n }\n\n /**\n * Convert a list of messages to the format expected by the model.\n * @param messages\n * @param options\n */\n messageToMinimaxMessage(\n messages?: BaseMessage[],\n options?: this[\"ParsedCallOptions\"]\n ): MinimaxChatCompletionRequestMessage[] | undefined {\n return messages\n ?.filter((message) => {\n if (ChatMessage.isInstance(message)) {\n return message.role !== \"system\";\n }\n return message._getType() !== \"system\";\n })\n ?.map((message) => {\n const sender_type = messageToMinimaxRole(message);\n if (typeof message.content !== \"string\") {\n throw new Error(\n \"ChatMinimax does not support non-string message content.\"\n );\n }\n return {\n sender_type,\n text: message.content,\n sender_name:\n message.name ??\n (sender_type === \"BOT\"\n ? this.fallbackBotName()\n : (options?.defaultUserName ?? this.defaultUserName)),\n };\n });\n }\n\n /** @ignore */\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const tokenUsage = { totalTokens: 0 };\n this.botSettingFallback(options, messages);\n\n const params = this.invocationParams(options);\n const messagesMapped: MinimaxChatCompletionRequestMessage[] = [\n ...(this.messageToMinimaxMessage(messages, options) ?? []),\n ...(this.prefixMessages ?? []),\n ];\n\n const data = params.stream\n ? await new Promise<ChatCompletionResponse>((resolve, reject) => {\n let response: ChatCompletionResponse;\n let rejected = false;\n let resolved = false;\n this.completionWithRetry(\n {\n ...params,\n messages: messagesMapped,\n },\n true,\n options?.signal,\n (event) => {\n const data = JSON.parse(event.data);\n\n if (data?.error_code) {\n if (rejected) {\n return;\n }\n rejected = true;\n reject(data);\n return;\n }\n\n const message = data as ChatCompletionResponse;\n // on the first message set the response properties\n\n if (!message.choices[0].finish_reason) {\n // the last stream message\n let streamText;\n if (this.proVersion) {\n const messages = message.choices[0].messages ?? [];\n streamText = messages[0].text;\n } else {\n streamText = message.choices[0].delta;\n }\n\n // TODO this should pass part.index to the callback\n // when that's supported there\n // eslint-disable-next-line no-void\n void runManager?.handleLLMNewToken(streamText ?? \"\");\n return;\n }\n\n response = message;\n if (!this.proVersion) {\n response.choices[0].text = message.reply;\n }\n\n if (resolved || rejected) {\n return;\n }\n resolved = true;\n resolve(response);\n }\n ).catch((error) => {\n if (!rejected) {\n rejected = true;\n reject(error);\n }\n });\n })\n : await this.completionWithRetry(\n {\n ...params,\n messages: messagesMapped,\n },\n false,\n options?.signal\n );\n\n const { total_tokens: totalTokens } = data.usage ?? {};\n\n if (totalTokens) {\n tokenUsage.totalTokens = totalTokens;\n }\n\n if (data.base_resp?.status_code !== 0) {\n throw new Error(`Minimax API error: ${data.base_resp?.status_msg}`);\n }\n const generations: ChatGeneration[] = [];\n\n if (this.proVersion) {\n for (const choice of data.choices) {\n const messages = choice.messages ?? [];\n // 取最后一条消息\n if (messages) {\n const message = messages[messages.length - 1];\n const text = message?.text ?? \"\";\n generations.push({\n text,\n message: minimaxResponseToChatMessage(message),\n });\n }\n }\n } else {\n for (const choice of data.choices) {\n const text = choice?.text ?? \"\";\n generations.push({\n text,\n message: minimaxResponseToChatMessage({\n sender_type: \"BOT\",\n sender_name:\n options?.defaultBotName ?? this.defaultBotName ?? \"Assistant\",\n text,\n }),\n });\n }\n }\n return {\n generations,\n llmOutput: { tokenUsage },\n };\n }\n\n /** @ignore */\n async completionWithRetry(\n request: MinimaxChatCompletionRequest,\n stream: boolean,\n signal?: AbortSignal,\n onmessage?: (event: MessageEvent) => void\n ) {\n // The first run will get the accessToken\n const makeCompletionRequest = async () => {\n const url = `${this.apiUrl}?GroupId=${this.minimaxGroupId}`;\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n ...this.headers,\n },\n body: JSON.stringify(request),\n signal,\n });\n\n if (!stream) {\n const json = await response.json();\n return json as ChatCompletionResponse;\n } else {\n if (response.body) {\n const reader = response.body.getReader();\n\n const decoder = new TextDecoder(\"utf-8\");\n let data = \"\";\n\n let continueReading = true;\n while (continueReading) {\n const { done, value } = await reader.read();\n if (done) {\n continueReading = false;\n break;\n }\n data += decoder.decode(value);\n\n let continueProcessing = true;\n while (continueProcessing) {\n const newlineIndex = data.indexOf(\"\\n\");\n if (newlineIndex === -1) {\n continueProcessing = false;\n break;\n }\n const line = data.slice(0, newlineIndex);\n data = data.slice(newlineIndex + 1);\n\n if (line.startsWith(\"data:\")) {\n const event = new MessageEvent(\"message\", {\n data: line.slice(\"data:\".length).trim(),\n });\n onmessage?.(event);\n }\n }\n }\n return {} as ChatCompletionResponse;\n }\n return {} as ChatCompletionResponse;\n }\n };\n return this.caller.call(makeCompletionRequest);\n }\n\n _llmType() {\n return \"minimax\";\n }\n\n /** @ignore */\n _combineLLMOutput() {\n return [];\n }\n\n private botSettingFallback(\n options?: this[\"ParsedCallOptions\"],\n messages?: BaseMessage[]\n ) {\n const botSettings = options?.botSetting ?? this.botSetting;\n if (!botSettings) {\n const systemMessages = messages?.filter((message) => {\n if (ChatMessage.isInstance(message)) {\n return message.role === \"system\";\n }\n return message._getType() === \"system\";\n });\n\n // get the last system message\n if (!systemMessages?.length) {\n return;\n }\n const lastSystemMessage = systemMessages[systemMessages.length - 1];\n\n if (typeof lastSystemMessage.content !== \"string\") {\n throw new Error(\n \"ChatMinimax does not support non-string message content.\"\n );\n }\n\n // setting the default botSetting.\n this.botSetting = [\n {\n content: lastSystemMessage.content,\n bot_name:\n options?.defaultBotName ?? this.defaultBotName ?? \"Assistant\",\n },\n ];\n }\n }\n}\n\nfunction minimaxResponseToChatMessage(\n message: ChatCompletionResponseMessage\n): BaseMessage {\n switch (message.sender_type) {\n case \"USER\":\n return new HumanMessage(message.text || \"\");\n case \"BOT\":\n return new AIMessage(message.text || \"\", {\n function_call: message.function_call,\n });\n case \"FUNCTION\":\n return new AIMessage(message.text || \"\");\n default:\n return new ChatMessage(\n message.text || \"\",\n message.sender_type ?? \"unknown\"\n );\n }\n}\n\n/** ---Response Model---* */\n/**\n * Interface representing a message responsed in the Minimax chat model.\n */\ninterface ChatCompletionResponseMessage {\n sender_type: MinimaxMessageRole;\n sender_name?: string;\n text: string;\n function_call?: ChatCompletionResponseMessageFunctionCall;\n}\n\n/**\n * Interface representing the usage of tokens in a chat completion.\n */\ninterface TokenUsage {\n total_tokens?: number;\n}\n\ninterface BaseResp {\n status_code?: number;\n status_msg?: string;\n}\n\n/**\n * The name and arguments of a function that should be called, as generated by the model.\n * @export\n * @interface ChatCompletionResponseMessageFunctionCall\n */\nexport interface ChatCompletionResponseMessageFunctionCall {\n /**\n * The name of the function to call.\n * @type {string}\n * @memberof ChatCompletionResponseMessageFunctionCall\n */\n name?: string;\n /**\n * The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function.\n * @type {string}\n * @memberof ChatCompletionResponseMessageFunctionCall\n */\n arguments?: string;\n}\n\n/**\n *\n * @export\n * @interface ChatCompletionResponseChoices\n */\nexport interface ChatCompletionResponseChoicesPro {\n /**\n *\n * @type {string}\n * @memberof ChatCompletionResponseChoices\n */\n messages?: ChatCompletionResponseMessage[];\n\n /**\n *\n * @type {string}\n * @memberof ChatCompletionResponseChoices\n */\n finish_reason?: string;\n}\n\ninterface ChatCompletionResponseChoices {\n delta?: string;\n text?: string;\n index?: number;\n finish_reason?: string;\n}\n\n/**\n * Interface representing a response from a chat completion.\n */\ninterface ChatCompletionResponse {\n model: string;\n created: number;\n reply: string;\n input_sensitive?: boolean;\n input_sensitive_type?: number;\n output_sensitive?: boolean;\n output_sensitive_type?: number;\n usage?: TokenUsage;\n base_resp?: BaseResp;\n choices: Array<\n ChatCompletionResponseChoicesPro & ChatCompletionResponseChoices\n >;\n}\n"],"mappings":"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"}