UNPKG

daggerai

Version:

A simple and powerful Typescript based agent framework to help businesses thrive in the AI Agent revolution.

101 lines (81 loc) 2.49 kB
import dotenv from 'dotenv' import { resolve } from 'path' dotenv.config({ path: resolve(__dirname, '../../', '.env') }) import { Agent } from '../core/agent' import { Squad } from '../core/squad' import { Task } from '../core/task' import { ChatAnthropic } from '../llm/anthropic' async function runSquad() { const squad = new Squad() const llm = new ChatAnthropic({ model: 'claude-3-haiku-20240307', maxTokens: 4000, }) // const llm = new ChatOpenAI({ // model: 'gpt-3.5-turbo', // maxTokens: 4000, // }) const salesAssistant = new Agent({ id: '1', role: 'Sales Improver', backstory: 'You are a sales specialist.', goal: 'You always want to increase sales', }) const salesStrategy = new Task({ name: 'Sales Strategy', description: 'Think of a strategy to increase sales.', expectedOutput: 'A markdown list of strategies to increase sales.', agent: salesAssistant, tools: [], memories: [], inputs: [], llm, }) const salesPlan = new Task({ name: 'Sales Plan', description: 'Create a plan to implement the strategy.', expectedOutput: 'A markdown list of steps to implement the strategy.', agent: salesAssistant, tools: [], memories: [], inputs: [], llm, }) const salesResponsibilities = new Task({ name: 'Sales Execution', description: 'Create a list of responsible people for each step.', expectedOutput: 'A markdown list of responsible people for each step.', agent: salesAssistant, tools: [], memories: [], inputs: [], llm, }) squad.add(salesStrategy) squad.add(salesPlan) squad.add(salesResponsibilities) squad.connect(salesStrategy, salesPlan) squad.connect(salesPlan, salesResponsibilities) // you can list to various events to get updates on the squad progress squad.events.on('squad.started', () => { console.log('Squad started!') }) squad.events.on('agent.started', task => { console.log(`Task started: ${task.name}`) }) squad.events.on('agent.finished', task => { console.log(`Task finished: ${task.output}`) }) squad.events.on('tool.called', tool => { console.log(`Tool called: ${tool.tool}`) }) squad.events.on('tool.finished', tool => { console.log(`Tool finished: ${tool}`) }) squad.events.on('squad.finished', () => { console.log('Squad finished!') }) const results = await squad.evaluate({ inputs: [] }) console.log(results) } runSquad()