@librechat/agents 2.4.74 → 2.4.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/llm/anthropic/index.cjs +4 -1
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
- package/dist/cjs/llm/ollama/index.cjs +67 -0
- package/dist/cjs/llm/ollama/index.cjs.map +1 -0
- package/dist/cjs/llm/ollama/utils.cjs +158 -0
- package/dist/cjs/llm/ollama/utils.cjs.map +1 -0
- package/dist/cjs/llm/openai/index.cjs +3 -0
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +1 -3
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/llm/providers.cjs +2 -2
- package/dist/cjs/llm/providers.cjs.map +1 -1
- package/dist/cjs/llm/text.cjs +14 -3
- package/dist/cjs/llm/text.cjs.map +1 -1
- package/dist/esm/llm/anthropic/index.mjs +4 -1
- package/dist/esm/llm/anthropic/index.mjs.map +1 -1
- package/dist/esm/llm/ollama/index.mjs +65 -0
- package/dist/esm/llm/ollama/index.mjs.map +1 -0
- package/dist/esm/llm/ollama/utils.mjs +155 -0
- package/dist/esm/llm/ollama/utils.mjs.map +1 -0
- package/dist/esm/llm/openai/index.mjs +3 -0
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +1 -3
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/llm/providers.mjs +1 -1
- package/dist/esm/llm/providers.mjs.map +1 -1
- package/dist/esm/llm/text.mjs +14 -3
- package/dist/esm/llm/text.mjs.map +1 -1
- package/dist/types/llm/ollama/index.d.ts +7 -0
- package/dist/types/llm/ollama/utils.d.ts +7 -0
- package/dist/types/llm/text.d.ts +1 -1
- package/package.json +2 -2
- package/src/llm/anthropic/index.ts +4 -1
- package/src/llm/ollama/index.ts +89 -0
- package/src/llm/ollama/utils.ts +193 -0
- package/src/llm/openai/index.ts +2 -0
- package/src/llm/openai/utils/index.ts +1 -5
- package/src/llm/openai/utils/isReasoningModel.test.ts +90 -0
- package/src/llm/providers.ts +1 -1
- package/src/llm/text.ts +26 -7
- package/src/scripts/simple.ts +1 -1
- package/src/utils/llmConfig.ts +11 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../../src/llm/openai/utils/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { type OpenAI as OpenAIClient } from 'openai';\nimport type {\n ChatCompletionContentPartText,\n ChatCompletionContentPartImage,\n ChatCompletionContentPartInputAudio,\n ChatCompletionContentPart,\n} from 'openai/resources/chat/completions';\nimport {\n AIMessage,\n AIMessageChunk,\n type BaseMessage,\n ChatMessage,\n ToolMessage,\n isAIMessage,\n type UsageMetadata,\n type BaseMessageFields,\n type MessageContent,\n type InvalidToolCall,\n type MessageContentImageUrl,\n StandardContentBlockConverter,\n parseBase64DataUrl,\n parseMimeType,\n convertToProviderContentBlock,\n isDataContentBlock,\n} from '@langchain/core/messages';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport {\n convertLangChainToolCallToOpenAI,\n makeInvalidToolCall,\n parseToolCall,\n} from '@langchain/core/output_parsers/openai_tools';\nimport type { ToolCall, ToolCallChunk } from '@langchain/core/messages/tool';\nimport type {\n OpenAICallOptions,\n OpenAIChatInput,\n ChatOpenAIReasoningSummary,\n} from '@langchain/openai';\n\nexport type { OpenAICallOptions, OpenAIChatInput };\n\n// Utility types to get hidden OpenAI response types\ntype ExtractAsyncIterableType<T> = T extends AsyncIterable<infer U> ? U : never;\ntype ExcludeController<T> = T extends { controller: unknown } ? never : T;\ntype ExcludeNonController<T> = T extends { controller: unknown } ? T : never;\n\ntype ResponsesCreate = OpenAIClient.Responses['create'];\ntype ResponsesParse = OpenAIClient.Responses['parse'];\n\ntype ResponsesInputItem = OpenAIClient.Responses.ResponseInputItem;\n\ntype ResponsesCreateInvoke = ExcludeController<\n Awaited<ReturnType<ResponsesCreate>>\n>;\n\ntype ResponsesParseInvoke = ExcludeController<\n Awaited<ReturnType<ResponsesParse>>\n>;\n\ntype ResponsesCreateStream = ExcludeNonController<\n Awaited<ReturnType<ResponsesCreate>>\n>;\n\nexport type ResponseReturnStreamEvents =\n ExtractAsyncIterableType<ResponsesCreateStream>;\n\n// TODO import from SDK when available\ntype OpenAIRoleEnum =\n | 'system'\n | 'developer'\n | 'assistant'\n | 'user'\n | 'function'\n | 'tool';\n\ntype OpenAICompletionParam =\n OpenAIClient.Chat.Completions.ChatCompletionMessageParam;\n\nfunction extractGenericMessageCustomRole(message: ChatMessage) {\n if (\n message.role !== 'system' &&\n message.role !== 'developer' &&\n message.role !== 'assistant' &&\n message.role !== 'user' &&\n message.role !== 'function' &&\n message.role !== 'tool'\n ) {\n console.warn(`Unknown message role: ${message.role}`);\n }\n\n return message.role as OpenAIRoleEnum;\n}\n\nexport function messageToOpenAIRole(message: BaseMessage): OpenAIRoleEnum {\n const type = message._getType();\n switch (type) {\n case 'system':\n return 'system';\n case 'ai':\n return 'assistant';\n case 'human':\n return 'user';\n case 'function':\n return 'function';\n case 'tool':\n return 'tool';\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\nconst completionsApiContentBlockConverter: StandardContentBlockConverter<{\n text: ChatCompletionContentPartText;\n image: ChatCompletionContentPartImage;\n audio: ChatCompletionContentPartInputAudio;\n file: ChatCompletionContentPart.File;\n}> = {\n providerName: 'ChatOpenAI',\n\n fromStandardTextBlock(block): ChatCompletionContentPartText {\n return { type: 'text', text: block.text };\n },\n\n fromStandardImageBlock(block): ChatCompletionContentPartImage {\n if (block.source_type === 'url') {\n return {\n type: 'image_url',\n image_url: {\n url: block.url,\n ...(block.metadata?.detail\n ? { detail: block.metadata.detail as 'auto' | 'low' | 'high' }\n : {}),\n },\n };\n }\n\n if (block.source_type === 'base64') {\n const url = `data:${block.mime_type ?? ''};base64,${block.data}`;\n return {\n type: 'image_url',\n image_url: {\n url,\n ...(block.metadata?.detail\n ? { detail: block.metadata.detail as 'auto' | 'low' | 'high' }\n : {}),\n },\n };\n }\n\n throw new Error(\n `Image content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n );\n },\n\n fromStandardAudioBlock(block): ChatCompletionContentPartInputAudio {\n if (block.source_type === 'url') {\n const data = parseBase64DataUrl({ dataUrl: block.url });\n if (!data) {\n throw new Error(\n `URL audio blocks with source_type ${block.source_type} must be formatted as a data URL for ChatOpenAI`\n );\n }\n\n const rawMimeType = data.mime_type || block.mime_type || '';\n let mimeType: { type: string; subtype: string };\n\n try {\n mimeType = parseMimeType(rawMimeType);\n } catch {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n if (\n mimeType.type !== 'audio' ||\n (mimeType.subtype !== 'wav' && mimeType.subtype !== 'mp3')\n ) {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n return {\n type: 'input_audio',\n input_audio: {\n format: mimeType.subtype,\n data: data.data,\n },\n };\n }\n\n if (block.source_type === 'base64') {\n let mimeType: { type: string; subtype: string };\n\n try {\n mimeType = parseMimeType(block.mime_type ?? '');\n } catch {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n if (\n mimeType.type !== 'audio' ||\n (mimeType.subtype !== 'wav' && mimeType.subtype !== 'mp3')\n ) {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n return {\n type: 'input_audio',\n input_audio: {\n format: mimeType.subtype,\n data: block.data,\n },\n };\n }\n\n throw new Error(\n `Audio content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n );\n },\n\n fromStandardFileBlock(block): ChatCompletionContentPart.File {\n if (block.source_type === 'url') {\n const data = parseBase64DataUrl({ dataUrl: block.url });\n if (!data) {\n throw new Error(\n `URL file blocks with source_type ${block.source_type} must be formatted as a data URL for ChatOpenAI`\n );\n }\n\n return {\n type: 'file',\n file: {\n file_data: block.url, // formatted as base64 data URL\n ...(block.metadata?.filename || block.metadata?.name\n ? {\n filename: (block.metadata.filename ||\n block.metadata.name) as string,\n }\n : {}),\n },\n };\n }\n\n if (block.source_type === 'base64') {\n return {\n type: 'file',\n file: {\n file_data: `data:${block.mime_type ?? ''};base64,${block.data}`,\n ...(block.metadata?.filename ||\n block.metadata?.name ||\n block.metadata?.title\n ? {\n filename: (block.metadata.filename ||\n block.metadata.name ||\n block.metadata.title) as string,\n }\n : {}),\n },\n };\n }\n\n if (block.source_type === 'id') {\n return {\n type: 'file',\n file: {\n file_id: block.id,\n },\n };\n }\n\n throw new Error(\n `File content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n );\n },\n};\n\n// Used in LangSmith, export is important here\nexport function _convertMessagesToOpenAIParams(\n messages: BaseMessage[],\n model?: string\n): OpenAICompletionParam[] {\n // TODO: Function messages do not support array content, fix cast\n return messages.flatMap((message) => {\n let role = messageToOpenAIRole(message);\n if (role === 'system' && isReasoningModel(model)) {\n role = 'developer';\n }\n\n const content =\n typeof message.content === 'string'\n ? message.content\n : message.content.map((m) => {\n if (isDataContentBlock(m)) {\n return convertToProviderContentBlock(\n m,\n completionsApiContentBlockConverter\n );\n }\n return m;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const completionParam: Record<string, any> = {\n role,\n content,\n };\n if (message.name != null) {\n completionParam.name = message.name;\n }\n if (message.additional_kwargs.function_call != null) {\n completionParam.function_call = message.additional_kwargs.function_call;\n completionParam.content = '';\n }\n if (isAIMessage(message) && !!message.tool_calls?.length) {\n completionParam.tool_calls = message.tool_calls.map(\n convertLangChainToolCallToOpenAI\n );\n completionParam.content = '';\n } else {\n if (message.additional_kwargs.tool_calls != null) {\n completionParam.tool_calls = message.additional_kwargs.tool_calls;\n }\n if ((message as ToolMessage).tool_call_id != null) {\n completionParam.tool_call_id = (message as ToolMessage).tool_call_id;\n }\n }\n\n if (\n message.additional_kwargs.audio &&\n typeof message.additional_kwargs.audio === 'object' &&\n 'id' in message.additional_kwargs.audio\n ) {\n const audioMessage = {\n role: 'assistant',\n audio: {\n id: message.additional_kwargs.audio.id,\n },\n };\n return [completionParam, audioMessage] as OpenAICompletionParam[];\n }\n\n return completionParam as OpenAICompletionParam;\n });\n}\n\nconst _FUNCTION_CALL_IDS_MAP_KEY = '__openai_function_call_ids__';\n\nfunction _convertReasoningSummaryToOpenAIResponsesParams(\n reasoning: ChatOpenAIReasoningSummary\n): OpenAIClient.Responses.ResponseReasoningItem {\n // combine summary parts that have the the same index and then remove the indexes\n const summary = (\n reasoning.summary.length > 1\n ? reasoning.summary.reduce(\n (acc, curr) => {\n const last = acc.at(-1);\n\n if (last!.index === curr.index) {\n last!.text += curr.text;\n } else {\n acc.push(curr);\n }\n return acc;\n },\n [{ ...reasoning.summary[0] }]\n )\n : reasoning.summary\n ).map((s) =>\n Object.fromEntries(Object.entries(s).filter(([k]) => k !== 'index'))\n ) as OpenAIClient.Responses.ResponseReasoningItem.Summary[];\n\n return {\n ...reasoning,\n summary,\n } as OpenAIClient.Responses.ResponseReasoningItem;\n}\n\nexport function _convertMessagesToOpenAIResponsesParams(\n messages: BaseMessage[],\n model?: string,\n zdrEnabled?: boolean\n): ResponsesInputItem[] {\n return messages.flatMap(\n (lcMsg): ResponsesInputItem | ResponsesInputItem[] => {\n const additional_kwargs =\n lcMsg.additional_kwargs as BaseMessageFields['additional_kwargs'] & {\n [_FUNCTION_CALL_IDS_MAP_KEY]?: Record<string, string>;\n reasoning?: OpenAIClient.Responses.ResponseReasoningItem;\n type?: string;\n refusal?: string;\n };\n\n let role = messageToOpenAIRole(lcMsg);\n if (role === 'system' && isReasoningModel(model)) role = 'developer';\n\n if (role === 'function') {\n throw new Error('Function messages are not supported in Responses API');\n }\n\n if (role === 'tool') {\n const toolMessage = lcMsg as ToolMessage;\n\n // Handle computer call output\n if (additional_kwargs.type === 'computer_call_output') {\n const output = (() => {\n if (typeof toolMessage.content === 'string') {\n return {\n type: 'computer_screenshot' as const,\n image_url: toolMessage.content,\n };\n }\n\n if (Array.isArray(toolMessage.content)) {\n const oaiScreenshot = toolMessage.content.find(\n (i) => i.type === 'computer_screenshot'\n ) as { type: 'computer_screenshot'; image_url: string };\n\n if (oaiScreenshot) return oaiScreenshot;\n\n const lcImage = toolMessage.content.find(\n (i) => i.type === 'image_url'\n ) as MessageContentImageUrl;\n\n if (lcImage) {\n return {\n type: 'computer_screenshot' as const,\n image_url:\n typeof lcImage.image_url === 'string'\n ? lcImage.image_url\n : lcImage.image_url.url,\n };\n }\n }\n\n throw new Error('Invalid computer call output');\n })();\n\n return {\n type: 'computer_call_output',\n output,\n call_id: toolMessage.tool_call_id,\n };\n }\n\n return {\n type: 'function_call_output',\n call_id: toolMessage.tool_call_id,\n id: toolMessage.id?.startsWith('fc_') ? toolMessage.id : undefined,\n output:\n typeof toolMessage.content !== 'string'\n ? JSON.stringify(toolMessage.content)\n : toolMessage.content,\n };\n }\n\n if (role === 'assistant') {\n // if we have the original response items, just reuse them\n if (\n !zdrEnabled &&\n lcMsg.response_metadata.output != null &&\n Array.isArray(lcMsg.response_metadata.output) &&\n lcMsg.response_metadata.output.length > 0 &&\n lcMsg.response_metadata.output.every((item) => 'type' in item)\n ) {\n return lcMsg.response_metadata.output;\n }\n\n // otherwise, try to reconstruct the response from what we have\n\n const input: ResponsesInputItem[] = [];\n\n // reasoning items\n if (additional_kwargs.reasoning && !zdrEnabled) {\n const reasoningItem = _convertReasoningSummaryToOpenAIResponsesParams(\n additional_kwargs.reasoning\n );\n input.push(reasoningItem);\n }\n\n // ai content\n let { content } = lcMsg;\n if (additional_kwargs.refusal) {\n if (typeof content === 'string') {\n content = [{ type: 'output_text', text: content, annotations: [] }];\n }\n content = [\n ...content,\n { type: 'refusal', refusal: additional_kwargs.refusal },\n ];\n }\n\n input.push({\n type: 'message',\n role: 'assistant',\n ...(lcMsg.id && !zdrEnabled ? { id: lcMsg.id } : {}),\n content:\n typeof content === 'string'\n ? content\n : content.flatMap((item) => {\n if (item.type === 'text') {\n return {\n type: 'output_text',\n text: item.text,\n // @ts-expect-error TODO: add types for `annotations`\n annotations: item.annotations ?? [],\n };\n }\n\n if (item.type === 'output_text' || item.type === 'refusal') {\n return item;\n }\n\n return [];\n }),\n });\n\n const functionCallIds = additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY];\n\n if (isAIMessage(lcMsg) && !!lcMsg.tool_calls?.length) {\n input.push(\n ...lcMsg.tool_calls.map(\n (toolCall): ResponsesInputItem => ({\n type: 'function_call',\n name: toolCall.name,\n arguments: JSON.stringify(toolCall.args),\n call_id: toolCall.id!,\n ...(zdrEnabled ? { id: functionCallIds?.[toolCall.id!] } : {}),\n })\n )\n );\n } else if (additional_kwargs.tool_calls) {\n input.push(\n ...additional_kwargs.tool_calls.map(\n (toolCall): ResponsesInputItem => ({\n type: 'function_call',\n name: toolCall.function.name,\n call_id: toolCall.id,\n arguments: toolCall.function.arguments,\n ...(zdrEnabled ? { id: functionCallIds?.[toolCall.id] } : {}),\n })\n )\n );\n }\n\n const toolOutputs =\n ((\n lcMsg.response_metadata.output as\n | Array<ResponsesInputItem>\n | undefined\n )?.length ?? 0) > 0\n ? lcMsg.response_metadata.output\n : additional_kwargs.tool_outputs;\n\n const fallthroughCallTypes: ResponsesInputItem['type'][] = [\n 'computer_call',\n /** @ts-ignore */\n 'mcp_call',\n /** @ts-ignore */\n 'code_interpreter_call',\n /** @ts-ignore */\n 'image_generation_call',\n ];\n\n if (toolOutputs != null) {\n const castToolOutputs = toolOutputs as Array<ResponsesInputItem>;\n const fallthroughCalls = castToolOutputs.filter((item) =>\n fallthroughCallTypes.includes(item.type)\n );\n if (fallthroughCalls.length > 0) input.push(...fallthroughCalls);\n }\n\n return input;\n }\n\n if (role === 'user' || role === 'system' || role === 'developer') {\n if (typeof lcMsg.content === 'string') {\n return { type: 'message', role, content: lcMsg.content };\n }\n\n const messages: ResponsesInputItem[] = [];\n const content = lcMsg.content.flatMap((item) => {\n if (item.type === 'mcp_approval_response') {\n messages.push({\n // @ts-ignore\n type: 'mcp_approval_response',\n approval_request_id: item.approval_request_id,\n approve: item.approve,\n });\n }\n if (isDataContentBlock(item)) {\n return convertToProviderContentBlock(\n item,\n completionsApiContentBlockConverter\n );\n }\n if (item.type === 'text') {\n return {\n type: 'input_text',\n text: item.text,\n };\n }\n if (item.type === 'image_url') {\n return {\n type: 'input_image',\n image_url:\n typeof item.image_url === 'string'\n ? item.image_url\n : item.image_url.url,\n detail:\n typeof item.image_url === 'string'\n ? 'auto'\n : item.image_url.detail,\n };\n }\n if (\n item.type === 'input_text' ||\n item.type === 'input_image' ||\n item.type === 'input_file'\n ) {\n return item;\n }\n return [];\n });\n\n if (content.length > 0) {\n messages.push({ type: 'message', role, content });\n }\n return messages;\n }\n\n console.warn(\n `Unsupported role found when converting to OpenAI Responses API: ${role}`\n );\n return [];\n }\n );\n}\n\nexport function isReasoningModel(model?: string) {\n return (\n model != null &&\n model !== '' &&\n (/^o\\d/.test(model) || /^gpt-[5-9]/.test(model))\n );\n}\n\nfunction _convertOpenAIResponsesMessageToBaseMessage(\n response: ResponsesCreateInvoke | ResponsesParseInvoke\n): BaseMessage {\n if (response.error) {\n // TODO: add support for `addLangChainErrorFields`\n const error = new Error(response.error.message);\n error.name = response.error.code;\n throw error;\n }\n\n let messageId: string | undefined;\n const content: MessageContent = [];\n const tool_calls: ToolCall[] = [];\n const invalid_tool_calls: InvalidToolCall[] = [];\n const response_metadata: Record<string, unknown> = {\n model: response.model,\n created_at: response.created_at,\n id: response.id,\n incomplete_details: response.incomplete_details,\n metadata: response.metadata,\n object: response.object,\n status: response.status,\n user: response.user,\n service_tier: response.service_tier,\n\n // for compatibility with chat completion calls.\n model_name: response.model,\n };\n\n const additional_kwargs: {\n [key: string]: unknown;\n refusal?: string;\n reasoning?: OpenAIClient.Responses.ResponseReasoningItem;\n tool_outputs?: unknown[];\n parsed?: unknown;\n [_FUNCTION_CALL_IDS_MAP_KEY]?: Record<string, string>;\n } = {};\n\n for (const item of response.output) {\n if (item.type === 'message') {\n messageId = item.id;\n content.push(\n ...item.content.flatMap((part) => {\n if (part.type === 'output_text') {\n if ('parsed' in part && part.parsed != null) {\n additional_kwargs.parsed = part.parsed;\n }\n return {\n type: 'text',\n text: part.text,\n annotations: part.annotations,\n };\n }\n\n if (part.type === 'refusal') {\n additional_kwargs.refusal = part.refusal;\n return [];\n }\n\n return part;\n })\n );\n } else if (item.type === 'function_call') {\n const fnAdapter = {\n function: { name: item.name, arguments: item.arguments },\n id: item.call_id,\n };\n\n try {\n tool_calls.push(parseToolCall(fnAdapter, { returnId: true }));\n } catch (e: unknown) {\n let errMessage: string | undefined;\n if (\n typeof e === 'object' &&\n e != null &&\n 'message' in e &&\n typeof e.message === 'string'\n ) {\n errMessage = e.message;\n }\n invalid_tool_calls.push(makeInvalidToolCall(fnAdapter, errMessage));\n }\n\n additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY] ??= {};\n if (item.id) {\n additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY][item.call_id] = item.id;\n }\n } else if (item.type === 'reasoning') {\n additional_kwargs.reasoning = item;\n } else {\n additional_kwargs.tool_outputs ??= [];\n additional_kwargs.tool_outputs.push(item);\n }\n }\n\n return new AIMessage({\n id: messageId,\n content,\n tool_calls,\n invalid_tool_calls,\n usage_metadata: response.usage,\n additional_kwargs,\n response_metadata,\n });\n}\n\nexport function _convertOpenAIResponsesDeltaToBaseMessageChunk(\n chunk: ResponseReturnStreamEvents\n) {\n const content: Record<string, unknown>[] = [];\n let generationInfo: Record<string, unknown> = {};\n let usage_metadata: UsageMetadata | undefined;\n const tool_call_chunks: ToolCallChunk[] = [];\n const response_metadata: Record<string, unknown> = {};\n const additional_kwargs: {\n [key: string]: unknown;\n reasoning?: Partial<ChatOpenAIReasoningSummary>;\n tool_outputs?: unknown[];\n } = {};\n let id: string | undefined;\n if (chunk.type === 'response.output_text.delta') {\n content.push({\n type: 'text',\n text: chunk.delta,\n index: chunk.content_index,\n });\n /** @ts-ignore */\n } else if (chunk.type === 'response.output_text_annotation.added') {\n content.push({\n type: 'text',\n text: '',\n /** @ts-ignore */\n annotations: [chunk.annotation],\n /** @ts-ignore */\n index: chunk.content_index,\n });\n } else if (\n chunk.type === 'response.output_item.added' &&\n chunk.item.type === 'message'\n ) {\n id = chunk.item.id;\n } else if (\n chunk.type === 'response.output_item.added' &&\n chunk.item.type === 'function_call'\n ) {\n tool_call_chunks.push({\n type: 'tool_call_chunk',\n name: chunk.item.name,\n args: chunk.item.arguments,\n id: chunk.item.call_id,\n index: chunk.output_index,\n });\n\n additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY] = {\n [chunk.item.call_id]: chunk.item.id,\n };\n } else if (\n chunk.type === 'response.output_item.done' &&\n [\n 'web_search_call',\n 'file_search_call',\n 'computer_call',\n 'code_interpreter_call',\n 'mcp_call',\n 'mcp_list_tools',\n 'mcp_approval_request',\n 'image_generation_call',\n ].includes(chunk.item.type)\n ) {\n additional_kwargs.tool_outputs = [chunk.item];\n } else if (chunk.type === 'response.created') {\n response_metadata.id = chunk.response.id;\n response_metadata.model_name = chunk.response.model;\n response_metadata.model = chunk.response.model;\n } else if (chunk.type === 'response.completed') {\n const msg = _convertOpenAIResponsesMessageToBaseMessage(chunk.response);\n\n usage_metadata = chunk.response.usage;\n if (chunk.response.text?.format?.type === 'json_schema') {\n additional_kwargs.parsed ??= JSON.parse(msg.text);\n }\n for (const [key, value] of Object.entries(chunk.response)) {\n if (key !== 'id') response_metadata[key] = value;\n }\n } else if (chunk.type === 'response.function_call_arguments.delta') {\n tool_call_chunks.push({\n type: 'tool_call_chunk',\n args: chunk.delta,\n index: chunk.output_index,\n });\n } else if (\n chunk.type === 'response.web_search_call.completed' ||\n chunk.type === 'response.file_search_call.completed'\n ) {\n generationInfo = {\n tool_outputs: {\n id: chunk.item_id,\n type: chunk.type.replace('response.', '').replace('.completed', ''),\n status: 'completed',\n },\n };\n } else if (chunk.type === 'response.refusal.done') {\n additional_kwargs.refusal = chunk.refusal;\n } else if (\n chunk.type === 'response.output_item.added' &&\n 'item' in chunk &&\n chunk.item.type === 'reasoning'\n ) {\n const summary: ChatOpenAIReasoningSummary['summary'] | undefined = chunk\n .item.summary\n ? chunk.item.summary.map((s, index) => ({\n ...s,\n index,\n }))\n : undefined;\n\n additional_kwargs.reasoning = {\n // We only capture ID in the first chunk or else the concatenated result of all chunks will\n // have an ID field that is repeated once per chunk. There is special handling for the `type`\n // field that prevents this, however.\n id: chunk.item.id,\n type: chunk.item.type,\n ...(summary ? { summary } : {}),\n };\n } else if (chunk.type === 'response.reasoning_summary_part.added') {\n additional_kwargs.reasoning = {\n type: 'reasoning',\n summary: [{ ...chunk.part, index: chunk.summary_index }],\n };\n } else if (chunk.type === 'response.reasoning_summary_text.delta') {\n additional_kwargs.reasoning = {\n type: 'reasoning',\n summary: [\n { text: chunk.delta, type: 'summary_text', index: chunk.summary_index },\n ],\n };\n /** @ts-ignore */\n } else if (chunk.type === 'response.image_generation_call.partial_image') {\n // noop/fixme: retaining partial images in a message chunk means that _all_\n // partial images get kept in history, so we don't do anything here.\n return null;\n } else {\n return null;\n }\n\n return new ChatGenerationChunk({\n // Legacy reasons, `onLLMNewToken` should pulls this out\n text: content.map((part) => part.text).join(''),\n message: new AIMessageChunk({\n id,\n content,\n tool_call_chunks,\n usage_metadata,\n additional_kwargs,\n response_metadata,\n }),\n generationInfo,\n });\n}\n"],"names":["ChatMessage","parseBase64DataUrl","parseMimeType","messages","isDataContentBlock","convertToProviderContentBlock","isAIMessage","convertLangChainToolCallToOpenAI","parseToolCall","makeInvalidToolCall","AIMessage","ChatGenerationChunk","AIMessageChunk"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../src/llm/openai/utils/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { type OpenAI as OpenAIClient } from 'openai';\nimport type {\n ChatCompletionContentPartText,\n ChatCompletionContentPartImage,\n ChatCompletionContentPartInputAudio,\n ChatCompletionContentPart,\n} from 'openai/resources/chat/completions';\nimport {\n AIMessage,\n AIMessageChunk,\n type BaseMessage,\n ChatMessage,\n ToolMessage,\n isAIMessage,\n type UsageMetadata,\n type BaseMessageFields,\n type MessageContent,\n type InvalidToolCall,\n type MessageContentImageUrl,\n StandardContentBlockConverter,\n parseBase64DataUrl,\n parseMimeType,\n convertToProviderContentBlock,\n isDataContentBlock,\n} from '@langchain/core/messages';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport {\n convertLangChainToolCallToOpenAI,\n makeInvalidToolCall,\n parseToolCall,\n} from '@langchain/core/output_parsers/openai_tools';\nimport type { ToolCall, ToolCallChunk } from '@langchain/core/messages/tool';\nimport type {\n OpenAICallOptions,\n OpenAIChatInput,\n ChatOpenAIReasoningSummary,\n} from '@langchain/openai';\n\nexport type { OpenAICallOptions, OpenAIChatInput };\n\n// Utility types to get hidden OpenAI response types\ntype ExtractAsyncIterableType<T> = T extends AsyncIterable<infer U> ? U : never;\ntype ExcludeController<T> = T extends { controller: unknown } ? never : T;\ntype ExcludeNonController<T> = T extends { controller: unknown } ? T : never;\n\ntype ResponsesCreate = OpenAIClient.Responses['create'];\ntype ResponsesParse = OpenAIClient.Responses['parse'];\n\ntype ResponsesInputItem = OpenAIClient.Responses.ResponseInputItem;\n\ntype ResponsesCreateInvoke = ExcludeController<\n Awaited<ReturnType<ResponsesCreate>>\n>;\n\ntype ResponsesParseInvoke = ExcludeController<\n Awaited<ReturnType<ResponsesParse>>\n>;\n\ntype ResponsesCreateStream = ExcludeNonController<\n Awaited<ReturnType<ResponsesCreate>>\n>;\n\nexport type ResponseReturnStreamEvents =\n ExtractAsyncIterableType<ResponsesCreateStream>;\n\n// TODO import from SDK when available\ntype OpenAIRoleEnum =\n | 'system'\n | 'developer'\n | 'assistant'\n | 'user'\n | 'function'\n | 'tool';\n\ntype OpenAICompletionParam =\n OpenAIClient.Chat.Completions.ChatCompletionMessageParam;\n\nfunction extractGenericMessageCustomRole(message: ChatMessage) {\n if (\n message.role !== 'system' &&\n message.role !== 'developer' &&\n message.role !== 'assistant' &&\n message.role !== 'user' &&\n message.role !== 'function' &&\n message.role !== 'tool'\n ) {\n console.warn(`Unknown message role: ${message.role}`);\n }\n\n return message.role as OpenAIRoleEnum;\n}\n\nexport function messageToOpenAIRole(message: BaseMessage): OpenAIRoleEnum {\n const type = message._getType();\n switch (type) {\n case 'system':\n return 'system';\n case 'ai':\n return 'assistant';\n case 'human':\n return 'user';\n case 'function':\n return 'function';\n case 'tool':\n return 'tool';\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\nconst completionsApiContentBlockConverter: StandardContentBlockConverter<{\n text: ChatCompletionContentPartText;\n image: ChatCompletionContentPartImage;\n audio: ChatCompletionContentPartInputAudio;\n file: ChatCompletionContentPart.File;\n}> = {\n providerName: 'ChatOpenAI',\n\n fromStandardTextBlock(block): ChatCompletionContentPartText {\n return { type: 'text', text: block.text };\n },\n\n fromStandardImageBlock(block): ChatCompletionContentPartImage {\n if (block.source_type === 'url') {\n return {\n type: 'image_url',\n image_url: {\n url: block.url,\n ...(block.metadata?.detail\n ? { detail: block.metadata.detail as 'auto' | 'low' | 'high' }\n : {}),\n },\n };\n }\n\n if (block.source_type === 'base64') {\n const url = `data:${block.mime_type ?? ''};base64,${block.data}`;\n return {\n type: 'image_url',\n image_url: {\n url,\n ...(block.metadata?.detail\n ? { detail: block.metadata.detail as 'auto' | 'low' | 'high' }\n : {}),\n },\n };\n }\n\n throw new Error(\n `Image content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n );\n },\n\n fromStandardAudioBlock(block): ChatCompletionContentPartInputAudio {\n if (block.source_type === 'url') {\n const data = parseBase64DataUrl({ dataUrl: block.url });\n if (!data) {\n throw new Error(\n `URL audio blocks with source_type ${block.source_type} must be formatted as a data URL for ChatOpenAI`\n );\n }\n\n const rawMimeType = data.mime_type || block.mime_type || '';\n let mimeType: { type: string; subtype: string };\n\n try {\n mimeType = parseMimeType(rawMimeType);\n } catch {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n if (\n mimeType.type !== 'audio' ||\n (mimeType.subtype !== 'wav' && mimeType.subtype !== 'mp3')\n ) {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n return {\n type: 'input_audio',\n input_audio: {\n format: mimeType.subtype,\n data: data.data,\n },\n };\n }\n\n if (block.source_type === 'base64') {\n let mimeType: { type: string; subtype: string };\n\n try {\n mimeType = parseMimeType(block.mime_type ?? '');\n } catch {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n if (\n mimeType.type !== 'audio' ||\n (mimeType.subtype !== 'wav' && mimeType.subtype !== 'mp3')\n ) {\n throw new Error(\n `Audio blocks with source_type ${block.source_type} must have mime type of audio/wav or audio/mp3`\n );\n }\n\n return {\n type: 'input_audio',\n input_audio: {\n format: mimeType.subtype,\n data: block.data,\n },\n };\n }\n\n throw new Error(\n `Audio content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n );\n },\n\n fromStandardFileBlock(block): ChatCompletionContentPart.File {\n if (block.source_type === 'url') {\n const data = parseBase64DataUrl({ dataUrl: block.url });\n if (!data) {\n throw new Error(\n `URL file blocks with source_type ${block.source_type} must be formatted as a data URL for ChatOpenAI`\n );\n }\n\n return {\n type: 'file',\n file: {\n file_data: block.url, // formatted as base64 data URL\n ...(block.metadata?.filename || block.metadata?.name\n ? {\n filename: (block.metadata.filename ||\n block.metadata.name) as string,\n }\n : {}),\n },\n };\n }\n\n if (block.source_type === 'base64') {\n return {\n type: 'file',\n file: {\n file_data: `data:${block.mime_type ?? ''};base64,${block.data}`,\n ...(block.metadata?.filename ||\n block.metadata?.name ||\n block.metadata?.title\n ? {\n filename: (block.metadata.filename ||\n block.metadata.name ||\n block.metadata.title) as string,\n }\n : {}),\n },\n };\n }\n\n if (block.source_type === 'id') {\n return {\n type: 'file',\n file: {\n file_id: block.id,\n },\n };\n }\n\n throw new Error(\n `File content blocks with source_type ${block.source_type} are not supported for ChatOpenAI`\n );\n },\n};\n\n// Used in LangSmith, export is important here\nexport function _convertMessagesToOpenAIParams(\n messages: BaseMessage[],\n model?: string\n): OpenAICompletionParam[] {\n // TODO: Function messages do not support array content, fix cast\n return messages.flatMap((message) => {\n let role = messageToOpenAIRole(message);\n if (role === 'system' && isReasoningModel(model)) {\n role = 'developer';\n }\n\n const content =\n typeof message.content === 'string'\n ? message.content\n : message.content.map((m) => {\n if (isDataContentBlock(m)) {\n return convertToProviderContentBlock(\n m,\n completionsApiContentBlockConverter\n );\n }\n return m;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const completionParam: Record<string, any> = {\n role,\n content,\n };\n if (message.name != null) {\n completionParam.name = message.name;\n }\n if (message.additional_kwargs.function_call != null) {\n completionParam.function_call = message.additional_kwargs.function_call;\n completionParam.content = '';\n }\n if (isAIMessage(message) && !!message.tool_calls?.length) {\n completionParam.tool_calls = message.tool_calls.map(\n convertLangChainToolCallToOpenAI\n );\n completionParam.content = '';\n } else {\n if (message.additional_kwargs.tool_calls != null) {\n completionParam.tool_calls = message.additional_kwargs.tool_calls;\n }\n if ((message as ToolMessage).tool_call_id != null) {\n completionParam.tool_call_id = (message as ToolMessage).tool_call_id;\n }\n }\n\n if (\n message.additional_kwargs.audio &&\n typeof message.additional_kwargs.audio === 'object' &&\n 'id' in message.additional_kwargs.audio\n ) {\n const audioMessage = {\n role: 'assistant',\n audio: {\n id: message.additional_kwargs.audio.id,\n },\n };\n return [completionParam, audioMessage] as OpenAICompletionParam[];\n }\n\n return completionParam as OpenAICompletionParam;\n });\n}\n\nconst _FUNCTION_CALL_IDS_MAP_KEY = '__openai_function_call_ids__';\n\nfunction _convertReasoningSummaryToOpenAIResponsesParams(\n reasoning: ChatOpenAIReasoningSummary\n): OpenAIClient.Responses.ResponseReasoningItem {\n // combine summary parts that have the the same index and then remove the indexes\n const summary = (\n reasoning.summary.length > 1\n ? reasoning.summary.reduce(\n (acc, curr) => {\n const last = acc.at(-1);\n\n if (last!.index === curr.index) {\n last!.text += curr.text;\n } else {\n acc.push(curr);\n }\n return acc;\n },\n [{ ...reasoning.summary[0] }]\n )\n : reasoning.summary\n ).map((s) =>\n Object.fromEntries(Object.entries(s).filter(([k]) => k !== 'index'))\n ) as OpenAIClient.Responses.ResponseReasoningItem.Summary[];\n\n return {\n ...reasoning,\n summary,\n } as OpenAIClient.Responses.ResponseReasoningItem;\n}\n\nexport function _convertMessagesToOpenAIResponsesParams(\n messages: BaseMessage[],\n model?: string,\n zdrEnabled?: boolean\n): ResponsesInputItem[] {\n return messages.flatMap(\n (lcMsg): ResponsesInputItem | ResponsesInputItem[] => {\n const additional_kwargs =\n lcMsg.additional_kwargs as BaseMessageFields['additional_kwargs'] & {\n [_FUNCTION_CALL_IDS_MAP_KEY]?: Record<string, string>;\n reasoning?: OpenAIClient.Responses.ResponseReasoningItem;\n type?: string;\n refusal?: string;\n };\n\n let role = messageToOpenAIRole(lcMsg);\n if (role === 'system' && isReasoningModel(model)) role = 'developer';\n\n if (role === 'function') {\n throw new Error('Function messages are not supported in Responses API');\n }\n\n if (role === 'tool') {\n const toolMessage = lcMsg as ToolMessage;\n\n // Handle computer call output\n if (additional_kwargs.type === 'computer_call_output') {\n const output = (() => {\n if (typeof toolMessage.content === 'string') {\n return {\n type: 'computer_screenshot' as const,\n image_url: toolMessage.content,\n };\n }\n\n if (Array.isArray(toolMessage.content)) {\n const oaiScreenshot = toolMessage.content.find(\n (i) => i.type === 'computer_screenshot'\n ) as { type: 'computer_screenshot'; image_url: string };\n\n if (oaiScreenshot) return oaiScreenshot;\n\n const lcImage = toolMessage.content.find(\n (i) => i.type === 'image_url'\n ) as MessageContentImageUrl;\n\n if (lcImage) {\n return {\n type: 'computer_screenshot' as const,\n image_url:\n typeof lcImage.image_url === 'string'\n ? lcImage.image_url\n : lcImage.image_url.url,\n };\n }\n }\n\n throw new Error('Invalid computer call output');\n })();\n\n return {\n type: 'computer_call_output',\n output,\n call_id: toolMessage.tool_call_id,\n };\n }\n\n return {\n type: 'function_call_output',\n call_id: toolMessage.tool_call_id,\n id: toolMessage.id?.startsWith('fc_') ? toolMessage.id : undefined,\n output:\n typeof toolMessage.content !== 'string'\n ? JSON.stringify(toolMessage.content)\n : toolMessage.content,\n };\n }\n\n if (role === 'assistant') {\n // if we have the original response items, just reuse them\n if (\n !zdrEnabled &&\n lcMsg.response_metadata.output != null &&\n Array.isArray(lcMsg.response_metadata.output) &&\n lcMsg.response_metadata.output.length > 0 &&\n lcMsg.response_metadata.output.every((item) => 'type' in item)\n ) {\n return lcMsg.response_metadata.output;\n }\n\n // otherwise, try to reconstruct the response from what we have\n\n const input: ResponsesInputItem[] = [];\n\n // reasoning items\n if (additional_kwargs.reasoning && !zdrEnabled) {\n const reasoningItem = _convertReasoningSummaryToOpenAIResponsesParams(\n additional_kwargs.reasoning\n );\n input.push(reasoningItem);\n }\n\n // ai content\n let { content } = lcMsg;\n if (additional_kwargs.refusal) {\n if (typeof content === 'string') {\n content = [{ type: 'output_text', text: content, annotations: [] }];\n }\n content = [\n ...content,\n { type: 'refusal', refusal: additional_kwargs.refusal },\n ];\n }\n\n input.push({\n type: 'message',\n role: 'assistant',\n ...(lcMsg.id && !zdrEnabled ? { id: lcMsg.id } : {}),\n content:\n typeof content === 'string'\n ? content\n : content.flatMap((item) => {\n if (item.type === 'text') {\n return {\n type: 'output_text',\n text: item.text,\n // @ts-expect-error TODO: add types for `annotations`\n annotations: item.annotations ?? [],\n };\n }\n\n if (item.type === 'output_text' || item.type === 'refusal') {\n return item;\n }\n\n return [];\n }),\n });\n\n const functionCallIds = additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY];\n\n if (isAIMessage(lcMsg) && !!lcMsg.tool_calls?.length) {\n input.push(\n ...lcMsg.tool_calls.map(\n (toolCall): ResponsesInputItem => ({\n type: 'function_call',\n name: toolCall.name,\n arguments: JSON.stringify(toolCall.args),\n call_id: toolCall.id!,\n ...(zdrEnabled ? { id: functionCallIds?.[toolCall.id!] } : {}),\n })\n )\n );\n } else if (additional_kwargs.tool_calls) {\n input.push(\n ...additional_kwargs.tool_calls.map(\n (toolCall): ResponsesInputItem => ({\n type: 'function_call',\n name: toolCall.function.name,\n call_id: toolCall.id,\n arguments: toolCall.function.arguments,\n ...(zdrEnabled ? { id: functionCallIds?.[toolCall.id] } : {}),\n })\n )\n );\n }\n\n const toolOutputs =\n ((\n lcMsg.response_metadata.output as\n | Array<ResponsesInputItem>\n | undefined\n )?.length ?? 0) > 0\n ? lcMsg.response_metadata.output\n : additional_kwargs.tool_outputs;\n\n const fallthroughCallTypes: ResponsesInputItem['type'][] = [\n 'computer_call',\n /** @ts-ignore */\n 'mcp_call',\n /** @ts-ignore */\n 'code_interpreter_call',\n /** @ts-ignore */\n 'image_generation_call',\n ];\n\n if (toolOutputs != null) {\n const castToolOutputs = toolOutputs as Array<ResponsesInputItem>;\n const fallthroughCalls = castToolOutputs.filter((item) =>\n fallthroughCallTypes.includes(item.type)\n );\n if (fallthroughCalls.length > 0) input.push(...fallthroughCalls);\n }\n\n return input;\n }\n\n if (role === 'user' || role === 'system' || role === 'developer') {\n if (typeof lcMsg.content === 'string') {\n return { type: 'message', role, content: lcMsg.content };\n }\n\n const messages: ResponsesInputItem[] = [];\n const content = lcMsg.content.flatMap((item) => {\n if (item.type === 'mcp_approval_response') {\n messages.push({\n // @ts-ignore\n type: 'mcp_approval_response',\n approval_request_id: item.approval_request_id,\n approve: item.approve,\n });\n }\n if (isDataContentBlock(item)) {\n return convertToProviderContentBlock(\n item,\n completionsApiContentBlockConverter\n );\n }\n if (item.type === 'text') {\n return {\n type: 'input_text',\n text: item.text,\n };\n }\n if (item.type === 'image_url') {\n return {\n type: 'input_image',\n image_url:\n typeof item.image_url === 'string'\n ? item.image_url\n : item.image_url.url,\n detail:\n typeof item.image_url === 'string'\n ? 'auto'\n : item.image_url.detail,\n };\n }\n if (\n item.type === 'input_text' ||\n item.type === 'input_image' ||\n item.type === 'input_file'\n ) {\n return item;\n }\n return [];\n });\n\n if (content.length > 0) {\n messages.push({ type: 'message', role, content });\n }\n return messages;\n }\n\n console.warn(\n `Unsupported role found when converting to OpenAI Responses API: ${role}`\n );\n return [];\n }\n );\n}\n\nexport function isReasoningModel(model?: string) {\n return model != null && model !== '' && /\\b(o\\d|gpt-[5-9])\\b/i.test(model);\n}\n\nfunction _convertOpenAIResponsesMessageToBaseMessage(\n response: ResponsesCreateInvoke | ResponsesParseInvoke\n): BaseMessage {\n if (response.error) {\n // TODO: add support for `addLangChainErrorFields`\n const error = new Error(response.error.message);\n error.name = response.error.code;\n throw error;\n }\n\n let messageId: string | undefined;\n const content: MessageContent = [];\n const tool_calls: ToolCall[] = [];\n const invalid_tool_calls: InvalidToolCall[] = [];\n const response_metadata: Record<string, unknown> = {\n model: response.model,\n created_at: response.created_at,\n id: response.id,\n incomplete_details: response.incomplete_details,\n metadata: response.metadata,\n object: response.object,\n status: response.status,\n user: response.user,\n service_tier: response.service_tier,\n\n // for compatibility with chat completion calls.\n model_name: response.model,\n };\n\n const additional_kwargs: {\n [key: string]: unknown;\n refusal?: string;\n reasoning?: OpenAIClient.Responses.ResponseReasoningItem;\n tool_outputs?: unknown[];\n parsed?: unknown;\n [_FUNCTION_CALL_IDS_MAP_KEY]?: Record<string, string>;\n } = {};\n\n for (const item of response.output) {\n if (item.type === 'message') {\n messageId = item.id;\n content.push(\n ...item.content.flatMap((part) => {\n if (part.type === 'output_text') {\n if ('parsed' in part && part.parsed != null) {\n additional_kwargs.parsed = part.parsed;\n }\n return {\n type: 'text',\n text: part.text,\n annotations: part.annotations,\n };\n }\n\n if (part.type === 'refusal') {\n additional_kwargs.refusal = part.refusal;\n return [];\n }\n\n return part;\n })\n );\n } else if (item.type === 'function_call') {\n const fnAdapter = {\n function: { name: item.name, arguments: item.arguments },\n id: item.call_id,\n };\n\n try {\n tool_calls.push(parseToolCall(fnAdapter, { returnId: true }));\n } catch (e: unknown) {\n let errMessage: string | undefined;\n if (\n typeof e === 'object' &&\n e != null &&\n 'message' in e &&\n typeof e.message === 'string'\n ) {\n errMessage = e.message;\n }\n invalid_tool_calls.push(makeInvalidToolCall(fnAdapter, errMessage));\n }\n\n additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY] ??= {};\n if (item.id) {\n additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY][item.call_id] = item.id;\n }\n } else if (item.type === 'reasoning') {\n additional_kwargs.reasoning = item;\n } else {\n additional_kwargs.tool_outputs ??= [];\n additional_kwargs.tool_outputs.push(item);\n }\n }\n\n return new AIMessage({\n id: messageId,\n content,\n tool_calls,\n invalid_tool_calls,\n usage_metadata: response.usage,\n additional_kwargs,\n response_metadata,\n });\n}\n\nexport function _convertOpenAIResponsesDeltaToBaseMessageChunk(\n chunk: ResponseReturnStreamEvents\n) {\n const content: Record<string, unknown>[] = [];\n let generationInfo: Record<string, unknown> = {};\n let usage_metadata: UsageMetadata | undefined;\n const tool_call_chunks: ToolCallChunk[] = [];\n const response_metadata: Record<string, unknown> = {};\n const additional_kwargs: {\n [key: string]: unknown;\n reasoning?: Partial<ChatOpenAIReasoningSummary>;\n tool_outputs?: unknown[];\n } = {};\n let id: string | undefined;\n if (chunk.type === 'response.output_text.delta') {\n content.push({\n type: 'text',\n text: chunk.delta,\n index: chunk.content_index,\n });\n /** @ts-ignore */\n } else if (chunk.type === 'response.output_text_annotation.added') {\n content.push({\n type: 'text',\n text: '',\n /** @ts-ignore */\n annotations: [chunk.annotation],\n /** @ts-ignore */\n index: chunk.content_index,\n });\n } else if (\n chunk.type === 'response.output_item.added' &&\n chunk.item.type === 'message'\n ) {\n id = chunk.item.id;\n } else if (\n chunk.type === 'response.output_item.added' &&\n chunk.item.type === 'function_call'\n ) {\n tool_call_chunks.push({\n type: 'tool_call_chunk',\n name: chunk.item.name,\n args: chunk.item.arguments,\n id: chunk.item.call_id,\n index: chunk.output_index,\n });\n\n additional_kwargs[_FUNCTION_CALL_IDS_MAP_KEY] = {\n [chunk.item.call_id]: chunk.item.id,\n };\n } else if (\n chunk.type === 'response.output_item.done' &&\n [\n 'web_search_call',\n 'file_search_call',\n 'computer_call',\n 'code_interpreter_call',\n 'mcp_call',\n 'mcp_list_tools',\n 'mcp_approval_request',\n 'image_generation_call',\n ].includes(chunk.item.type)\n ) {\n additional_kwargs.tool_outputs = [chunk.item];\n } else if (chunk.type === 'response.created') {\n response_metadata.id = chunk.response.id;\n response_metadata.model_name = chunk.response.model;\n response_metadata.model = chunk.response.model;\n } else if (chunk.type === 'response.completed') {\n const msg = _convertOpenAIResponsesMessageToBaseMessage(chunk.response);\n\n usage_metadata = chunk.response.usage;\n if (chunk.response.text?.format?.type === 'json_schema') {\n additional_kwargs.parsed ??= JSON.parse(msg.text);\n }\n for (const [key, value] of Object.entries(chunk.response)) {\n if (key !== 'id') response_metadata[key] = value;\n }\n } else if (chunk.type === 'response.function_call_arguments.delta') {\n tool_call_chunks.push({\n type: 'tool_call_chunk',\n args: chunk.delta,\n index: chunk.output_index,\n });\n } else if (\n chunk.type === 'response.web_search_call.completed' ||\n chunk.type === 'response.file_search_call.completed'\n ) {\n generationInfo = {\n tool_outputs: {\n id: chunk.item_id,\n type: chunk.type.replace('response.', '').replace('.completed', ''),\n status: 'completed',\n },\n };\n } else if (chunk.type === 'response.refusal.done') {\n additional_kwargs.refusal = chunk.refusal;\n } else if (\n chunk.type === 'response.output_item.added' &&\n 'item' in chunk &&\n chunk.item.type === 'reasoning'\n ) {\n const summary: ChatOpenAIReasoningSummary['summary'] | undefined = chunk\n .item.summary\n ? chunk.item.summary.map((s, index) => ({\n ...s,\n index,\n }))\n : undefined;\n\n additional_kwargs.reasoning = {\n // We only capture ID in the first chunk or else the concatenated result of all chunks will\n // have an ID field that is repeated once per chunk. There is special handling for the `type`\n // field that prevents this, however.\n id: chunk.item.id,\n type: chunk.item.type,\n ...(summary ? { summary } : {}),\n };\n } else if (chunk.type === 'response.reasoning_summary_part.added') {\n additional_kwargs.reasoning = {\n type: 'reasoning',\n summary: [{ ...chunk.part, index: chunk.summary_index }],\n };\n } else if (chunk.type === 'response.reasoning_summary_text.delta') {\n additional_kwargs.reasoning = {\n type: 'reasoning',\n summary: [\n { text: chunk.delta, type: 'summary_text', index: chunk.summary_index },\n ],\n };\n /** @ts-ignore */\n } else if (chunk.type === 'response.image_generation_call.partial_image') {\n // noop/fixme: retaining partial images in a message chunk means that _all_\n // partial images get kept in history, so we don't do anything here.\n return null;\n } else {\n return null;\n }\n\n return new ChatGenerationChunk({\n // Legacy reasons, `onLLMNewToken` should pulls this out\n text: content.map((part) => part.text).join(''),\n message: new AIMessageChunk({\n id,\n content,\n tool_call_chunks,\n usage_metadata,\n additional_kwargs,\n response_metadata,\n }),\n generationInfo,\n });\n}\n"],"names":["ChatMessage","parseBase64DataUrl","parseMimeType","messages","isDataContentBlock","convertToProviderContentBlock","isAIMessage","convertLangChainToolCallToOpenAI","parseToolCall","makeInvalidToolCall","AIMessage","ChatGenerationChunk","AIMessageChunk"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var ollama = require('@langchain/ollama');
|
|
4
3
|
var mistralai = require('@langchain/mistralai');
|
|
5
4
|
var aws = require('@langchain/aws');
|
|
6
5
|
var web = require('@langchain/community/chat_models/bedrock/web');
|
|
@@ -9,13 +8,14 @@ var index = require('./google/index.cjs');
|
|
|
9
8
|
var index$2 = require('./anthropic/index.cjs');
|
|
10
9
|
var index$1 = require('./openrouter/index.cjs');
|
|
11
10
|
var index$4 = require('./vertexai/index.cjs');
|
|
11
|
+
var index$5 = require('./ollama/index.cjs');
|
|
12
12
|
var _enum = require('../common/enum.cjs');
|
|
13
13
|
|
|
14
14
|
// src/llm/providers.ts
|
|
15
15
|
const llmProviders = {
|
|
16
16
|
[_enum.Providers.XAI]: index$3.ChatXAI,
|
|
17
17
|
[_enum.Providers.OPENAI]: index$3.ChatOpenAI,
|
|
18
|
-
[_enum.Providers.OLLAMA]:
|
|
18
|
+
[_enum.Providers.OLLAMA]: index$5.ChatOllama,
|
|
19
19
|
[_enum.Providers.AZURE]: index$3.AzureChatOpenAI,
|
|
20
20
|
[_enum.Providers.VERTEXAI]: index$4.ChatVertexAI,
|
|
21
21
|
[_enum.Providers.DEEPSEEK]: index$3.ChatDeepSeek,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.cjs","sources":["../../../src/llm/providers.ts"],"sourcesContent":["// src/llm/providers.ts\nimport {
|
|
1
|
+
{"version":3,"file":"providers.cjs","sources":["../../../src/llm/providers.ts"],"sourcesContent":["// src/llm/providers.ts\nimport { ChatMistralAI } from '@langchain/mistralai';\nimport { ChatBedrockConverse } from '@langchain/aws';\n// import { ChatAnthropic } from '@langchain/anthropic';\n// import { ChatVertexAI } from '@langchain/google-vertexai';\nimport { BedrockChat } from '@langchain/community/chat_models/bedrock/web';\nimport type {\n ChatModelConstructorMap,\n ProviderOptionsMap,\n ChatModelMap,\n} from '@/types';\nimport {\n AzureChatOpenAI,\n ChatDeepSeek,\n ChatOpenAI,\n ChatXAI,\n} from '@/llm/openai';\nimport { CustomChatGoogleGenerativeAI } from '@/llm/google';\nimport { CustomAnthropic } from '@/llm/anthropic';\nimport { ChatOpenRouter } from '@/llm/openrouter';\nimport { ChatVertexAI } from '@/llm/vertexai';\nimport { ChatOllama } from '@/llm/ollama';\nimport { Providers } from '@/common';\n\nexport const llmProviders: Partial<ChatModelConstructorMap> = {\n [Providers.XAI]: ChatXAI,\n [Providers.OPENAI]: ChatOpenAI,\n [Providers.OLLAMA]: ChatOllama,\n [Providers.AZURE]: AzureChatOpenAI,\n [Providers.VERTEXAI]: ChatVertexAI,\n [Providers.DEEPSEEK]: ChatDeepSeek,\n [Providers.MISTRALAI]: ChatMistralAI,\n [Providers.MISTRAL]: ChatMistralAI,\n [Providers.ANTHROPIC]: CustomAnthropic,\n [Providers.OPENROUTER]: ChatOpenRouter,\n [Providers.BEDROCK_LEGACY]: BedrockChat,\n [Providers.BEDROCK]: ChatBedrockConverse,\n // [Providers.ANTHROPIC]: ChatAnthropic,\n [Providers.GOOGLE]: CustomChatGoogleGenerativeAI,\n};\n\nexport const manualToolStreamProviders = new Set<Providers | string>([\n Providers.ANTHROPIC,\n Providers.BEDROCK,\n Providers.OLLAMA,\n]);\n\nexport const getChatModelClass = <P extends Providers>(\n provider: P\n): new (config: ProviderOptionsMap[P]) => ChatModelMap[P] => {\n const ChatModelClass = llmProviders[provider];\n if (!ChatModelClass) {\n throw new Error(`Unsupported LLM provider: ${provider}`);\n }\n\n return ChatModelClass;\n};\n"],"names":["Providers","ChatXAI","ChatOpenAI","ChatOllama","AzureChatOpenAI","ChatVertexAI","ChatDeepSeek","ChatMistralAI","CustomAnthropic","ChatOpenRouter","BedrockChat","ChatBedrockConverse","CustomChatGoogleGenerativeAI"],"mappings":";;;;;;;;;;;;;AAAA;AAwBa,MAAA,YAAY,GAAqC;AAC5D,IAAA,CAACA,eAAS,CAAC,GAAG,GAAGC,eAAO;AACxB,IAAA,CAACD,eAAS,CAAC,MAAM,GAAGE,kBAAU;AAC9B,IAAA,CAACF,eAAS,CAAC,MAAM,GAAGG,kBAAU;AAC9B,IAAA,CAACH,eAAS,CAAC,KAAK,GAAGI,uBAAe;AAClC,IAAA,CAACJ,eAAS,CAAC,QAAQ,GAAGK,oBAAY;AAClC,IAAA,CAACL,eAAS,CAAC,QAAQ,GAAGM,oBAAY;AAClC,IAAA,CAACN,eAAS,CAAC,SAAS,GAAGO,uBAAa;AACpC,IAAA,CAACP,eAAS,CAAC,OAAO,GAAGO,uBAAa;AAClC,IAAA,CAACP,eAAS,CAAC,SAAS,GAAGQ,uBAAe;AACtC,IAAA,CAACR,eAAS,CAAC,UAAU,GAAGS,sBAAc;AACtC,IAAA,CAACT,eAAS,CAAC,cAAc,GAAGU,eAAW;AACvC,IAAA,CAACV,eAAS,CAAC,OAAO,GAAGW,uBAAmB;;AAExC,IAAA,CAACX,eAAS,CAAC,MAAM,GAAGY,kCAA4B;;AAGrC,MAAA,yBAAyB,GAAG,IAAI,GAAG,CAAqB;AACnE,IAAAZ,eAAS,CAAC,SAAS;AACnB,IAAAA,eAAS,CAAC,OAAO;AACjB,IAAAA,eAAS,CAAC,MAAM;AACjB,CAAA;AAEY,MAAA,iBAAiB,GAAG,CAC/B,QAAW,KAC+C;AAC1D,IAAA,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC;IAC7C,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAA,CAAE,CAAC;;AAG1D,IAAA,OAAO,cAAc;AACvB;;;;;;"}
|
package/dist/cjs/llm/text.cjs
CHANGED
|
@@ -18,7 +18,15 @@ class TextStream {
|
|
|
18
18
|
randomInt(min, max) {
|
|
19
19
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
20
20
|
}
|
|
21
|
-
static BOUNDARIES = new Set([
|
|
21
|
+
static BOUNDARIES = new Set([
|
|
22
|
+
' ',
|
|
23
|
+
'.',
|
|
24
|
+
',',
|
|
25
|
+
'!',
|
|
26
|
+
'?',
|
|
27
|
+
';',
|
|
28
|
+
':',
|
|
29
|
+
]);
|
|
22
30
|
findFirstWordBoundary(text, minSize) {
|
|
23
31
|
if (minSize >= text.length)
|
|
24
32
|
return text.length;
|
|
@@ -33,10 +41,13 @@ class TextStream {
|
|
|
33
41
|
}
|
|
34
42
|
return text.length; // If no boundary found, return entire remaining text
|
|
35
43
|
}
|
|
36
|
-
async *generateText(progressCallback) {
|
|
44
|
+
async *generateText(signal, progressCallback) {
|
|
37
45
|
const { delay, minChunkSize, maxChunkSize } = this;
|
|
38
46
|
while (this.currentIndex < this.text.length) {
|
|
39
|
-
|
|
47
|
+
if (signal?.aborted === true) {
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
40
51
|
const remainingText = this.text.slice(this.currentIndex);
|
|
41
52
|
let chunkSize;
|
|
42
53
|
if (this.firstWordChunk) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.cjs","sources":["../../../src/llm/text.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"text.cjs","sources":["../../../src/llm/text.ts"],"sourcesContent":["export interface TextStreamOptions {\n minChunkSize?: number;\n maxChunkSize?: number;\n delay?: number;\n firstWordChunk?: boolean;\n}\n\nexport type ProgressCallback = (chunk: string) => void;\nexport type PostChunkCallback = (chunk: string) => void;\n\nexport class TextStream {\n private text: string;\n private currentIndex: number;\n private minChunkSize: number;\n private maxChunkSize: number;\n private delay: number;\n private firstWordChunk: boolean;\n\n constructor(text: string, options: TextStreamOptions = {}) {\n this.text = text;\n this.currentIndex = 0;\n this.minChunkSize = options.minChunkSize ?? 4;\n this.maxChunkSize = options.maxChunkSize ?? 8;\n this.delay = options.delay ?? 20;\n this.firstWordChunk = options.firstWordChunk ?? true;\n }\n\n private randomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min)) + min;\n }\n\n private static readonly BOUNDARIES = new Set([\n ' ',\n '.',\n ',',\n '!',\n '?',\n ';',\n ':',\n ]);\n\n private findFirstWordBoundary(text: string, minSize: number): number {\n if (minSize >= text.length) return text.length;\n\n // Ensure we meet the minimum size first\n let pos = minSize;\n\n // Look forward until we find a boundary\n while (pos < text.length) {\n if (TextStream.BOUNDARIES.has(text[pos])) {\n return pos + 1; // Include the boundary character\n }\n pos++;\n }\n\n return text.length; // If no boundary found, return entire remaining text\n }\n\n async *generateText(\n signal?: AbortSignal,\n progressCallback?: ProgressCallback\n ): AsyncGenerator<string, void, unknown> {\n const { delay, minChunkSize, maxChunkSize } = this;\n\n while (this.currentIndex < this.text.length) {\n if (signal?.aborted === true) {\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n const remainingText = this.text.slice(this.currentIndex);\n let chunkSize: number;\n\n if (this.firstWordChunk) {\n chunkSize = this.findFirstWordBoundary(remainingText, minChunkSize);\n } else {\n const remainingChars = remainingText.length;\n chunkSize = Math.min(\n this.randomInt(minChunkSize, maxChunkSize + 1),\n remainingChars\n );\n }\n\n const chunk = this.text.slice(\n this.currentIndex,\n this.currentIndex + chunkSize\n );\n progressCallback?.(chunk);\n\n yield chunk;\n this.currentIndex += chunkSize;\n }\n }\n}\n"],"names":[],"mappings":";;MAUa,UAAU,CAAA;AACb,IAAA,IAAI;AACJ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,KAAK;AACL,IAAA,cAAc;IAEtB,WAAY,CAAA,IAAY,EAAE,OAAA,GAA6B,EAAE,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE;QAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI;;IAG9C,SAAS,CAAC,GAAW,EAAE,GAAW,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG;;AAG9C,IAAA,OAAgB,UAAU,GAAG,IAAI,GAAG,CAAC;QAC3C,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;AACJ,KAAA,CAAC;IAEM,qBAAqB,CAAC,IAAY,EAAE,OAAe,EAAA;AACzD,QAAA,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM;;QAG9C,IAAI,GAAG,GAAG,OAAO;;AAGjB,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,gBAAA,OAAO,GAAG,GAAG,CAAC,CAAC;;AAEjB,YAAA,GAAG,EAAE;;AAGP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC;;AAGrB,IAAA,OAAO,YAAY,CACjB,MAAoB,EACpB,gBAAmC,EAAA;QAEnC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI;QAElD,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;gBAC5B;;AAEF,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAE1D,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACxD,YAAA,IAAI,SAAiB;AAErB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,YAAY,CAAC;;iBAC9D;AACL,gBAAA,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM;AAC3C,gBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,EAC9C,cAAc,CACf;;AAGH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAC3B,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,GAAG,SAAS,CAC9B;AACD,YAAA,gBAAgB,GAAG,KAAK,CAAC;AAEzB,YAAA,MAAM,KAAK;AACX,YAAA,IAAI,CAAC,YAAY,IAAI,SAAS;;;;;;;"}
|
|
@@ -238,10 +238,13 @@ class CustomAnthropic extends ChatAnthropicMessages {
|
|
|
238
238
|
minChunkSize: 4,
|
|
239
239
|
maxChunkSize: 8,
|
|
240
240
|
});
|
|
241
|
-
const generator = textStream.generateText();
|
|
241
|
+
const generator = textStream.generateText(options.signal);
|
|
242
242
|
try {
|
|
243
243
|
let emittedUsage = false;
|
|
244
244
|
for await (const currentToken of generator) {
|
|
245
|
+
if (options.signal?.aborted === true) {
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
245
248
|
const newChunk = cloneChunk(currentToken, tokenType, chunk);
|
|
246
249
|
const generationChunk = this.createGenerationChunk({
|
|
247
250
|
token: currentToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/llm/anthropic/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\nimport { ChatAnthropicMessages } from '@langchain/anthropic';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';\nimport type {\n BaseMessage,\n UsageMetadata,\n MessageContentComplex,\n} from '@langchain/core/messages';\nimport type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport type { AnthropicInput } from '@langchain/anthropic';\nimport type { Anthropic } from '@anthropic-ai/sdk';\nimport type {\n AnthropicMessageCreateParams,\n AnthropicStreamingMessageCreateParams,\n AnthropicStreamUsage,\n AnthropicMessageStartEvent,\n AnthropicMessageDeltaEvent,\n} from '@/llm/anthropic/types';\nimport { _makeMessageChunkFromAnthropicEvent } from './utils/message_outputs';\nimport { _convertMessagesToAnthropicPayload } from './utils/message_inputs';\nimport { handleToolChoice } from './utils/tools';\nimport { TextStream } from '@/llm/text';\n\nfunction _toolsInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n return !!(params.tools && params.tools.length > 0);\n}\nfunction _documentsInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n for (const message of params.messages ?? []) {\n if (typeof message.content === 'string') {\n continue;\n }\n for (const block of message.content ?? []) {\n if (\n typeof block === 'object' &&\n block != null &&\n block.type === 'document' &&\n typeof block.citations === 'object' &&\n block.citations.enabled\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction _thinkingInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n return !!(params.thinking && params.thinking.type === 'enabled');\n}\n\nfunction extractToken(\n chunk: AIMessageChunk\n): [string, 'string' | 'input' | 'content'] | [undefined] {\n if (typeof chunk.content === 'string') {\n return [chunk.content, 'string'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'input' in chunk.content[0]\n ) {\n return typeof chunk.content[0].input === 'string'\n ? [chunk.content[0].input, 'input']\n : [JSON.stringify(chunk.content[0].input), 'input'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'text' in chunk.content[0]\n ) {\n return [chunk.content[0].text, 'content'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'thinking' in chunk.content[0]\n ) {\n return [chunk.content[0].thinking, 'content'];\n }\n return [undefined];\n}\n\nfunction cloneChunk(\n text: string,\n tokenType: string,\n chunk: AIMessageChunk\n): AIMessageChunk {\n if (tokenType === 'string') {\n return new AIMessageChunk(Object.assign({}, chunk, { content: text }));\n } else if (tokenType === 'input') {\n return chunk;\n }\n const content = chunk.content[0] as MessageContentComplex;\n if (tokenType === 'content' && content.type === 'text') {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { text })],\n })\n );\n } else if (tokenType === 'content' && content.type === 'text_delta') {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { text })],\n })\n );\n } else if (tokenType === 'content' && content.type?.startsWith('thinking')) {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { thinking: text })],\n })\n );\n }\n\n return chunk;\n}\n\nexport type CustomAnthropicInput = AnthropicInput & {\n _lc_stream_delay?: number;\n} & BaseChatModelParams;\n\n/**\n * A type representing additional parameters that can be passed to the\n * Anthropic API.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Kwargs = Record<string, any>;\n\nexport class CustomAnthropic extends ChatAnthropicMessages {\n _lc_stream_delay: number;\n private message_start: AnthropicMessageStartEvent | undefined;\n private message_delta: AnthropicMessageDeltaEvent | undefined;\n private tools_in_params?: boolean;\n private emitted_usage?: boolean;\n constructor(fields?: CustomAnthropicInput) {\n super(fields);\n this.resetTokenEvents();\n this._lc_stream_delay = fields?._lc_stream_delay ?? 25;\n }\n\n /**\n * Get the parameters used to invoke the model\n */\n override invocationParams(\n options?: this['ParsedCallOptions']\n ): Omit<\n AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams,\n 'messages'\n > &\n Kwargs {\n const tool_choice:\n | Anthropic.Messages.ToolChoiceAuto\n | Anthropic.Messages.ToolChoiceAny\n | Anthropic.Messages.ToolChoiceTool\n | undefined = handleToolChoice(options?.tool_choice);\n\n if (this.thinking.type === 'enabled') {\n if (this.topK !== -1 && (this.topK as number | undefined) != null) {\n throw new Error('topK is not supported when thinking is enabled');\n }\n if (this.topP !== -1 && (this.topP as number | undefined) != null) {\n throw new Error('topP is not supported when thinking is enabled');\n }\n if (\n this.temperature !== 1 &&\n (this.temperature as number | undefined) != null\n ) {\n throw new Error(\n 'temperature is not supported when thinking is enabled'\n );\n }\n\n return {\n model: this.model,\n stop_sequences: options?.stop ?? this.stopSequences,\n stream: this.streaming,\n max_tokens: this.maxTokens,\n tools: this.formatStructuredToolToAnthropic(options?.tools),\n tool_choice,\n thinking: this.thinking,\n ...this.invocationKwargs,\n };\n }\n return {\n model: this.model,\n temperature: this.temperature,\n top_k: this.topK,\n top_p: this.topP,\n stop_sequences: options?.stop ?? this.stopSequences,\n stream: this.streaming,\n max_tokens: this.maxTokens,\n tools: this.formatStructuredToolToAnthropic(options?.tools),\n tool_choice,\n thinking: this.thinking,\n ...this.invocationKwargs,\n };\n }\n\n /**\n * Get stream usage as returned by this client's API response.\n * @returns The stream usage object.\n */\n getStreamUsage(): UsageMetadata | undefined {\n if (this.emitted_usage === true) {\n return;\n }\n const inputUsage = this.message_start?.message.usage as\n | undefined\n | AnthropicStreamUsage;\n const outputUsage = this.message_delta?.usage as\n | undefined\n | Partial<AnthropicStreamUsage>;\n if (!outputUsage) {\n return;\n }\n const totalUsage: UsageMetadata = {\n input_tokens: inputUsage?.input_tokens ?? 0,\n output_tokens: outputUsage.output_tokens ?? 0,\n total_tokens:\n (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),\n };\n\n if (\n inputUsage?.cache_creation_input_tokens != null ||\n inputUsage?.cache_read_input_tokens != null\n ) {\n totalUsage.input_token_details = {\n cache_creation: inputUsage.cache_creation_input_tokens ?? 0,\n cache_read: inputUsage.cache_read_input_tokens ?? 0,\n };\n }\n\n this.emitted_usage = true;\n return totalUsage;\n }\n\n resetTokenEvents(): void {\n this.message_start = undefined;\n this.message_delta = undefined;\n this.emitted_usage = undefined;\n this.tools_in_params = undefined;\n }\n\n private createGenerationChunk({\n token,\n chunk,\n usageMetadata,\n shouldStreamUsage,\n }: {\n token?: string;\n chunk: AIMessageChunk;\n shouldStreamUsage: boolean;\n usageMetadata?: UsageMetadata;\n }): ChatGenerationChunk {\n const usage_metadata = shouldStreamUsage\n ? (usageMetadata ?? chunk.usage_metadata)\n : undefined;\n return new ChatGenerationChunk({\n message: new AIMessageChunk({\n // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().\n content: chunk.content,\n additional_kwargs: chunk.additional_kwargs,\n tool_call_chunks: chunk.tool_call_chunks,\n response_metadata: chunk.response_metadata,\n usage_metadata,\n id: chunk.id,\n }),\n text: token ?? '',\n });\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n this.resetTokenEvents();\n const params = this.invocationParams(options);\n const formattedMessages = _convertMessagesToAnthropicPayload(messages);\n const payload = {\n ...params,\n ...formattedMessages,\n stream: true,\n } as const;\n const coerceContentToString =\n !_toolsInParams(payload) &&\n !_documentsInParams(payload) &&\n !_thinkingInParams(payload);\n\n const stream = await this.createStreamWithRetry(payload, {\n headers: options.headers,\n });\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n for await (const data of stream) {\n if (options.signal?.aborted === true) {\n stream.controller.abort();\n throw new Error('AbortError: User aborted the request.');\n }\n\n if (data.type === 'message_start') {\n this.message_start = data as AnthropicMessageStartEvent;\n } else if (data.type === 'message_delta') {\n this.message_delta = data as AnthropicMessageDeltaEvent;\n }\n\n let usageMetadata: UsageMetadata | undefined;\n if (this.tools_in_params !== true && this.emitted_usage !== true) {\n usageMetadata = this.getStreamUsage();\n }\n\n const result = _makeMessageChunkFromAnthropicEvent(data, {\n streamUsage: shouldStreamUsage,\n coerceContentToString,\n });\n if (!result) continue;\n\n const { chunk } = result;\n const [token = '', tokenType] = extractToken(chunk);\n\n if (\n !tokenType ||\n tokenType === 'input' ||\n (token === '' && (usageMetadata != null || chunk.id != null))\n ) {\n const generationChunk = this.createGenerationChunk({\n token,\n chunk,\n usageMetadata,\n shouldStreamUsage,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n token,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n continue;\n }\n\n const textStream = new TextStream(token, {\n delay: this._lc_stream_delay,\n firstWordChunk: true,\n minChunkSize: 4,\n maxChunkSize: 8,\n });\n\n const generator = textStream.generateText();\n try {\n let emittedUsage = false;\n for await (const currentToken of generator) {\n const newChunk = cloneChunk(currentToken, tokenType, chunk);\n\n const generationChunk = this.createGenerationChunk({\n token: currentToken,\n chunk: newChunk,\n usageMetadata: emittedUsage ? undefined : usageMetadata,\n shouldStreamUsage,\n });\n\n if (usageMetadata && !emittedUsage) {\n emittedUsage = true;\n }\n yield generationChunk;\n\n await runManager?.handleLLMNewToken(\n currentToken,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n } finally {\n await generator.return();\n }\n }\n\n this.resetTokenEvents();\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/llm/anthropic/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\nimport { ChatAnthropicMessages } from '@langchain/anthropic';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';\nimport type {\n BaseMessage,\n UsageMetadata,\n MessageContentComplex,\n} from '@langchain/core/messages';\nimport type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport type { AnthropicInput } from '@langchain/anthropic';\nimport type { Anthropic } from '@anthropic-ai/sdk';\nimport type {\n AnthropicMessageCreateParams,\n AnthropicStreamingMessageCreateParams,\n AnthropicStreamUsage,\n AnthropicMessageStartEvent,\n AnthropicMessageDeltaEvent,\n} from '@/llm/anthropic/types';\nimport { _makeMessageChunkFromAnthropicEvent } from './utils/message_outputs';\nimport { _convertMessagesToAnthropicPayload } from './utils/message_inputs';\nimport { handleToolChoice } from './utils/tools';\nimport { TextStream } from '@/llm/text';\n\nfunction _toolsInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n return !!(params.tools && params.tools.length > 0);\n}\nfunction _documentsInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n for (const message of params.messages ?? []) {\n if (typeof message.content === 'string') {\n continue;\n }\n for (const block of message.content ?? []) {\n if (\n typeof block === 'object' &&\n block != null &&\n block.type === 'document' &&\n typeof block.citations === 'object' &&\n block.citations.enabled\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction _thinkingInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n return !!(params.thinking && params.thinking.type === 'enabled');\n}\n\nfunction extractToken(\n chunk: AIMessageChunk\n): [string, 'string' | 'input' | 'content'] | [undefined] {\n if (typeof chunk.content === 'string') {\n return [chunk.content, 'string'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'input' in chunk.content[0]\n ) {\n return typeof chunk.content[0].input === 'string'\n ? [chunk.content[0].input, 'input']\n : [JSON.stringify(chunk.content[0].input), 'input'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'text' in chunk.content[0]\n ) {\n return [chunk.content[0].text, 'content'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'thinking' in chunk.content[0]\n ) {\n return [chunk.content[0].thinking, 'content'];\n }\n return [undefined];\n}\n\nfunction cloneChunk(\n text: string,\n tokenType: string,\n chunk: AIMessageChunk\n): AIMessageChunk {\n if (tokenType === 'string') {\n return new AIMessageChunk(Object.assign({}, chunk, { content: text }));\n } else if (tokenType === 'input') {\n return chunk;\n }\n const content = chunk.content[0] as MessageContentComplex;\n if (tokenType === 'content' && content.type === 'text') {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { text })],\n })\n );\n } else if (tokenType === 'content' && content.type === 'text_delta') {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { text })],\n })\n );\n } else if (tokenType === 'content' && content.type?.startsWith('thinking')) {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { thinking: text })],\n })\n );\n }\n\n return chunk;\n}\n\nexport type CustomAnthropicInput = AnthropicInput & {\n _lc_stream_delay?: number;\n} & BaseChatModelParams;\n\n/**\n * A type representing additional parameters that can be passed to the\n * Anthropic API.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Kwargs = Record<string, any>;\n\nexport class CustomAnthropic extends ChatAnthropicMessages {\n _lc_stream_delay: number;\n private message_start: AnthropicMessageStartEvent | undefined;\n private message_delta: AnthropicMessageDeltaEvent | undefined;\n private tools_in_params?: boolean;\n private emitted_usage?: boolean;\n constructor(fields?: CustomAnthropicInput) {\n super(fields);\n this.resetTokenEvents();\n this._lc_stream_delay = fields?._lc_stream_delay ?? 25;\n }\n\n /**\n * Get the parameters used to invoke the model\n */\n override invocationParams(\n options?: this['ParsedCallOptions']\n ): Omit<\n AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams,\n 'messages'\n > &\n Kwargs {\n const tool_choice:\n | Anthropic.Messages.ToolChoiceAuto\n | Anthropic.Messages.ToolChoiceAny\n | Anthropic.Messages.ToolChoiceTool\n | undefined = handleToolChoice(options?.tool_choice);\n\n if (this.thinking.type === 'enabled') {\n if (this.topK !== -1 && (this.topK as number | undefined) != null) {\n throw new Error('topK is not supported when thinking is enabled');\n }\n if (this.topP !== -1 && (this.topP as number | undefined) != null) {\n throw new Error('topP is not supported when thinking is enabled');\n }\n if (\n this.temperature !== 1 &&\n (this.temperature as number | undefined) != null\n ) {\n throw new Error(\n 'temperature is not supported when thinking is enabled'\n );\n }\n\n return {\n model: this.model,\n stop_sequences: options?.stop ?? this.stopSequences,\n stream: this.streaming,\n max_tokens: this.maxTokens,\n tools: this.formatStructuredToolToAnthropic(options?.tools),\n tool_choice,\n thinking: this.thinking,\n ...this.invocationKwargs,\n };\n }\n return {\n model: this.model,\n temperature: this.temperature,\n top_k: this.topK,\n top_p: this.topP,\n stop_sequences: options?.stop ?? this.stopSequences,\n stream: this.streaming,\n max_tokens: this.maxTokens,\n tools: this.formatStructuredToolToAnthropic(options?.tools),\n tool_choice,\n thinking: this.thinking,\n ...this.invocationKwargs,\n };\n }\n\n /**\n * Get stream usage as returned by this client's API response.\n * @returns The stream usage object.\n */\n getStreamUsage(): UsageMetadata | undefined {\n if (this.emitted_usage === true) {\n return;\n }\n const inputUsage = this.message_start?.message.usage as\n | undefined\n | AnthropicStreamUsage;\n const outputUsage = this.message_delta?.usage as\n | undefined\n | Partial<AnthropicStreamUsage>;\n if (!outputUsage) {\n return;\n }\n const totalUsage: UsageMetadata = {\n input_tokens: inputUsage?.input_tokens ?? 0,\n output_tokens: outputUsage.output_tokens ?? 0,\n total_tokens:\n (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),\n };\n\n if (\n inputUsage?.cache_creation_input_tokens != null ||\n inputUsage?.cache_read_input_tokens != null\n ) {\n totalUsage.input_token_details = {\n cache_creation: inputUsage.cache_creation_input_tokens ?? 0,\n cache_read: inputUsage.cache_read_input_tokens ?? 0,\n };\n }\n\n this.emitted_usage = true;\n return totalUsage;\n }\n\n resetTokenEvents(): void {\n this.message_start = undefined;\n this.message_delta = undefined;\n this.emitted_usage = undefined;\n this.tools_in_params = undefined;\n }\n\n private createGenerationChunk({\n token,\n chunk,\n usageMetadata,\n shouldStreamUsage,\n }: {\n token?: string;\n chunk: AIMessageChunk;\n shouldStreamUsage: boolean;\n usageMetadata?: UsageMetadata;\n }): ChatGenerationChunk {\n const usage_metadata = shouldStreamUsage\n ? (usageMetadata ?? chunk.usage_metadata)\n : undefined;\n return new ChatGenerationChunk({\n message: new AIMessageChunk({\n // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().\n content: chunk.content,\n additional_kwargs: chunk.additional_kwargs,\n tool_call_chunks: chunk.tool_call_chunks,\n response_metadata: chunk.response_metadata,\n usage_metadata,\n id: chunk.id,\n }),\n text: token ?? '',\n });\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n this.resetTokenEvents();\n const params = this.invocationParams(options);\n const formattedMessages = _convertMessagesToAnthropicPayload(messages);\n const payload = {\n ...params,\n ...formattedMessages,\n stream: true,\n } as const;\n const coerceContentToString =\n !_toolsInParams(payload) &&\n !_documentsInParams(payload) &&\n !_thinkingInParams(payload);\n\n const stream = await this.createStreamWithRetry(payload, {\n headers: options.headers,\n });\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n for await (const data of stream) {\n if (options.signal?.aborted === true) {\n stream.controller.abort();\n throw new Error('AbortError: User aborted the request.');\n }\n\n if (data.type === 'message_start') {\n this.message_start = data as AnthropicMessageStartEvent;\n } else if (data.type === 'message_delta') {\n this.message_delta = data as AnthropicMessageDeltaEvent;\n }\n\n let usageMetadata: UsageMetadata | undefined;\n if (this.tools_in_params !== true && this.emitted_usage !== true) {\n usageMetadata = this.getStreamUsage();\n }\n\n const result = _makeMessageChunkFromAnthropicEvent(data, {\n streamUsage: shouldStreamUsage,\n coerceContentToString,\n });\n if (!result) continue;\n\n const { chunk } = result;\n const [token = '', tokenType] = extractToken(chunk);\n\n if (\n !tokenType ||\n tokenType === 'input' ||\n (token === '' && (usageMetadata != null || chunk.id != null))\n ) {\n const generationChunk = this.createGenerationChunk({\n token,\n chunk,\n usageMetadata,\n shouldStreamUsage,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n token,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n continue;\n }\n\n const textStream = new TextStream(token, {\n delay: this._lc_stream_delay,\n firstWordChunk: true,\n minChunkSize: 4,\n maxChunkSize: 8,\n });\n\n const generator = textStream.generateText(options.signal);\n try {\n let emittedUsage = false;\n for await (const currentToken of generator) {\n if ((options.signal as AbortSignal | undefined)?.aborted === true) {\n break;\n }\n const newChunk = cloneChunk(currentToken, tokenType, chunk);\n\n const generationChunk = this.createGenerationChunk({\n token: currentToken,\n chunk: newChunk,\n usageMetadata: emittedUsage ? undefined : usageMetadata,\n shouldStreamUsage,\n });\n\n if (usageMetadata && !emittedUsage) {\n emittedUsage = true;\n }\n yield generationChunk;\n\n await runManager?.handleLLMNewToken(\n currentToken,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n } finally {\n await generator.return();\n }\n }\n\n this.resetTokenEvents();\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAwBA,SAAS,cAAc,CACrB,MAA4E,EAAA;AAE5E,IAAA,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD;AACA,SAAS,kBAAkB,CACzB,MAA4E,EAAA;IAE5E,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE;AAC3C,QAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;YACvC;;QAEF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;YACzC,IACE,OAAO,KAAK,KAAK,QAAQ;AACzB,gBAAA,KAAK,IAAI,IAAI;gBACb,KAAK,CAAC,IAAI,KAAK,UAAU;AACzB,gBAAA,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;AACnC,gBAAA,KAAK,CAAC,SAAS,CAAC,OAAO,EACvB;AACA,gBAAA,OAAO,IAAI;;;;AAIjB,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,iBAAiB,CACxB,MAA4E,EAAA;AAE5E,IAAA,OAAO,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC;AAClE;AAEA,SAAS,YAAY,CACnB,KAAqB,EAAA;AAErB,IAAA,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;AACrC,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;;AAC3B,SAAA,IACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAC3B;QACA,OAAO,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK;AACvC,cAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO;AAClC,cAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;;AAChD,SAAA,IACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAC1B;AACA,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC;;AACpC,SAAA,IACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;QACzB,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9B;AACA,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC;;IAE/C,OAAO,CAAC,SAAS,CAAC;AACpB;AAEA,SAAS,UAAU,CACjB,IAAY,EACZ,SAAiB,EACjB,KAAqB,EAAA;AAErB,IAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,QAAA,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;AACjE,SAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AAChC,QAAA,OAAO,KAAK;;IAEd,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAA0B;IACzD,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;QACtD,OAAO,IAAI,cAAc,CACvB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;AACvB,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,SAAA,CAAC,CACH;;SACI,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;QACnE,OAAO,IAAI,cAAc,CACvB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;AACvB,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,SAAA,CAAC,CACH;;AACI,SAAA,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE;QAC1E,OAAO,IAAI,cAAc,CACvB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;AACvB,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,SAAA,CAAC,CACH;;AAGH,IAAA,OAAO,KAAK;AACd;AAaM,MAAO,eAAgB,SAAQ,qBAAqB,CAAA;AACxD,IAAA,gBAAgB;AACR,IAAA,aAAa;AACb,IAAA,aAAa;AACb,IAAA,eAAe;AACf,IAAA,aAAa;AACrB,IAAA,WAAA,CAAY,MAA6B,EAAA;QACvC,KAAK,CAAC,MAAM,CAAC;QACb,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,gBAAgB,GAAG,MAAM,EAAE,gBAAgB,IAAI,EAAE;;AAGxD;;AAEG;AACM,IAAA,gBAAgB,CACvB,OAAmC,EAAA;QAMnC,MAAM,WAAW,GAID,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC;QAEtD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,IAAK,IAAI,CAAC,IAA2B,IAAI,IAAI,EAAE;AACjE,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;;AAEnE,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,IAAK,IAAI,CAAC,IAA2B,IAAI,IAAI,EAAE;AACjE,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;;AAEnE,YAAA,IACE,IAAI,CAAC,WAAW,KAAK,CAAC;AACrB,gBAAA,IAAI,CAAC,WAAkC,IAAI,IAAI,EAChD;AACA,gBAAA,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD;;YAGH,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,cAAc,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa;gBACnD,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,KAAK,EAAE,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC3D,WAAW;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,IAAI,CAAC,gBAAgB;aACzB;;QAEH,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,YAAA,cAAc,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa;YACnD,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,KAAK,EAAE,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC;YAC3D,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,IAAI,CAAC,gBAAgB;SACzB;;AAGH;;;AAGG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;YAC/B;;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,KAEvB;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,KAEP;QACjC,IAAI,CAAC,WAAW,EAAE;YAChB;;AAEF,QAAA,MAAM,UAAU,GAAkB;AAChC,YAAA,YAAY,EAAE,UAAU,EAAE,YAAY,IAAI,CAAC;AAC3C,YAAA,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,CAAC;AAC7C,YAAA,YAAY,EACV,CAAC,UAAU,EAAE,YAAY,IAAI,CAAC,KAAK,WAAW,CAAC,aAAa,IAAI,CAAC,CAAC;SACrE;AAED,QAAA,IACE,UAAU,EAAE,2BAA2B,IAAI,IAAI;AAC/C,YAAA,UAAU,EAAE,uBAAuB,IAAI,IAAI,EAC3C;YACA,UAAU,CAAC,mBAAmB,GAAG;AAC/B,gBAAA,cAAc,EAAE,UAAU,CAAC,2BAA2B,IAAI,CAAC;AAC3D,gBAAA,UAAU,EAAE,UAAU,CAAC,uBAAuB,IAAI,CAAC;aACpD;;AAGH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,OAAO,UAAU;;IAGnB,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;;IAG1B,qBAAqB,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,aAAa,EACb,iBAAiB,GAMlB,EAAA;QACC,MAAM,cAAc,GAAG;AACrB,eAAG,aAAa,IAAI,KAAK,CAAC,cAAc;cACtC,SAAS;QACb,OAAO,IAAI,mBAAmB,CAAC;YAC7B,OAAO,EAAE,IAAI,cAAc,CAAC;;gBAE1B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,cAAc;gBACd,EAAE,EAAE,KAAK,CAAC,EAAE;aACb,CAAC;YACF,IAAI,EAAE,KAAK,IAAI,EAAE;AAClB,SAAA,CAAC;;IAGJ,OAAO,qBAAqB,CAC1B,QAAuB,EACvB,OAAkC,EAClC,UAAqC,EAAA;QAErC,IAAI,CAAC,gBAAgB,EAAE;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC7C,QAAA,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,QAAQ,CAAC;AACtE,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,GAAG,MAAM;AACT,YAAA,GAAG,iBAAiB;AACpB,YAAA,MAAM,EAAE,IAAI;SACJ;AACV,QAAA,MAAM,qBAAqB,GACzB,CAAC,cAAc,CAAC,OAAO,CAAC;YACxB,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC5B,YAAA,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;YACvD,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,SAAA,CAAC;QAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;AAEjE,QAAA,WAAW,MAAM,IAAI,IAAI,MAAM,EAAE;YAC/B,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;AACpC,gBAAA,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;AACzB,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;AAG1D,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE;AACjC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAkC;;AAClD,iBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE;AACxC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAkC;;AAGzD,YAAA,IAAI,aAAwC;AAC5C,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAChE,gBAAA,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;;AAGvC,YAAA,MAAM,MAAM,GAAG,mCAAmC,CAAC,IAAI,EAAE;AACvD,gBAAA,WAAW,EAAE,iBAAiB;gBAC9B,qBAAqB;AACtB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,MAAM;gBAAE;AAEb,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AACxB,YAAA,MAAM,CAAC,KAAK,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;AAEnD,YAAA,IACE,CAAC,SAAS;AACV,gBAAA,SAAS,KAAK,OAAO;AACrB,iBAAC,KAAK,KAAK,EAAE,KAAK,aAAa,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAC7D;AACA,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC;oBACjD,KAAK;oBACL,KAAK;oBACL,aAAa;oBACb,iBAAiB;AAClB,iBAAA,CAAC;AACF,gBAAA,MAAM,eAAe;gBACrB,MAAM,UAAU,EAAE,iBAAiB,CACjC,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B;gBACD;;AAGF,YAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;gBACvC,KAAK,EAAE,IAAI,CAAC,gBAAgB;AAC5B,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,YAAY,EAAE,CAAC;AAChB,aAAA,CAAC;YAEF,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AACzD,YAAA,IAAI;gBACF,IAAI,YAAY,GAAG,KAAK;AACxB,gBAAA,WAAW,MAAM,YAAY,IAAI,SAAS,EAAE;oBAC1C,IAAK,OAAO,CAAC,MAAkC,EAAE,OAAO,KAAK,IAAI,EAAE;wBACjE;;oBAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC;AAE3D,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACjD,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,KAAK,EAAE,QAAQ;wBACf,aAAa,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa;wBACvD,iBAAiB;AAClB,qBAAA,CAAC;AAEF,oBAAA,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE;wBAClC,YAAY,GAAG,IAAI;;AAErB,oBAAA,MAAM,eAAe;oBAErB,MAAM,UAAU,EAAE,iBAAiB,CACjC,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B;;;oBAEK;AACR,gBAAA,MAAM,SAAS,CAAC,MAAM,EAAE;;;QAI5B,IAAI,CAAC,gBAAgB,EAAE;;AAE1B;;;;"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { AIMessageChunk } from '@langchain/core/messages';
|
|
2
|
+
import { ChatGenerationChunk } from '@langchain/core/outputs';
|
|
3
|
+
import { ChatOllama as ChatOllama$1 } from '@langchain/ollama';
|
|
4
|
+
import { convertToOllamaMessages, convertOllamaMessagesToLangChain } from './utils.mjs';
|
|
5
|
+
|
|
6
|
+
class ChatOllama extends ChatOllama$1 {
|
|
7
|
+
async *_streamResponseChunks(messages, options, runManager) {
|
|
8
|
+
if (this.checkOrPullModel) {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
if (!(await this.checkModelExistsOnMachine(this.model))) {
|
|
12
|
+
await this.pull(this.model, {
|
|
13
|
+
logProgress: true,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const params = this.invocationParams(options);
|
|
18
|
+
// TODO: remove cast after SDK adds support for tool calls
|
|
19
|
+
const ollamaMessages = convertToOllamaMessages(messages);
|
|
20
|
+
const usageMetadata = {
|
|
21
|
+
input_tokens: 0,
|
|
22
|
+
output_tokens: 0,
|
|
23
|
+
total_tokens: 0,
|
|
24
|
+
};
|
|
25
|
+
const stream = await this.client.chat({
|
|
26
|
+
...params,
|
|
27
|
+
messages: ollamaMessages,
|
|
28
|
+
stream: true,
|
|
29
|
+
});
|
|
30
|
+
let lastMetadata;
|
|
31
|
+
for await (const chunk of stream) {
|
|
32
|
+
if (options.signal?.aborted === true) {
|
|
33
|
+
this.client.abort();
|
|
34
|
+
}
|
|
35
|
+
const { message: responseMessage, ...rest } = chunk;
|
|
36
|
+
usageMetadata.input_tokens += rest.prompt_eval_count ?? 0;
|
|
37
|
+
usageMetadata.output_tokens += rest.eval_count ?? 0;
|
|
38
|
+
usageMetadata.total_tokens =
|
|
39
|
+
usageMetadata.input_tokens + usageMetadata.output_tokens;
|
|
40
|
+
lastMetadata = rest;
|
|
41
|
+
if (!responseMessage) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const message = convertOllamaMessagesToLangChain(responseMessage);
|
|
45
|
+
const generationChunk = new ChatGenerationChunk({
|
|
46
|
+
text: responseMessage.content || '',
|
|
47
|
+
message,
|
|
48
|
+
});
|
|
49
|
+
yield generationChunk;
|
|
50
|
+
await runManager?.handleLLMNewToken(responseMessage.content || '', undefined, undefined, undefined, undefined, { chunk: generationChunk });
|
|
51
|
+
}
|
|
52
|
+
// Yield the `response_metadata` as the final chunk.
|
|
53
|
+
yield new ChatGenerationChunk({
|
|
54
|
+
text: '',
|
|
55
|
+
message: new AIMessageChunk({
|
|
56
|
+
content: '',
|
|
57
|
+
response_metadata: lastMetadata,
|
|
58
|
+
usage_metadata: usageMetadata,
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { ChatOllama };
|
|
65
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/llm/ollama/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport { ChatOllama as BaseChatOllama } from '@langchain/ollama';\nimport { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport type {\n ChatResponse as OllamaChatResponse,\n Message as OllamaMessage,\n} from 'ollama';\nimport type { UsageMetadata, BaseMessage } from '@langchain/core/messages';\nimport {\n convertOllamaMessagesToLangChain,\n convertToOllamaMessages,\n} from './utils';\n\nexport class ChatOllama extends BaseChatOllama {\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (this.checkOrPullModel) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (!((await this.checkModelExistsOnMachine(this.model)) as boolean)) {\n await this.pull(this.model, {\n logProgress: true,\n });\n }\n }\n\n const params = this.invocationParams(options);\n // TODO: remove cast after SDK adds support for tool calls\n const ollamaMessages = convertToOllamaMessages(messages) as OllamaMessage[];\n\n const usageMetadata: UsageMetadata = {\n input_tokens: 0,\n output_tokens: 0,\n total_tokens: 0,\n };\n\n const stream = await this.client.chat({\n ...params,\n messages: ollamaMessages,\n stream: true,\n });\n\n let lastMetadata: Omit<OllamaChatResponse, 'message'> | undefined;\n\n for await (const chunk of stream) {\n if (options.signal?.aborted === true) {\n this.client.abort();\n }\n const { message: responseMessage, ...rest } =\n chunk as Partial<OllamaChatResponse>;\n usageMetadata.input_tokens += rest.prompt_eval_count ?? 0;\n usageMetadata.output_tokens += rest.eval_count ?? 0;\n usageMetadata.total_tokens =\n usageMetadata.input_tokens + usageMetadata.output_tokens;\n lastMetadata = rest as Omit<OllamaChatResponse, 'message'>;\n if (!responseMessage) {\n continue;\n }\n const message = convertOllamaMessagesToLangChain(responseMessage);\n const generationChunk = new ChatGenerationChunk({\n text: responseMessage.content || '',\n message,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n responseMessage.content || '',\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n\n // Yield the `response_metadata` as the final chunk.\n yield new ChatGenerationChunk({\n text: '',\n message: new AIMessageChunk({\n content: '',\n response_metadata: lastMetadata,\n usage_metadata: usageMetadata,\n }),\n });\n }\n}\n"],"names":["BaseChatOllama"],"mappings":";;;;;AAcM,MAAO,UAAW,SAAQA,YAAc,CAAA;IAC5C,OAAO,qBAAqB,CAC1B,QAAuB,EACvB,OAAkC,EAClC,UAAqC,EAAA;AAErC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;;;AAGzB,YAAA,IAAI,EAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAa,EAAE;AACpE,gBAAA,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1B,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA,CAAC;;;QAIN,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;AAE7C,QAAA,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,CAAoB;AAE3E,QAAA,MAAM,aAAa,GAAkB;AACnC,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,YAAY,EAAE,CAAC;SAChB;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,YAAA,GAAG,MAAM;AACT,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;AAEF,QAAA,IAAI,YAA6D;AAEjE,QAAA,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;AACpC,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;YAErB,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GACzC,KAAoC;YACtC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC;YACzD,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;AACnD,YAAA,aAAa,CAAC,YAAY;AACxB,gBAAA,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,aAAa;YAC1D,YAAY,GAAG,IAA2C;YAC1D,IAAI,CAAC,eAAe,EAAE;gBACpB;;AAEF,YAAA,MAAM,OAAO,GAAG,gCAAgC,CAAC,eAAe,CAAC;AACjE,YAAA,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC;AAC9C,gBAAA,IAAI,EAAE,eAAe,CAAC,OAAO,IAAI,EAAE;gBACnC,OAAO;AACR,aAAA,CAAC;AACF,YAAA,MAAM,eAAe;YACrB,MAAM,UAAU,EAAE,iBAAiB,CACjC,eAAe,CAAC,OAAO,IAAI,EAAE,EAC7B,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B;;;QAIH,MAAM,IAAI,mBAAmB,CAAC;AAC5B,YAAA,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI,cAAc,CAAC;AAC1B,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,iBAAiB,EAAE,YAAY;AAC/B,gBAAA,cAAc,EAAE,aAAa;aAC9B,CAAC;AACH,SAAA,CAAC;;AAEL;;;;"}
|