Skip to content
Snippets Groups Projects
agent.ts 1.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { FunctionTool, Gemini, GEMINI_MODEL, LLMAgent } from "llamaindex";
    
    const sumNumbers = FunctionTool.from(
      ({ a, b }: { a: number; b: number }) => `${a + b}`,
      {
        name: "sumNumbers",
        description: "Use this function to sum two numbers",
        parameters: {
          type: "object",
          properties: {
            a: {
              type: "number",
              description: "The first number",
            },
            b: {
              type: "number",
              description: "The second number",
            },
          },
          required: ["a", "b"],
        },
      },
    );
    
    const divideNumbers = FunctionTool.from(
      ({ a, b }: { a: number; b: number }) => `${a / b}`,
      {
        name: "divideNumbers",
        description: "Use this function to divide two numbers",
        parameters: {
          type: "object",
          properties: {
            a: {
              type: "number",
              description: "The dividend a to divide",
            },
            b: {
              type: "number",
              description: "The divisor b to divide by",
            },
          },
          required: ["a", "b"],
        },
      },
    );
    
    async function main() {
      const gemini = new Gemini({
        model: GEMINI_MODEL.GEMINI_PRO,
      });
      const agent = new LLMAgent({
        llm: gemini,
        tools: [sumNumbers, divideNumbers],
      });
    
      const response = await agent.chat({
        message: "How much is 5 + 5? then divide by 2",
      });
    
      console.log(response.message);
    }
    
    void main().then(() => {
      console.log("Done");
    });