@langchain/anthropic
Version:
Anthropic integrations for LangChain.js
1 lines • 5.19 kB
Source Map (JSON)
{"version":3,"file":"output_parsers.cjs","names":["BaseLLMOutputParser","params: AnthropicToolsOutputParserParams<T>","result: unknown","e: any","OutputParserException","generations: ChatGeneration[]","tool","content: Record<string, any>[]","toolCalls: ToolCall[]"],"sources":["../src/output_parsers.ts"],"sourcesContent":["import {\n BaseLLMOutputParser,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport { JsonOutputKeyToolsParserParamsInterop } from \"@langchain/core/output_parsers/openai_tools\";\nimport { ChatGeneration } from \"@langchain/core/outputs\";\nimport { ToolCall } from \"@langchain/core/messages/tool\";\nimport {\n interopSafeParseAsync,\n InteropZodType,\n} from \"@langchain/core/utils/types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface AnthropicToolsOutputParserParams<T extends Record<string, any>>\n extends JsonOutputKeyToolsParserParamsInterop<T> {}\n\nexport class AnthropicToolsOutputParser<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends Record<string, any> = Record<string, any>\n> extends BaseLLMOutputParser<T> {\n static lc_name() {\n return \"AnthropicToolsOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"anthropic\", \"output_parsers\"];\n\n returnId = false;\n\n /** The type of tool calls to return. */\n keyName: string;\n\n /** Whether to return only the first tool call. */\n returnSingle = false;\n\n zodSchema?: InteropZodType<T>;\n\n constructor(params: AnthropicToolsOutputParserParams<T>) {\n super(params);\n this.keyName = params.keyName;\n this.returnSingle = params.returnSingle ?? this.returnSingle;\n this.zodSchema = params.zodSchema;\n }\n\n protected async _validateResult(result: unknown): Promise<T> {\n let parsedResult = result;\n if (typeof result === \"string\") {\n try {\n parsedResult = JSON.parse(result);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n throw new OutputParserException(\n `Failed to parse. Text: \"${JSON.stringify(\n result,\n null,\n 2\n )}\". Error: ${JSON.stringify(e.message)}`,\n result\n );\n }\n } else {\n parsedResult = result;\n }\n if (this.zodSchema === undefined) {\n return parsedResult as T;\n }\n const zodParsedResult = await interopSafeParseAsync(\n this.zodSchema,\n parsedResult\n );\n if (zodParsedResult.success) {\n return zodParsedResult.data;\n } else {\n throw new OutputParserException(\n `Failed to parse. Text: \"${JSON.stringify(\n result,\n null,\n 2\n )}\". Error: ${JSON.stringify(zodParsedResult.error.issues)}`,\n JSON.stringify(parsedResult, null, 2)\n );\n }\n }\n\n async parseResult(generations: ChatGeneration[]): Promise<T> {\n const tools = generations.flatMap((generation) => {\n const { message } = generation;\n if (!Array.isArray(message.content)) {\n return [];\n }\n const tool = extractToolCalls(message.content)[0];\n return tool;\n });\n if (tools[0] === undefined) {\n throw new Error(\n \"No parseable tool calls provided to AnthropicToolsOutputParser.\"\n );\n }\n const [tool] = tools;\n const validatedResult = await this._validateResult(tool.args);\n return validatedResult;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function extractToolCalls(content: Record<string, any>[]) {\n const toolCalls: ToolCall[] = [];\n\n for (const block of content) {\n if (block.type === \"tool_use\") {\n toolCalls.push({\n name: block.name,\n args: block.input,\n id: block.id,\n type: \"tool_call\",\n });\n }\n }\n\n return toolCalls;\n}\n"],"mappings":";;;;;AAgBA,IAAa,6BAAb,cAGUA,oDAAuB;CAC/B,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAa;CAAiB;CAE3D,WAAW;;CAGX;;CAGA,eAAe;CAEf;CAEA,YAAYC,QAA6C;EACvD,MAAM,OAAO;EACb,KAAK,UAAU,OAAO;EACtB,KAAK,eAAe,OAAO,gBAAgB,KAAK;EAChD,KAAK,YAAY,OAAO;CACzB;CAED,MAAgB,gBAAgBC,QAA6B;EAC3D,IAAI,eAAe;AACnB,MAAI,OAAO,WAAW,SACpB,KAAI;GACF,eAAe,KAAK,MAAM,OAAO;EAElC,SAAQC,GAAQ;AACf,SAAM,IAAIC,sDACR,CAAC,wBAAwB,EAAE,KAAK,UAC9B,QACA,MACA,EACD,CAAC,UAAU,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,EACzC;EAEH;OAED,eAAe;AAEjB,MAAI,KAAK,cAAc,OACrB,QAAO;EAET,MAAM,kBAAkB,8DACtB,KAAK,WACL,aACD;AACD,MAAI,gBAAgB,QAClB,QAAO,gBAAgB;MAEvB,OAAM,IAAIA,sDACR,CAAC,wBAAwB,EAAE,KAAK,UAC9B,QACA,MACA,EACD,CAAC,UAAU,EAAE,KAAK,UAAU,gBAAgB,MAAM,OAAO,EAAE,EAC5D,KAAK,UAAU,cAAc,MAAM,EAAE;CAG1C;CAED,MAAM,YAAYC,aAA2C;EAC3D,MAAM,QAAQ,YAAY,QAAQ,CAAC,eAAe;GAChD,MAAM,EAAE,SAAS,GAAG;AACpB,OAAI,CAAC,MAAM,QAAQ,QAAQ,QAAQ,CACjC,QAAO,CAAE;GAEX,MAAMC,SAAO,iBAAiB,QAAQ,QAAQ,CAAC;AAC/C,UAAOA;EACR,EAAC;AACF,MAAI,MAAM,OAAO,OACf,OAAM,IAAI,MACR;EAGJ,MAAM,CAAC,KAAK,GAAG;EACf,MAAM,kBAAkB,MAAM,KAAK,gBAAgB,KAAK,KAAK;AAC7D,SAAO;CACR;AACF;AAGD,SAAgB,iBAAiBC,SAAgC;CAC/D,MAAMC,YAAwB,CAAE;AAEhC,MAAK,MAAM,SAAS,QAClB,KAAI,MAAM,SAAS,YACjB,UAAU,KAAK;EACb,MAAM,MAAM;EACZ,MAAM,MAAM;EACZ,IAAI,MAAM;EACV,MAAM;CACP,EAAC;AAIN,QAAO;AACR"}