UNPKG

parea-ai

Version:

Client SDK library to connect to Parea AI.

75 lines (74 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenAIMessageConverter = void 0; const types_1 = require("../types"); /** * Implements the MessageConverter interface for converting OpenAI messages. */ class OpenAIMessageConverter { /** * Converts an OpenAI message to a standardized Message format. * @param m - The input message to be converted. * @returns A standardized Message object. */ convert(m) { // type guard for ParsedChatCompletionMessage function isParsedChatCompletionMessage(message) { return 'parsed' in message; } if (m.role === 'tool') { return { role: types_1.Role.tool, content: JSON.stringify({ tool_call_id: m.tool_call_id, content: m.content }), }; } else if (m.role === 'function') { return { role: types_1.Role.function, content: typeof m.content === 'string' ? m.content : JSON.stringify(m.content), }; } else if (m.role === 'assistant' && m?.refusal) { return { role: types_1.Role.assistant, content: JSON.stringify(m.refusal), }; } else if (m.role === 'assistant' && isParsedChatCompletionMessage(m) && m?.parsed) { return { role: types_1.Role.assistant, content: JSON.stringify(m.parsed), }; } else if (m.role === 'assistant' && !!m.function_call) { return { role: types_1.Role.assistant, content: JSON.stringify(m.function_call), }; } else if (m.role === 'assistant' && !!m.tool_calls) { if (!!m.content) { return { role: types_1.Role.assistant, content: JSON.stringify({ content: m.content, tool_calls: m.tool_calls, }), }; } else { return { role: types_1.Role.assistant, content: JSON.stringify(m.tool_calls), }; } } else { return { role: types_1.Role[m.role], content: typeof m.content === 'string' ? m.content : JSON.stringify(m.content || {}), }; } } } exports.OpenAIMessageConverter = OpenAIMessageConverter;