UNPKG

@anthropic-ai/sdk

Version:

The official TypeScript library for the Anthropic API

62 lines 2.01 kB
import { AnthropicError } from "../core/error.mjs"; function getOutputFormat(params) { return params?.output_config?.format; } export function maybeParseMessage(message, params, opts) { const outputFormat = getOutputFormat(params); if (!params || !('parse' in (outputFormat ?? {}))) { return { ...message, content: message.content.map((block) => { if (block.type === 'text') { const parsedBlock = Object.defineProperty({ ...block }, 'parsed_output', { value: null, enumerable: false, }); return parsedBlock; } return block; }), parsed_output: null, }; } return parseMessage(message, params, opts); } export function parseMessage(message, params, opts) { let firstParsedOutput = null; const content = message.content.map((block) => { if (block.type === 'text') { const parsedOutput = parseOutputFormat(params, block.text); if (firstParsedOutput === null) { firstParsedOutput = parsedOutput; } const parsedBlock = Object.defineProperty({ ...block }, 'parsed_output', { value: parsedOutput, enumerable: false, }); return parsedBlock; } return block; }); return { ...message, content, parsed_output: firstParsedOutput, }; } function parseOutputFormat(params, content) { const outputFormat = getOutputFormat(params); if (outputFormat?.type !== 'json_schema') { return null; } try { if ('parse' in outputFormat) { return outputFormat.parse(content); } return JSON.parse(content); } catch (error) { throw new AnthropicError(`Failed to parse structured output: ${error}`); } } //# sourceMappingURL=parser.mjs.map