Agent开发之LangChain4j中的agent和tool
LangChain4j中的Agent和Tool机制实现了AI服务的模块化调用。Agent作为智能代理,通过AiServices构建,能根据用户输入自动选择调用合适的Tool。Tool则是具体功能实现,通过@Tool注解标记方法,如计算器工具类包含加减乘除等方法。开发时需将Tool注册到Agent中,通过AiServices.builder().tools()方式集成。这种设计使AI服务能灵活扩展功
·
LangChain4j中的Tool和Agent概念
LangChain4j中的agent
作用:作为“智能代理”,决定何时、如何调用哪些 Tool。
本质:一个接口或类,通过 AiServices 构建,具备调用工具的能力。
使用方式:通过 AiServices.builder(…).tools(…) 注册工具后,Agent 可以根据用户输入智能选择调用哪个工具。
代码实现
//构建Agent
AiAssistant assistant = AiServices.builder(AiAssistant.class).chatLanguageModel(openAiChatModel)
.chatMemory(memory).build();
AiAssistant
public interface AiAssistant {
String chat(String userMessage);
}
也可也通过AiService注解实现
@AiService(wiringMode = AiServiceWiringMode.EXPLICIT,
chatModel = "openAiChatModel",
chatMemory = "xzChatMemory",
chatMemoryProvider = "xzChatMemoryProvider",
tools = "appointmentTool",
contentRetriever = "contentRetriever")
public interface XZMemoryAssistant {
@SystemMessage(fromResource = "xz-prompt-template.txt")
String chat(@MemoryId Long memoryId, @UserMessage String userMessage);
}
LangChain4j中的Tool
作用:提供具体的功能实现,供 Agent 或模型调用。
本质:一个 Java 类,包含一个或多个方法,每个方法可以被模型当作“工具”调用。
使用方式:通过 @Tool 注解标记某个方法为工具方法。
//构建Agent,并将tool注册到模型中,模型会根据用户的输入决定是否需要调用tool
AiAssistant assistant = AiServices.builder(AiAssistant.class).chatLanguageModel(openAiChatModel)
.chatMemory(memory).tools(new CalculatorTool())
.build();
CalculatorTool
@Component
@Slf4j
public class CalculatorTool {
@Tool(name = "add-two-numbers")
public int sum( int a, int b) {
log.info("a + b = " + (a + b));
return a + b;
}
@Tool("subtract-two-numbers")
public int subtract(int a, int b) {
return a - b;
}
@Tool("multiply-two-numbers")
public int multiply(int a, int b) {
return a * b;
}
@Tool("divide-two-numbers")
public int divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("除数不能为零");
}
return a / b;
}
@Tool("square numbers")
public double squareRoot(@P(value = "参数1", required = true)double x) {
return Math.sqrt(x);
}
}
参考
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)