ai
Version:
AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript
83 lines (76 loc) • 2.04 kB
text/typescript
import { InvalidPromptError } from '@ai-sdk/provider';
import { standardizePrompt } from './standardize-prompt';
import { describe, it, expect } from 'vitest';
describe('standardizePrompt', () => {
it('should throw InvalidPromptError when system message has parts', async () => {
await expect(async () => {
await standardizePrompt({
messages: [
{
role: 'system',
content: [{ type: 'text', text: 'test' }] as any,
},
],
});
}).rejects.toThrow(InvalidPromptError);
});
it('should throw InvalidPromptError when messages array is empty', async () => {
await expect(async () => {
await standardizePrompt({
messages: [],
});
}).rejects.toThrow(InvalidPromptError);
});
it('should support SystemModelMessage system message', async () => {
const result = await standardizePrompt({
system: {
role: 'system',
content: 'INSTRUCTIONS',
},
prompt: 'Hello, world!',
});
expect(result).toMatchInlineSnapshot(`
{
"messages": [
{
"content": "Hello, world!",
"role": "user",
},
],
"system": {
"content": "INSTRUCTIONS",
"role": "system",
},
}
`);
});
it('should support array of SystemModelMessage system messages', async () => {
const result = await standardizePrompt({
system: [
{ role: 'system', content: 'INSTRUCTIONS' },
{ role: 'system', content: 'INSTRUCTIONS 2' },
],
prompt: 'Hello, world!',
});
expect(result).toMatchInlineSnapshot(`
{
"messages": [
{
"content": "Hello, world!",
"role": "user",
},
],
"system": [
{
"content": "INSTRUCTIONS",
"role": "system",
},
{
"content": "INSTRUCTIONS 2",
"role": "system",
},
],
}
`);
});
});