parea-ai
Version:
Client SDK library to connect to Parea AI.
75 lines (74 loc) • 2.56 kB
JavaScript
;
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;