UNPKG

ai-utils.js

Version:

Build AI applications, chatbots, and agents with JavaScript and TypeScript.

58 lines (57 loc) 1.91 kB
import { executeCall } from "../executeCall.js"; import { SchemaValidationError } from "./SchemaValidationError.js"; export async function generateJson(model, schemaDefinition, prompt, options) { const expandedPrompt = prompt(schemaDefinition); const result = await executeCall({ model, options, generateResponse: (options) => model.generateJsonResponse(expandedPrompt, options), extractOutputValue: (response) => { const json = expandedPrompt.extractJson(response); const parseResult = schemaDefinition.schema.safeParse(json); if (!parseResult.success) { throw new SchemaValidationError({ schemaName: schemaDefinition.name, value: json, errors: parseResult.error, }); } return parseResult.data; }, getStartEvent: (metadata, settings) => ({ type: "json-generation-started", metadata, settings, prompt, }), getAbortEvent: (metadata, settings) => ({ type: "json-generation-finished", status: "abort", metadata, settings, prompt, }), getFailureEvent: (metadata, settings, error) => ({ type: "json-generation-finished", status: "failure", metadata, settings, prompt, error, }), getSuccessEvent: (metadata, settings, response, output) => ({ type: "json-generation-finished", status: "success", metadata, settings, prompt, response, generatedJson: output, }), }); return { value: result.output, response: result.response, metadata: result.metadata, }; }