import { AgentExecutor, createOpenAIFunctionsAgent } from 'langchain/agents';
import { DynamicTool } from '@langchain/core/tools';
await tracer.trace(async (ctx) => {
const callbacks = createLangChainCallback(tracer, { context: ctx });
const tools = [
new DynamicTool({
name: 'calculator',
description: 'Performs math calculations',
func: async (input) => {
return String(eval(input));
}
}),
new DynamicTool({
name: 'search',
description: 'Searches the web',
func: async (query) => {
return await searchWeb(query);
}
})
];
const agent = await createOpenAIFunctionsAgent({
llm: new ChatOpenAI({ modelName: 'gpt-4o' }),
tools,
prompt: agentPrompt
});
const executor = new AgentExecutor({
agent,
tools,
callbacks: [callbacks]
});
const result = await executor.invoke({
input: 'What is 25 * 4 and who invented calculus?'
});
return result.output;
});