Output to Schema
HyperAgent can be easily configured to output results to a Zod schema. This can be done by passing the schema to the executeTask
(or executeTaskAsync
)function.
import "dotenv/config";
import { HyperAgent } from "@hyperbrowser/agent";
import chalk from "chalk";
import { ChatOpenAI } from "@langchain/openai";
import { z } from "zod";
const TASK =
"Navigate to imdb.com, search for 'The Matrix', and extract the director, release year, and rating";
async function runEval() {
const llm = new ChatOpenAI({
apiKey: process.env.OPENAI_API_KEY,
model: "gpt-4o",
});
const agent = new HyperAgent({
llm: llm,
debug: true,
});
const result = await agent.executeTask(TASK, {
debugOnAgentOutput: (agentOutput) => {
console.log("\n" + chalk.cyan.bold("===== AGENT OUTPUT ====="));
console.dir(agentOutput, { depth: null, colors: true });
console.log(chalk.cyan.bold("===============") + "\n");
},
onStep: (step) => {
console.log("\n" + chalk.cyan.bold(`===== STEP ${step.idx} =====`));
console.dir(step, { depth: null, colors: true });
console.log(chalk.cyan.bold("===============") + "\n");
},
outputSchema: z.object({
director: z.string().describe("The name of the movie director"),
releaseYear: z.number().describe("The year the movie was released"),
rating: z.string().describe("The IMDb rating of the movie"),
}),
});
await agent.closeAgent();
console.log(chalk.green.bold("\nResult:"));
console.log(chalk.white(result.output));
return result;
}
(async () => {
await runEval();
})().catch((error) => {
console.error(chalk.red("Error:"), error);
process.exit(1);
});
Last updated