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);
    }

}

参考

LangChain4j之Agents

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐