ai-utils.js
Version:
Build AI applications, chatbots, and agents with JavaScript and TypeScript.
64 lines (63 loc) • 1.99 kB
JavaScript
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,
};
}