firestore-genai-chatbot/functions/src/overrides.ts (27 lines of code) (raw):
import {DocumentSnapshot} from 'firebase-admin/firestore';
import {z} from 'zod';
const intSchema = z.union([
z.string().transform(arg => parseInt(arg) || undefined),
z.number(),
]);
const floatSchema = z.union([z.string().transform(parseFloat), z.number()]);
const overridesSchema = z.object({
context: z.string().optional(),
model: z.string().optional(),
topK: intSchema.optional(),
candidateCount: intSchema.optional(),
maxOutputTokens: intSchema.optional(),
topP: floatSchema.optional(),
temperature: floatSchema.optional(),
});
export function extractOverrides(
docSnap: DocumentSnapshot
): Record<string, unknown> {
const data = docSnap.data();
try {
return overridesSchema.parse(data);
} catch (e) {
console.error(e);
throw new Error('Error parsing overrides from parent doc.');
}
}