Tutorials
Basic Agent
We have a comprehensive, step-by-step guide to building agents in LlamaIndex.TS that we recommend to learn what agents are and how to build them for production. But building a basic agent is simple:
Set up
In a new folder:
npm init
npm i -D typescript @types/node
npm i @llamaindex/openai @llamaindex/workflow llamaindex zod
Run agent
Create the file example.ts
. This code will:
- Create two tools for use by the agent:
- A
sumNumbers
tool that adds two numbers - A
divideNumbers
tool that divides numbers
- A
- Give an example of the data structure we wish to generate
- Prompt the LLM with instructions and the example, plus a sample transcript
import { openai } from "@llamaindex/openai";
import { agent } from "@llamaindex/workflow";
import { tool } from "llamaindex";
import { z } from "zod";
const sumNumbers = tool({
name: "sumNumbers",
description: "Use this function to sum two numbers",
parameters: z.object({
a: z.number().describe("The first number"),
b: z.number().describe("The second number"),
}),
execute: ({ a, b }: { a: number; b: number }) => `${a + b}`,
});
const divideNumbers = tool({
name: "divideNumbers",
description: "Use this function to divide two numbers",
parameters: z.object({
a: z.number().describe("The dividend a to divide"),
b: z.number().describe("The divisor b to divide by"),
}),
execute: ({ a, b }: { a: number; b: number }) => `${a / b}`,
});
async function main() {
const mathAgent = agent({
tools: [sumNumbers, divideNumbers],
llm: openai({ model: "gpt-4.1-mini" }),
verbose: false,
});
const response = await mathAgent.run("How much is 5 + 5? then divide by 2");
console.log(response.data);
}
void main().then(() => {
console.log("Done");
});
To run the code:
npx tsx example.ts
You should expect output something like:
{
result: '5 + 5 is 10. Then, 10 divided by 2 is 5.',
state: {
memory: ChatMemoryBuffer {
chatStore: SimpleChatStore {},
chatStoreKey: 'chat_history',
tokenLimit: 750000
},
scratchpad: [],
currentAgentName: 'Agent',
agents: [ 'Agent' ],
nextAgentName: null
}
}
Done