Proxies

Using proxies with HyperAgent using Hyperbrowser

Here is a simple example which shows how you can use Hyperbrowser proxies with HyperAgent. You can also set proxy properties like

  • proxyCountry

  • proxyState

  • proxyCity

A detailed list of proxy properties can be found here

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,
    browserProvider: "Hyperbrowser",
    hyperbrowserConfig: {
      hyperbrowserSessionOptions: {
        useProxy: true,
        proxyCountry: "AU",
      },
    },
  });

  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({
      ip: z
        .string()
        .describe("The public ip of the computer as listed on the webpage"),
    }),
  });
  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