@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 17.4 kB
Source Map (JSON)
{"version":3,"file":"bedrock_converse.cjs","names":["_isObject","_isString","_isBytesArray","_isArray","_isContentBlock","iife","_isNumber"],"sources":["../../../src/messages/block_translators/bedrock_converse.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport { KNOWN_BLOCK_TYPES } from \"../content/tools.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport {\n _isArray,\n _isBytesArray,\n _isContentBlock,\n _isNumber,\n _isObject,\n _isString,\n iife,\n} from \"./utils.js\";\n\n// see `/libs/providers/langchain-aws/src/utils/compat.ts:convertFileFormatToMimeType`\nfunction convertFileFormatToMimeType(format: string): string {\n switch (format) {\n // DocumentBlock\n case \"csv\":\n return \"text/csv\";\n case \"doc\":\n return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n case \"docx\":\n return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n case \"html\":\n return \"text/html\";\n case \"md\":\n return \"text/markdown\";\n case \"pdf\":\n return \"application/pdf\";\n case \"txt\":\n return \"text/plain\";\n case \"xls\":\n return \"application/vnd.ms-excel\";\n case \"xlsx\":\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n // ImageBlock\n case \"gif\":\n return \"image/gif\";\n case \"jpeg\":\n return \"image/jpeg\";\n case \"jpg\":\n return \"image/jpeg\";\n case \"png\":\n return \"image/png\";\n case \"webp\":\n return \"image/webp\";\n // VideoBlock\n case \"flv\":\n return \"video/flv\";\n case \"mkv\":\n return \"video/mkv\";\n case \"mov\":\n return \"video/mov\";\n case \"mp4\":\n return \"video/mp4\";\n case \"mpeg\":\n return \"video/mpeg\";\n case \"mpg\":\n return \"video/mpg\";\n case \"three_gp\":\n return \"video/three_gp\";\n case \"webm\":\n return \"video/webm\";\n case \"wmv\":\n return \"video/wmv\";\n default:\n return \"application/octet-stream\";\n }\n}\n\nfunction convertConverseDocumentBlock(\n block: ContentBlock\n): ContentBlock.Standard {\n if (_isObject(block.document) && _isObject(block.document.source)) {\n const format =\n _isObject(block.document) && _isString(block.document.format)\n ? block.document.format\n : \"\";\n const mimeType = convertFileFormatToMimeType(format);\n\n if (_isObject(block.document.source)) {\n if (\n _isObject(block.document.source.s3Location) &&\n _isString(block.document.source.s3Location.uri)\n ) {\n return {\n type: \"file\",\n mimeType,\n fileId: block.document.source.s3Location.uri,\n };\n }\n if (_isBytesArray(block.document.source.bytes)) {\n return {\n type: \"file\",\n mimeType,\n data: block.document.source.bytes,\n };\n }\n if (_isString(block.document.source.text)) {\n return {\n type: \"file\",\n mimeType,\n data: Buffer.from(block.document.source.text).toString(\"base64\"),\n };\n }\n if (_isArray(block.document.source.content)) {\n const data = block.document.source.content.reduce(\n (acc: string, item) => {\n if (_isObject(item) && _isString(item.text)) {\n return acc + item.text;\n }\n return acc;\n },\n \"\"\n );\n return {\n type: \"file\",\n mimeType,\n data,\n };\n }\n }\n }\n return { type: \"non_standard\", value: block };\n}\n\nfunction convertConverseImageBlock(block: ContentBlock): ContentBlock.Standard {\n if (_isContentBlock(block, \"image\") && _isObject(block.image)) {\n const format =\n _isObject(block.image) && _isString(block.image.format)\n ? block.image.format\n : \"\";\n const mimeType = convertFileFormatToMimeType(format);\n\n if (_isObject(block.image.source)) {\n if (\n _isObject(block.image.source.s3Location) &&\n _isString(block.image.source.s3Location.uri)\n ) {\n return {\n type: \"image\",\n mimeType,\n fileId: block.image.source.s3Location.uri,\n };\n }\n if (_isBytesArray(block.image.source.bytes)) {\n return {\n type: \"image\",\n mimeType,\n data: block.image.source.bytes,\n };\n }\n }\n }\n return { type: \"non_standard\", value: block };\n}\n\nfunction convertConverseVideoBlock(block: ContentBlock): ContentBlock.Standard {\n if (_isContentBlock(block, \"video\") && _isObject(block.video)) {\n const format =\n _isObject(block.video) && _isString(block.video.format)\n ? block.video.format\n : \"\";\n const mimeType = convertFileFormatToMimeType(format);\n\n if (_isObject(block.video.source)) {\n if (\n _isObject(block.video.source.s3Location) &&\n _isString(block.video.source.s3Location.uri)\n ) {\n return {\n type: \"video\",\n mimeType,\n fileId: block.video.source.s3Location.uri,\n };\n }\n if (_isBytesArray(block.video.source.bytes)) {\n return {\n type: \"video\",\n mimeType,\n data: block.video.source.bytes,\n };\n }\n }\n }\n return { type: \"non_standard\", value: block };\n}\n\nexport function convertToV1FromChatBedrockConverseInput(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content =\n typeof message.content === \"string\"\n ? [{ type: \"text\", text: message.content }]\n : message.content;\n const blocks = content.map((block) => {\n if (_isContentBlock(block, \"non_standard\") && \"value\" in block) {\n return block.value as ContentBlock;\n }\n return block;\n });\n for (const block of blocks) {\n if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n yield { type: \"text\", text: block.text };\n continue;\n } else if (\n _isContentBlock(block, \"document\") &&\n _isObject(block.document)\n ) {\n yield convertConverseDocumentBlock(block);\n continue;\n } else if (_isContentBlock(block, \"image\") && _isObject(block.image)) {\n yield convertConverseImageBlock(block);\n continue;\n } else if (_isContentBlock(block, \"video\") && _isObject(block.video)) {\n yield convertConverseVideoBlock(block);\n continue;\n }\n if (KNOWN_BLOCK_TYPES.includes(block.type)) {\n yield block as ContentBlock.Standard;\n } else {\n yield { type: \"non_standard\", value: block };\n }\n }\n }\n return Array.from(iterateContent());\n}\n\nfunction convertToV1FromChatBedrockConverseMessage(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n // see `/libs/providers/langchain-aws/src/utils/message_outputs.ts:convertConverseMessageToLangChainMessage`\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content =\n typeof message.content === \"string\"\n ? [{ type: \"text\", text: message.content }]\n : message.content;\n for (const block of content) {\n if (_isContentBlock(block, \"reasoning\") && _isString(block.reasoning)) {\n yield { ...block, type: \"reasoning\", reasoning: block.reasoning };\n continue;\n } else if (_isContentBlock(block, \"cache_point\")) {\n yield { type: \"non_standard\", value: block };\n continue;\n } else if (\n _isContentBlock(block, \"citations_content\") &&\n _isObject(block.citationsContent)\n ) {\n const text = _isArray(block.citationsContent.content)\n ? block.citationsContent.content.reduce((acc: string, item) => {\n if (_isObject(item) && _isString(item.text)) {\n return acc + item.text;\n }\n return acc;\n }, \"\")\n : \"\";\n const annotations = _isArray(block.citationsContent.citations)\n ? block.citationsContent.citations.reduce(\n (acc: Array<ContentBlock.Citation>, item) => {\n if (_isObject(item)) {\n const citedText = _isArray(item.sourceContent)\n ? item.sourceContent.reduce((acc: string, item) => {\n if (_isObject(item) && _isString(item.text)) {\n return acc + item.text;\n }\n return acc;\n }, \"\")\n : \"\";\n const properties = iife(() => {\n if (_isObject(item.location)) {\n const location =\n item.location.documentChar ||\n item.location.documentPage ||\n item.location.documentChunk;\n if (_isObject(location)) {\n return {\n source: _isNumber(location.documentIndex)\n ? location.documentIndex.toString()\n : undefined,\n startIndex: _isNumber(location.start)\n ? location.start\n : undefined,\n endIndex: _isNumber(location.end)\n ? location.end\n : undefined,\n };\n }\n }\n return {};\n });\n acc.push({ type: \"citation\", citedText, ...properties });\n }\n return acc;\n },\n []\n )\n : [];\n yield { type: \"text\", text, annotations };\n continue;\n } else if (\n _isContentBlock(block, \"document\") &&\n _isObject(block.document)\n ) {\n yield convertConverseDocumentBlock(block);\n continue;\n } else if (_isContentBlock(block, \"guard_content\")) {\n yield {\n type: \"non_standard\",\n value: block,\n };\n continue;\n } else if (_isContentBlock(block, \"image\") && _isObject(block.image)) {\n yield convertConverseImageBlock(block);\n continue;\n } else if (\n _isContentBlock(block, \"reasoning_content\") &&\n _isObject(block.reasoningText) &&\n _isString(block.reasoningText.text)\n ) {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoningText.text,\n ...(_isString(block.reasoningText.signature)\n ? { signature: block.reasoningText.signature }\n : {}),\n };\n continue;\n } else if (\n _isContentBlock(block, \"reasoning_content\") &&\n _isString(block.reasoningText)\n ) {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoningText,\n };\n continue;\n } else if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n yield { type: \"text\", text: block.text };\n continue;\n } else if (_isContentBlock(block, \"tool_result\")) {\n yield { type: \"non_standard\", value: block };\n continue;\n } else if (_isContentBlock(block, \"tool_call\")) {\n // no-op - filtered to tools\n continue;\n } else if (_isContentBlock(block, \"video\") && _isObject(block.video)) {\n yield convertConverseVideoBlock(block);\n continue;\n }\n yield { type: \"non_standard\", value: block };\n }\n }\n return Array.from(iterateContent());\n}\n\nexport const ChatBedrockConverseTranslator: StandardContentBlockTranslator = {\n translateContent: convertToV1FromChatBedrockConverseMessage,\n translateContentChunk: convertToV1FromChatBedrockConverseMessage,\n};\n"],"mappings":"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"}