diff --git a/src/photo/ai/index.ts b/src/photo/ai/index.ts index af2c1fba..089f434d 100644 --- a/src/photo/ai/index.ts +++ b/src/photo/ai/index.ts @@ -135,4 +135,6 @@ export const cleanUpAiTextResponse = (text: string) => text .replaceAll('\n', ' ') .replaceAll('"', '') + .replaceAll('**', '') + .replaceAll('`', '') .replace(/\.$/, ''); diff --git a/src/platforms/openai.ts b/src/platforms/openai.ts index 356f8687..ffef6985 100644 --- a/src/platforms/openai.ts +++ b/src/platforms/openai.ts @@ -1,4 +1,4 @@ -import { generateText, streamText, generateObject } from 'ai'; +import { generateText, Output, streamText } from 'ai'; import { createStreamableValue } from '@ai-sdk/rsc'; import { createOpenAI } from '@ai-sdk/openai'; import { OPENAI_BASE_URL, OPENAI_SECRET_KEY } from '@/app/config'; @@ -15,7 +15,7 @@ const checkRateLimitAndThrow = (isBatch?: boolean) => ...isBatch && { tokens: 1200, duration: '1d' }, }); -const MODEL: Parameters>[0] = 'gpt-5.1'; +const MODEL: Parameters>[0] = 'gpt-5.2'; const openai = OPENAI_SECRET_KEY ? createOpenAI({ @@ -93,8 +93,9 @@ export const generateOpenAiImageObjectQuery = async ( await checkRateLimitAndThrow(isBatch); if (openai) { - return generateObject({ + return generateText({ model: openai(MODEL), + output: Output.object({ schema }), messages: [{ 'role': 'user', 'content': [ @@ -107,9 +108,8 @@ export const generateOpenAiImageObjectQuery = async ( }, ], }], - schema, }).then(result => Object.fromEntries(Object - .entries(result.object || {}) + .entries(result.output || {}) .map(([k, v]) => [k, cleanUpAiTextResponse(v as string)]), ) as z.infer); } else {