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

前言

AI Agent(智能体)是2026年最热门的技术方向之一。不同于传统的问答机器人,Agent能够自主规划任务、调用工具、记住上下文,真正实现"自主决策"。本文用 LangChain4j 带你从零构建一个 Java 智能体。

一、什么是 AI Agent?

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

  • 理解意图:解析用户自然语言
  • 规划任务:分解复杂任务为多个步骤
  • 工具调用:调用外部 API 获取信息或执行操作
  • 记忆能力:记住多轮对话上下文

二、环境准备

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

三、定义工具

public class WeatherTool {
    
    @Tool("查询指定城市的当前天气")
    public String getWeather(String city) {
        // 模拟天气查询
        return city + "今天晴,气温25度,空气质量优";
    }
}

public class CalculatorTool {
    
    @Tool("计算数学表达式")
    public double calculate(String expression) {
        return new ScriptEngineManager()
            .getEngineByName("js")
            .eval(expression);
    }
}

四、构建 Agent

// 配置大模型
ChatLanguageModel model = OpenAiChatModel.builder()
    .apiKey(System.getenv("OPENAI_API_KEY"))
    .modelName("gpt-4o")
    .build();

// 配置记忆
ChatMemory memory = MessageWindowChatMemory.builder()
    .maxMessages(10)
    .build();

// 构建 Agent
interface Assistant {
    String chat(String userMessage);
}

Assistant agent = AiServices.builder(Assistant.class)
    .chatLanguageModel(model)
    .chatMemory(memory)
    .tools(new WeatherTool(), new CalculatorTool())
    .systemMessage("你是一个智能助手,可以查询天气和进行计算。"
        + "在回答问题前,先思考是否需要调用工具。")
    .build();

五、运行 Agent

// 测试对话
String response1 = agent.chat("北京今天天气怎么样?");
System.out.println(response1);
// 输出:我来为您查询北京的天气。北京今天晴,气温25度,空气质量优。

String response2 = agent.chat("那上海呢?");
System.out.println(response2);
// 输出:上海今天晴,气温28度,空气质量良。

String response3 = agent.chat("北京的气温比上海低多少度?");
System.out.println(response3);
// Agent会自动调用计算工具:28 - 25 = 3度

六、进阶:结构化输出

record TaskPlan(String goal, List<String> steps, String expectedResult) {}

interface Planner {
    @SystemMessage("你是一个任务规划专家,将复杂任务分解为步骤")
    TaskPlan plan(String userGoal);
}

Planner planner = AiServices.builder(Planner.class)
    .chatLanguageModel(model)
    .build();

TaskPlan plan = planner.plan("开发一个用户登录功能");
// 返回结构化的任务计划

总结

LangChain4j 让 Java 开发者也能轻松构建 AI Agent。核心要点:

  • @Tool 注解定义工具
  • AiServices 构建 Agent 接口
  • ChatMemory 实现多轮记忆
  • 大模型会自动决定何时调用工具

觉得有帮助请点赞收藏!有问题欢迎评论区交流 🚀

posted @ 2026-04-01 19:00  弥烟袅绕  阅读(0)  评论(0)    收藏  举报