UNPKG

@langchain/core

Version:
1 lines 7.21 kB
{"version":3,"file":"google.cjs","names":["iife","_isContentBlock","_isString","_isObject"],"sources":["../../../src/messages/block_translators/google.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport { iife, _isContentBlock, _isObject, _isString } from \"./utils.js\";\n\nfunction convertToV1FromChatGoogleMessage(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content = iife(() => {\n if (typeof message.content === \"string\") {\n if (message.additional_kwargs.originalTextContentBlock) {\n return [\n {\n ...message.additional_kwargs.originalTextContentBlock,\n type: \"text\",\n },\n ];\n } else {\n return [{ type: \"text\", text: message.content }];\n }\n } else {\n const originalBlock = message.additional_kwargs\n ?.originalTextContentBlock as Record<string, unknown> | undefined;\n if (originalBlock?.thoughtSignature) {\n // During streaming with thinking models, thoughtSignature arrives in\n // a metadata-only chunk and is stored in originalTextContentBlock.\n // When content is an array (due to thinking parts), this signature\n // isn't carried into the content array by mergeContent().\n // Merge it into the last non-thinking text block.\n const hasSignatureInContent = message.content.some(\n (b: Record<string, unknown>) => \"thoughtSignature\" in b\n );\n if (!hasSignatureInContent) {\n const result = [...message.content];\n for (let i = result.length - 1; i >= 0; i--) {\n const block = result[i] as Record<string, unknown>;\n if (block.type === \"text\" && !block.thought) {\n block.thoughtSignature = originalBlock.thoughtSignature;\n return result;\n }\n }\n }\n }\n return message.content;\n }\n });\n for (const block of content) {\n const contentBlockBase: ContentBlock.Standard = iife(() => {\n if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n return {\n type: \"text\",\n text: block.text,\n };\n } else if (\n _isContentBlock(block, \"inlineData\") &&\n _isObject(block.inlineData) &&\n _isString(block.inlineData.mimeType) &&\n _isString(block.inlineData.data)\n ) {\n return {\n type: \"file\",\n mimeType: block.inlineData.mimeType,\n data: block.inlineData.data,\n };\n } else if (\n _isContentBlock(block, \"functionCall\") &&\n _isObject(block.functionCall) &&\n _isString(block.functionCall.name) &&\n _isObject(block.functionCall.args)\n ) {\n return {\n type: \"tool_call\",\n id: message.id,\n name: block.functionCall.name,\n args: block.functionCall.args,\n };\n } else if (_isContentBlock(block, \"functionResponse\")) {\n return { type: \"non_standard\", value: block };\n } else if (\n _isContentBlock(block, \"fileData\") &&\n _isObject(block.fileData) &&\n _isString(block.fileData.mimeType) &&\n _isString(block.fileData.fileUri)\n ) {\n return {\n type: \"file\",\n mimeType: block.fileData.mimeType,\n fileId: block.fileData.fileUri,\n };\n } else if (_isContentBlock(block, \"executableCode\")) {\n return { type: \"non_standard\", value: block };\n } else if (_isContentBlock(block, \"codeExecutionResult\")) {\n return { type: \"non_standard\", value: block };\n }\n return { type: \"non_standard\", value: block };\n });\n const contentBlock: ContentBlock.Standard = iife(() => {\n if (\"thought\" in block && block.thought) {\n const reasoning: string =\n contentBlockBase.type === \"text\" ? contentBlockBase.text : \"\";\n return {\n type: \"reasoning\",\n reasoning,\n reasoningContentBlock: contentBlockBase,\n };\n } else {\n return contentBlockBase;\n }\n });\n\n const ret: ContentBlock.Standard = {\n thought: block.thought,\n thoughtSignature: block.thoughtSignature,\n partMetadata: block.partMetadata,\n ...contentBlock,\n };\n for (const attribute in ret) {\n if (ret[attribute] === undefined) {\n delete ret[attribute];\n }\n }\n\n yield ret;\n continue;\n }\n }\n return Array.from(iterateContent());\n}\n\nexport const ChatGoogleTranslator: StandardContentBlockTranslator = {\n translateContent: convertToV1FromChatGoogleMessage,\n translateContentChunk: convertToV1FromChatGoogleMessage,\n};\n"],"mappings":";;AAKA,SAAS,iCACP,SAC8B;CAC9B,UAAU,iBAAkD;EAC1D,MAAM,UAAUA,cAAAA,WAAW;GACzB,IAAI,OAAO,QAAQ,YAAY,UAC7B,IAAI,QAAQ,kBAAkB,0BAC5B,OAAO,CACL;IACE,GAAG,QAAQ,kBAAkB;IAC7B,MAAM;GACR,CACF;QAEA,OAAO,CAAC;IAAE,MAAM;IAAQ,MAAM,QAAQ;GAAQ,CAAC;QAE5C;IACL,MAAM,gBAAgB,QAAQ,mBAC1B;IACJ,IAAI,eAAe,kBASb;SAAA,CAH0B,QAAQ,QAAQ,MAC3C,MAA+B,sBAAsB,CAE/B,GAAG;MAC1B,MAAM,SAAS,CAAC,GAAG,QAAQ,OAAO;MAClC,KAAK,IAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;OAC3C,MAAM,QAAQ,OAAO;OACrB,IAAI,MAAM,SAAS,UAAU,CAAC,MAAM,SAAS;QAC3C,MAAM,mBAAmB,cAAc;QACvC,OAAO;OACT;MACF;KACF;;IAEF,OAAO,QAAQ;GACjB;EACF,CAAC;EACD,KAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,mBAA0CA,cAAAA,WAAW;IACzD,IAAIC,cAAAA,gBAAgB,OAAO,MAAM,KAAKC,cAAAA,UAAU,MAAM,IAAI,GACxD,OAAO;KACL,MAAM;KACN,MAAM,MAAM;IACd;SACK,IACLD,cAAAA,gBAAgB,OAAO,YAAY,KACnCE,cAAAA,UAAU,MAAM,UAAU,KAC1BD,cAAAA,UAAU,MAAM,WAAW,QAAQ,KACnCA,cAAAA,UAAU,MAAM,WAAW,IAAI,GAE/B,OAAO;KACL,MAAM;KACN,UAAU,MAAM,WAAW;KAC3B,MAAM,MAAM,WAAW;IACzB;SACK,IACLD,cAAAA,gBAAgB,OAAO,cAAc,KACrCE,cAAAA,UAAU,MAAM,YAAY,KAC5BD,cAAAA,UAAU,MAAM,aAAa,IAAI,KACjCC,cAAAA,UAAU,MAAM,aAAa,IAAI,GAEjC,OAAO;KACL,MAAM;KACN,IAAI,QAAQ;KACZ,MAAM,MAAM,aAAa;KACzB,MAAM,MAAM,aAAa;IAC3B;SACK,IAAIF,cAAAA,gBAAgB,OAAO,kBAAkB,GAClD,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;SACvC,IACLA,cAAAA,gBAAgB,OAAO,UAAU,KACjCE,cAAAA,UAAU,MAAM,QAAQ,KACxBD,cAAAA,UAAU,MAAM,SAAS,QAAQ,KACjCA,cAAAA,UAAU,MAAM,SAAS,OAAO,GAEhC,OAAO;KACL,MAAM;KACN,UAAU,MAAM,SAAS;KACzB,QAAQ,MAAM,SAAS;IACzB;SACK,IAAID,cAAAA,gBAAgB,OAAO,gBAAgB,GAChD,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;SACvC,IAAIA,cAAAA,gBAAgB,OAAO,qBAAqB,GACrD,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;IAE9C,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;GAC9C,CAAC;GACD,MAAM,eAAsCD,cAAAA,WAAW;IACrD,IAAI,aAAa,SAAS,MAAM,SAG9B,OAAO;KACL,MAAM;KACN,WAHA,iBAAiB,SAAS,SAAS,iBAAiB,OAAO;KAI3D,uBAAuB;IACzB;SAEA,OAAO;GAEX,CAAC;GAED,MAAM,MAA6B;IACjC,SAAS,MAAM;IACf,kBAAkB,MAAM;IACxB,cAAc,MAAM;IACpB,GAAG;GACL;GACA,KAAK,MAAM,aAAa,KACtB,IAAI,IAAI,eAAe,KAAA,GACrB,OAAO,IAAI;GAIf,MAAM;EAER;CACF;CACA,OAAO,MAAM,KAAK,eAAe,CAAC;AACpC;AAEA,MAAa,uBAAuD;CAClE,kBAAkB;CAClB,uBAAuB;AACzB"}