async function askWithRAG(question: string) {
// Retrieve
const context = await retrieve(question);
// Build prompt
const contextBlock = context
.map((c, i) => `[Source ${i + 1}: ${c.source}]\n${c.content}`)
.join('\n\n---\n\n');
const messages = [
{
role: 'system',
content: `You are a helpful assistant. Answer the user's question using
the provided context. Always cite sources as [Source N]. If the context
doesn't contain the answer, say so.`,
},
{
role: 'user',
content: `Context:\n\n${contextBlock}\n\nQuestion: ${question}`,
},
];
// Generate
const response = await client.chat.completions.create({
model: 'gizzi-pro',
messages,
temperature: 0.1,
});
return {
answer: response.choices[0].message.content,
sources: context.map((c) => c.source),
};
}