From fa3d92d5e062413123b809ef45f7c8c42c0a48aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=97=8D+85CD?= <50108258+kwaa@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:00:42 +0800 Subject: [PATCH] fix(generate-object): validate --- packages/generate-object/src/index.ts | 32 +++++++++++++-------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/packages/generate-object/src/index.ts b/packages/generate-object/src/index.ts index a2636cd..9ef2f00 100644 --- a/packages/generate-object/src/index.ts +++ b/packages/generate-object/src/index.ts @@ -41,18 +41,15 @@ export async function generateObject(options: GenerateObjectOp schemaDescription: undefined, // Remove schemaDescription from options schemaName: undefined, // Remove schemaName from options }).then(async ({ finishReason, messages, steps, text, toolCalls, toolResults, usage }) => { - const object = JSON.parse(text!) as Infer + const json: unknown = JSON.parse(text!) if (options.output === 'array') { - const elements = (object as { elements: Array> }).elements - for (const element of elements) { - await validate(schemaValidator, element as InferIn) - } - return { finishReason, messages, - object: elements, + object: await Promise.all((json as { elements: InferIn[] }) + .elements + .map(async element => validate(schemaValidator, element))), steps, text, toolCalls, @@ -60,16 +57,17 @@ export async function generateObject(options: GenerateObjectOp usage, } } - - return { - finishReason, - messages, - object, - steps, - text, - toolCalls, - toolResults, - usage, + else { + return { + finishReason, + messages, + object: await validate(options.schema, json as InferIn), + steps, + text, + toolCalls, + toolResults, + usage, + } } }) }