当前位置: 首页 > news >正文

什么是AI Agent?

环境准备

<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. 构建并使用
http://www.jsqmd.com/news/1093300/

相关文章:

  • 推荐看看=Obsidian
  • Java 基础 (Java 入门笔记) _
  • 企业实战视角:为什么GEO优化需要“搜极星+InsGEO”的双轨并行?
  • 【计算机毕业设计案例】交互式网络博文分享交流平台基于 SpringBoot 实现 知识分享型在线博客管理系统设计与开发(程序+文档+讲解+定制)
  • 终极Windows窗口大小调整指南:3分钟掌握WindowResizer强制调整技巧
  • HTML 早已不是标签了,它现在是系统级接口:这 9 个 API 直接干翻常用
  • OpenMontage:基于开源AI模型的全链路自动化视频生成框架实战
  • GPT-5.6 正在灰度,有人在 Codex 里提前用上了,附检测方法
  • 【信号处理】为什么功率谱不是幅度谱的平方
  • 2026年批量采购无人机专用胶粘产品怎么选?行业选型指南
  • 每天5分钟玩转 Kubernetes
  • Web基础解析
  • 终极鼠标性能测试指南:用MouseTester发现你的设备真实实力
  • 深入解析PCM178x系列DAC:Delta-Sigma架构原理与音频硬件设计实战
  • 2026年6月28日博客精选
  • Java计算机毕设之基于 SpringBoot+Vue 的社区老龄关爱服务管理系统 公益助老项目发布与预约服务平台设计实现(完整前后端代码+说明文档+LW,调试定制等)
  • 奇数分频电路设计进阶:Verilog实现50%占空比的通用方法
  • 【深度学习】OpenCV 视频分析实战:背景建模 + 形态学处理实现运动目标检测
  • 牛客周赛 Round 150
  • lsyat门禁闸机播放TTS—幽冥大陆(一百51)-东方仙盟
  • 第 5 讲:Prompt、上下文、Token、模型参数
  • Cadence防静电logo .dra文件转换为 .dxf文件(16.6)
  • Web安全实战:任意文件上传漏洞原理、复现与加固指南
  • 【精通】RustMark v2.4:CI/CD 与发布工程 — Cargo Workspace 与 DevOps 深度实战
  • ABB工业机器人编程基础(十一)流程控制:FOR、WHILE 与示教器交互指令
  • Java毕设项目:便民助老资源统筹服务平台基于前后端分离实现 数字化爱老助老公益服务管理平台设计与开发 (源码+文档,讲解、调试运行,定制等)
  • 前端控制器管理化技术请求分发与视图解析
  • rocky linux安装教程:VMware虚拟机图文讲解部署Rocky Linux 9(附镜像包)
  • 量化盯盘辅助工具:不同AI工具在信息整理与复盘环节的分工用法
  • Casbin 学习指南