Quick Start
This guide will help you build your first AI agent in just a few minutes.
Your First Agent
Let's create a simple chatbot that can answer questions.
Step 1: Import the SDK
import {
AgentBuilder,
AgentExecutor,
OpenAIProvider,
createMockRepositories
} from '@tajwal/build-ai-agent';
Step 2: Build the Agent
const agent = new AgentBuilder()
.setType('chatbot')
.setName('My First Agent')
.setPrompt('You are a helpful and friendly assistant.')
.build();
Step 3: Configure the Executor
// Create mock repositories for testing
const repositories = createMockRepositories();
// Configure LLM provider
const llmProvider = new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY,
model: 'gpt-4'
});
// Create executor
const executor = new AgentExecutor({
agent,
sessionId: 'my-session-123',
repositories,
llmProvider
});
Step 4: Execute
const result = await executor.execute({
messages: [
{ role: 'user', content: 'Hello! What can you help me with?' }
]
});
console.log(result.response);
Complete Example
Here's the full code:
my-first-agent.ts
import {
AgentBuilder,
AgentExecutor,
OpenAIProvider,
createMockRepositories
} from '@tajwal/build-ai-agent';
async function main() {
// Build the agent
const agent = new AgentBuilder()
.setType('chatbot')
.setName('My First Agent')
.setPrompt('You are a helpful and friendly assistant.')
.build();
// Configure repositories and provider
const repositories = createMockRepositories();
const llmProvider = new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY,
model: 'gpt-4'
});
// Create executor
const executor = new AgentExecutor({
agent,
sessionId: 'my-session-123',
repositories,
llmProvider
});
// Execute
const result = await executor.execute({
messages: [
{ role: 'user', content: 'Hello! What can you help me with?' }
]
});
console.log('Agent Response:', result.response);
}
main().catch(console.error);
Run it:
export OPENAI_API_KEY="your-api-key"
npx tsx my-first-agent.ts
Adding Tools
Let's enhance our agent with tools. Here's an agent that can perform calculations:
agent-with-tools.ts
import {
AgentBuilder,
AgentExecutor,
OpenAIProvider,
createMockRepositories,
ToolRegistry
} from '@tajwal/build-ai-agent';
import { z } from 'zod';
// Register a custom tool
const toolRegistry = new ToolRegistry();
toolRegistry.register({
name: 'calculator',
description: 'Performs mathematical calculations',
parameters: z.object({
expression: z.string().describe('Mathematical expression to evaluate')
}),
execute: async ({ expression }) => {
try {
// Note: In production, use a proper math parser
const result = eval(expression);
return { result };
} catch (error) {
return { error: 'Invalid expression' };
}
}
});
// Build agent with tools
const agent = new AgentBuilder()
.setType('smart-assistant')
.setName('Math Helper')
.setPrompt('You are a math assistant. Use the calculator tool for calculations.')
.addTool('calculator', { tool: 'calculator' })
.build();
// Create executor with tool registry
const executor = new AgentExecutor({
agent,
sessionId: 'math-session',
repositories: createMockRepositories(),
llmProvider: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY
}),
toolRegistry
});
// Execute
const result = await executor.execute({
messages: [
{ role: 'user', content: 'What is 25 multiplied by 37?' }
]
});
console.log(result.response);
Streaming Responses
For real-time streaming responses:
streaming-agent.ts
import {
AgentBuilder,
AgentExecutor,
OpenAIProvider,
createMockRepositories
} from '@tajwal/build-ai-agent';
async function streamingExample() {
const agent = new AgentBuilder()
.setType('chatbot')
.setName('Streaming Bot')
.setPrompt('You are a helpful assistant.')
.build();
const executor = new AgentExecutor({
agent,
sessionId: 'stream-session',
repositories: createMockRepositories(),
llmProvider: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY
})
});
// Stream the response
const stream = await executor.executeStream({
messages: [
{ role: 'user', content: 'Tell me a short story about AI.' }
]
});
// Process chunks as they arrive
for await (const chunk of stream) {
process.stdout.write(chunk.content);
}
}
streamingExample().catch(console.error);
Using Local LLMs with Ollama
You can also use local models with Ollama:
ollama-agent.ts
import {
AgentBuilder,
AgentExecutor,
OllamaProvider,
createMockRepositories
} from '@tajwal/build-ai-agent';
const agent = new AgentBuilder()
.setType('chatbot')
.setName('Local Agent')
.setPrompt('You are a helpful assistant.')
.build();
// Use Ollama provider
const executor = new AgentExecutor({
agent,
sessionId: 'ollama-session',
repositories: createMockRepositories(),
llmProvider: new OllamaProvider({
model: 'llama2',
baseUrl: 'http://localhost:11434'
})
});
const result = await executor.execute({
messages: [
{ role: 'user', content: 'Hello!' }
]
});
console.log(result.response);
Production Setup with Database
For production, use a proper database instead of mock repositories:
production-agent.ts
import {
AgentBuilder,
AgentExecutor,
OpenAIProvider
} from '@tajwal/build-ai-agent';
import { createDrizzleRepositories } from '@tajwal/build-ai-agent-drizzle';
import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';
// Setup database
const sqlite = new Database('agent.db');
const db = drizzle(sqlite);
// Create repositories with database
const repositories = createDrizzleRepositories(db);
// Build agent
const agent = new AgentBuilder()
.setType('chatbot')
.setName('Production Agent')
.setPrompt('You are a helpful assistant.')
.build();
// Create executor
const executor = new AgentExecutor({
agent,
sessionId: 'prod-session',
repositories,
llmProvider: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY
})
});
// Execute
const result = await executor.execute({
messages: [
{ role: 'user', content: 'Hello!' }
]
});
console.log(result.response);
Next Steps
Now that you've built your first agent, explore:
- Core Concepts - Understand agents, tools, and flows
- Building Agents - Advanced agent configuration
- Creating Tools - Build custom capabilities
- Examples - Real-world examples
- API Reference - Complete API documentation
Need Help?
- 🐛 Report issues on GitHub