diff --git a/src/providers/reka-ai/chatComplete.test.ts b/src/providers/reka-ai/chatComplete.test.ts new file mode 100644 index 000000000..7faf4e493 --- /dev/null +++ b/src/providers/reka-ai/chatComplete.test.ts @@ -0,0 +1,33 @@ +import { Params } from '../../types/requestBody'; +import { ParameterConfig, ProviderConfig } from '../types'; +import { RekaAIChatCompleteConfig } from './chatComplete'; + +const transformMessages = (config: ProviderConfig) => { + const messagesConfig = config.messages as ParameterConfig; + return (params: Params) => messagesConfig.transform!(params, {} as any); +}; + +describe('RekaAIChatCompleteConfig messages transform', () => { + const transform = transformMessages(RekaAIChatCompleteConfig); + + it('does not throw when the first message is an image', () => { + expect(() => + transform({ + messages: [ + { + role: 'user', + content: [ + { type: 'image_url', image_url: { url: 'https://x/y.png' } }, + ], + }, + ], + } as Params) + ).not.toThrow(); + }); + + it('does not throw when there are no messages', () => { + expect(() => + transform({ messages: [] } as unknown as Params) + ).not.toThrow(); + }); +}); diff --git a/src/providers/reka-ai/chatComplete.ts b/src/providers/reka-ai/chatComplete.ts index 8b217b9f5..2c054c2cc 100644 --- a/src/providers/reka-ai/chatComplete.ts +++ b/src/providers/reka-ai/chatComplete.ts @@ -38,7 +38,7 @@ export const RekaAIChatCompleteConfig: ProviderConfig = { media_url?: string; }) => { // NOTE: can't have more than one image in conversation history - if (media_url && messages[0].media_url) { + if (media_url && messages[0]?.media_url) { return; } @@ -76,7 +76,7 @@ export const RekaAIChatCompleteConfig: ProviderConfig = { } }); - if (messages[0].type !== 'human') { + if (messages[0]?.type !== 'human') { messages.unshift({ type: 'human', text: 'Placeholder for alternation',