hts/packages/isdk/prompts/openai.test.ts

152 lines
3.5 KiB
TypeScript

import { Message } from '../shared/types';
import {
experimental_buildOpenAIMessages,
ChatCompletionMessageParam,
} from './openai';
describe('experimental_buildOpenAIMessages', () => {
it('should correctly map messages to ChatCompletionMessageParam', () => {
const messages: Message[] = [
{
id: '1',
role: 'system',
content: 'System message',
},
{
id: '2',
role: 'user',
content: 'User message',
},
{
id: '3',
role: 'assistant',
content: 'Assistant message',
function_call: {
name: 'functionName',
arguments: 'arg1, arg2',
},
},
{
id: '4',
role: 'function',
content: 'Function message',
name: 'functionName',
},
{
id: '5',
role: 'tool',
content: 'Tool message',
name: 'toolName',
tool_call_id: 'toolCallId',
},
];
const expected: ChatCompletionMessageParam[] = [
{
role: 'system',
content: 'System message',
},
{
role: 'user',
content: 'User message',
},
{
role: 'assistant',
content: 'Assistant message',
function_call: {
name: 'functionName',
arguments: 'arg1, arg2',
},
},
{
role: 'function',
content: 'Function message',
name: 'functionName',
},
{
role: 'tool',
content: 'Tool message',
tool_call_id: 'toolCallId',
},
];
const result = experimental_buildOpenAIMessages(messages);
expect(result).toEqual(expected);
});
it('should throw an error for invalid function call in assistant message', () => {
const messages: Message[] = [
{
id: '1',
role: 'assistant',
content: 'Assistant message',
function_call: 'invalidFunctionCall',
},
];
expect(() => experimental_buildOpenAIMessages(messages)).toThrowError(
'Invalid function call in message. Expected a function call object',
);
});
it('should throw an error for invalid function call in function message', () => {
const messages: Message[] = [
{
id: '1',
role: 'function',
content: 'Function message',
},
];
expect(() => experimental_buildOpenAIMessages(messages)).toThrowError(
'Invalid function call in message. Expected a name',
);
});
it('should throw an error for unsupported message role', () => {
const messages: Message[] = [
{
id: '1',
role: 'data',
content: 'Data message',
},
];
expect(() => experimental_buildOpenAIMessages(messages)).toThrowError(
"unsupported message role 'data'",
);
});
it('should throw an error for invalid tool message', () => {
const messages: Message[] = [
{
id: '1',
role: 'tool',
content: 'Tool message',
name: undefined,
},
];
expect(() => experimental_buildOpenAIMessages(messages)).toThrowError(
'Invalid tool message. Expected a name',
);
});
it('should throw an error for invalid tool message', () => {
const messages: Message[] = [
{
id: '1',
role: 'tool',
content: 'Tool message',
name: 'toolName',
tool_call_id: undefined,
},
];
expect(() => experimental_buildOpenAIMessages(messages)).toThrowError(
'Invalid tool message. Expected a tool_call_id',
);
});
});