环境准备dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version0.35.0/version /dependency dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-open-ai/artifactId version0.35.0/version /dependency回到顶部三、基础对话Agentimport dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; import dev.langchain4j.service.UserMessage; // 定义Agent接口 public interface ChatAgent { UserMessage({{it}}) String chat(String message); } // 创建Agent实例 ChatLanguageModel model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4) .build(); ChatAgent agent AiServices.builder(ChatAgent.class) .chatLanguageModel(model) .build(); // 使用 String response agent.chat(你好请介绍一下Java线程池); System.out.println(response);回到顶部四、带工具的Agentimport dev.langchain4j.agent.tool.Tool; import dev.langchain4j.service.MemoryId; import dev.langchain4j.service.UserMessage; public interface ToolAgent { UserMessage({{it}}) String chat(MemoryId String sessionId, String message); } // 定义工具类 public class WeatherTools { Tool(获取指定城市的天气信息) public String getWeather(String city) { // 实际调用天气API return city 今天晴25°C; } Tool(获取当前时间) public String getCurrentTime() { return LocalDateTime.now().toString(); } } // 创建带工具的Agent ToolAgent agent AiServices.builder(ToolAgent.class) .chatLanguageModel(model) .tools(new WeatherTools()) .chatMemoryProvider(memoryId - MessageWindowChatMemory.withMaxMessages(10)) .build(); // Agent会自动判断何时调用工具 String response agent.chat(session-1, 北京今天天气怎么样);回到顶部五、带记忆的Agentimport dev.langchain4j.memory.chat.MessageWindowChatMemory; // 为每个用户会话创建独立记忆 ChatMemory chatMemory MessageWindowChatMemory.withMaxMessages(20); ChatAgent agent AiServices.builder(ChatAgent.class) .chatLanguageModel(model) .chatMemory(chatMemory) .build(); // 多轮对话保持上下文 agent.chat(我叫张三); // 记住名字 agent.chat(我叫什么); // 回答你叫张三回到顶部六、流式输出import dev.langchain4j.model.chat.StreamingChatLanguageModel; import dev.langchain4j.model.openai.OpenAiStreamingChatModel; StreamingChatLanguageModel streamingModel OpenAiStreamingChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .build(); // 实时输出类似ChatGPT的效果 streamingModel.generate(写一首关于Java的诗, new StreamingResponseHandler() { Override public void onNext(String token) { System.out.print(token); // 逐字输出 } Override public void onComplete(Response response) { System.out.println(\n输出完成); } });回到顶部七、完整实战案例SpringBootApplication public class AgentApplication { Bean public ChatLanguageModel chatLanguageModel() { return OpenAiChatModel.builder() .apiKey(${openai.api-key}) .modelName(gpt-4) .build(); } Bean public Assistant assistant(ChatLanguageModel model) { return AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(new Calculator(), new WeatherService()) .chatMemoryProvider(id - MessageWindowChatMemory.withMaxMessages(10)) .build(); } } RestController public class ChatController { Autowired private Assistant assistant; PostMapping(/chat) public String chat(RequestBody ChatRequest request) { return assistant.chat(request.getSessionId(), request.getMessage()); } }回到顶部总结LangChain4j让Java开发者也能轻松构建AI Agent。核心步骤定义Agent接口配置语言模型添加工具可选配置记忆可选构建并使用
什么是AI Agent?
环境准备dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version0.35.0/version /dependency dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-open-ai/artifactId version0.35.0/version /dependency回到顶部三、基础对话Agentimport dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; import dev.langchain4j.service.UserMessage; // 定义Agent接口 public interface ChatAgent { UserMessage({{it}}) String chat(String message); } // 创建Agent实例 ChatLanguageModel model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4) .build(); ChatAgent agent AiServices.builder(ChatAgent.class) .chatLanguageModel(model) .build(); // 使用 String response agent.chat(你好请介绍一下Java线程池); System.out.println(response);回到顶部四、带工具的Agentimport dev.langchain4j.agent.tool.Tool; import dev.langchain4j.service.MemoryId; import dev.langchain4j.service.UserMessage; public interface ToolAgent { UserMessage({{it}}) String chat(MemoryId String sessionId, String message); } // 定义工具类 public class WeatherTools { Tool(获取指定城市的天气信息) public String getWeather(String city) { // 实际调用天气API return city 今天晴25°C; } Tool(获取当前时间) public String getCurrentTime() { return LocalDateTime.now().toString(); } } // 创建带工具的Agent ToolAgent agent AiServices.builder(ToolAgent.class) .chatLanguageModel(model) .tools(new WeatherTools()) .chatMemoryProvider(memoryId - MessageWindowChatMemory.withMaxMessages(10)) .build(); // Agent会自动判断何时调用工具 String response agent.chat(session-1, 北京今天天气怎么样);回到顶部五、带记忆的Agentimport dev.langchain4j.memory.chat.MessageWindowChatMemory; // 为每个用户会话创建独立记忆 ChatMemory chatMemory MessageWindowChatMemory.withMaxMessages(20); ChatAgent agent AiServices.builder(ChatAgent.class) .chatLanguageModel(model) .chatMemory(chatMemory) .build(); // 多轮对话保持上下文 agent.chat(我叫张三); // 记住名字 agent.chat(我叫什么); // 回答你叫张三回到顶部六、流式输出import dev.langchain4j.model.chat.StreamingChatLanguageModel; import dev.langchain4j.model.openai.OpenAiStreamingChatModel; StreamingChatLanguageModel streamingModel OpenAiStreamingChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .build(); // 实时输出类似ChatGPT的效果 streamingModel.generate(写一首关于Java的诗, new StreamingResponseHandler() { Override public void onNext(String token) { System.out.print(token); // 逐字输出 } Override public void onComplete(Response response) { System.out.println(\n输出完成); } });回到顶部七、完整实战案例SpringBootApplication public class AgentApplication { Bean public ChatLanguageModel chatLanguageModel() { return OpenAiChatModel.builder() .apiKey(${openai.api-key}) .modelName(gpt-4) .build(); } Bean public Assistant assistant(ChatLanguageModel model) { return AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(new Calculator(), new WeatherService()) .chatMemoryProvider(id - MessageWindowChatMemory.withMaxMessages(10)) .build(); } } RestController public class ChatController { Autowired private Assistant assistant; PostMapping(/chat) public String chat(RequestBody ChatRequest request) { return assistant.chat(request.getSessionId(), request.getMessage()); } }回到顶部总结LangChain4j让Java开发者也能轻松构建AI Agent。核心步骤定义Agent接口配置语言模型添加工具可选配置记忆可选构建并使用