Commit efbc2710 authored by ThinhNC's avatar ThinhNC

fix(ai-assistant): infer response types from Zod schemas

parent ab1b126a
import { Prisma, TransactionType } from '@prisma/client';
import { z } from 'zod';
import { getAIProvider } from '../../common/ai/ai-provider.factory';
import {
AIContentPart,
......@@ -37,7 +38,6 @@ import {
receiptResponseSchema,
recommendationsResponseSchema,
} from './ai-assistant-response.validation';
import type { AIResponseValidator } from './ai-assistant-response.validation';
const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000;
const DEFAULT_CONTEXT_DAYS = 90;
......@@ -227,12 +227,12 @@ export class AIAssistantService {
);
}
private async generateWithContext<T>(
private async generateWithContext<TSchema extends z.ZodTypeAny>(
context: ResolvedContext,
prompt: string,
responseJsonSchema: Record<string, unknown>,
outputSchema: AIResponseValidator<T>,
): Promise<AIServiceResult<T>> {
outputSchema: TSchema,
): Promise<AIServiceResult<z.output<TSchema>>> {
const response = await this.generate(
{
systemInstruction: SYSTEM_INSTRUCTION,
......@@ -259,9 +259,9 @@ export class AIAssistantService {
};
}
private async generate<T>(
private async generate<TSchema extends z.ZodTypeAny>(
request: AIGenerateRequest,
outputSchema: AIResponseValidator<T>,
outputSchema: TSchema,
) {
try {
const response = await getAIProvider().generateStructured(request);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment