UNPKG

ai-utils.js

Version:

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

64 lines (63 loc) 1.99 kB
import { executeCall } from "../executeCall.js"; /** * Generates a text using a prompt. * The prompt format depends on the model. * For example, OpenAI text models expect a string prompt, and OpenAI chat models expect an array of chat messages. * * @example * const model = new OpenAITextGenerationModel(...); * * const { text } = await model.generateText( * "Write a short story about a robot learning to love:\n\n" * ); */ export async function generateText( // eslint-disable-next-line @typescript-eslint/no-explicit-any model, prompt, options) { const result = await executeCall({ model, options, generateResponse: (options) => model.generateTextResponse(prompt, options), extractOutputValue: (result) => { const shouldTrimOutput = model.settings.trimOutput ?? true; return shouldTrimOutput ? model.extractText(result).trim() : model.extractText(result); }, getStartEvent: (metadata, settings) => ({ type: "text-generation-started", metadata, settings, prompt, }), getAbortEvent: (metadata, settings) => ({ type: "text-generation-finished", status: "abort", metadata, settings, prompt, }), getFailureEvent: (metadata, settings, error) => ({ type: "text-generation-finished", status: "failure", metadata, settings, prompt, error, }), getSuccessEvent: (metadata, settings, response, output) => ({ type: "text-generation-finished", status: "success", metadata, settings, prompt, response, generatedText: output, }), }); return { text: result.output, response: result.response, metadata: result.metadata, }; }