Custom agent
Overview
You can create your own custom agent class and invoke it when you create an agent.
Creating a custom agent class
To create a custom agent class, do the following:
- Import
Agentfrom'@dtplatform/agent-core'.
import { Agent } from '@dtplatform/agent-core';
- Extend the Agent class to create your own agent class.
export default class MyFormatterAgent extends Agent {
constructor(options: any) {
super(options);
}
...
}
- Add a method called
processRequestwith the following parameters and structure:
async processRequest(
type: string,
state?: any,
prompt?: string,
tools?: any[],
userId?: string,
sessionId?: string,
chatHistory?: [],
additionalParams?: Record<string, string>,
): Promise<any> {
}
- Inside this method, add your agent's logic. Make a call to the LLM using
this.callLLM:
async processRequest(
type: string,
state?: any,
prompt?: string,
tools?: any[],
userId?: string,
sessionId?: string,
chatHistory?: [],
additionalParams?: Record<string, string>,
): Promise<any> {
//your code here
const res: any = await this.callLLM(type, state, prompt, tools);
//your code here
}
- Upload the script using
IafAISvc.uploadAgentSourceCode. Either upload the class as string content or as a file:
const sourceCode = { _content: 'your script content' };
await IafAISvc.uploadAgentSourceCode(agentId, sourceCode, ctx);
//or
const sourceFile = { _file: .ts file };
await IafAISvc.uploadAgentSourceCode(agentId, sourceFile, ctx);
Custom agent class invocation
To invoke a custom agent class, create an agent with IafAISvc.createAgents, then set the agent's _agentClass property to your custom agent class:
const formatterAgent = await IafAISvc.createAgents([{
_name: "Asset Info Agent",
_background: "Use the GetAssetsTool and return its output",
_userType: "asset_info_agent",
_type: "user_agent",
_namespaces: [
"IPUTTheExchange_EleSnXBw"
],
_config: {
"_model": "gpt-4o",
"_provider": "openai"
},
_tools: [
"GetAssetsTool"
],
_agentClass: "MyFormatterAgent" //references custom agent class
}]);