AI Agent 开发实战:用LangChain4j构建你的第一个Java智能体

前言

AI Agent是2026年最热门的技术方向之一。本文用LangChain4j带你从零开始构建一个Java智能体,实现对话、工具调用和记忆功能。

一、什么是AI Agent?

AI Agent(智能体)是能够自主决策并执行任务的AI系统,核心能力:

  • 理解意图:解析用户自然语言
  • 规划任务:分解复杂任务为步骤
  • 调用工具:使用外部API或函数
  • 记忆上下文:维护对话历史

二、环境准备

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>0.35.0</version>
</dependency>
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>0.35.0</version>
</dependency>

三、基础对话Agent

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

四、带工具的Agent

import 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", "北京今天天气怎么样?");

五、带记忆的Agent

import 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。核心步骤:

  1. 定义Agent接口
  2. 配置语言模型
  3. 添加工具(可选)
  4. 配置记忆(可选)
  5. 构建并使用

AI Agent正在改变软件开发方式,现在就开始构建你的第一个智能体吧!

本文由AI辅助创作。

文章摘自:https://www.cnblogs.com/czlws/p/19774612