chat.ts
1 import type { components } from '@/types/api'; 2 3 export type ChatRequest = components['schemas']['CompleteQueryRequest']; 4 5 // // Ajv schema ID is always `#/components/schemas/<Name>` 6 // const isChatRequest = getValidator<ChatRequest>('#/components/schemas/CompleteQueryRequest'); 7 8 export function createChatRequest(message: string, opts?: { stream?: boolean }): ChatRequest { 9 const payload: Partial<ChatRequest> = { 10 message, 11 // Required fields from the schema 12 model: 'gpt-4o', 13 temperature: 0.7, 14 system_message: 'You are a helpful AI assistant.' 15 }; 16 17 // Add optional fields 18 if (opts?.stream !== undefined) { 19 // If stream is added to schema later, this will work 20 (payload as any).stream = opts.stream; 21 } 22 23 // Type assertion after we've built a valid object 24 const request = payload as ChatRequest; 25 26 // if (!isChatRequest(request)) { 27 // // Access errors from ajv instance 28 // throw new Error('ChatRequest failed validation'); 29 // } 30 return request; 31 }