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

Java使用Langchai4j接入AI大模型的简单使用(一)

一、LangChain4j 简介

LangChain4j 是 Java 生态中的 LangChain 实现,是一个用于构建大语言模型(LLM)应用程序的框架。它提供了与各种LLM服务集成的能力,并简化了构建复杂AI应用的过程。

LangChain4j官方文档:Integrations | LangChain4j

1、核心特性

  1. 多模型支持:支持OpenAI、Azure OpenAI、HuggingFace、DeepSeek等多种LLM提供商
  2. 模块化设计:包含多个功能模块,可根据需要单独使用
  3. 简化集成:提供简洁的API与LLM交互
  4. Java原生:专为Java开发者设计,无需学习Python生态

2、主要组件

    1. 模型交互 (Chat Models)
    2. 提示模板 (Prompt Templates)
    3. 记忆管理 (Memory)
    4. 链式调用 (Chains)
    5. 工具集成 (Tools)

3、典型使用场景

  1. 聊天机器人:构建具有记忆功能的对话系统
  2. 文本处理:摘要、翻译、改写等
  3. 问答系统:基于文档的智能问答
  4. 数据提取:从非结构化文本中提取结构化信息
  5. 代码生成:辅助编程和代码解释

注意:本文使用的是jdk17

二、Langchai4j的使用

1、创建一个maven工程,引入Langchai4j依赖

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><langchain4j.version>1.0.0-beta1</langchain4j.version>
</properties><dependencies><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>1.0.0-beta1</version></dependency><!--openai/deepseek大模型依赖--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>${langchain4j.version}</version></dependency><!--阿里千问大模型依赖--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope</artifactId><version>${langchain4j.version}</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.11.4</version></dependency>
</dependencies>

2、 创建一个单元测试类,使用各个大模型提示提问:

import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.junit.jupiter.api.Test;/*** @author: * @Desc:大模型接入测试* @create: 2025-07-12 14:14**/
public class Langchain4jDemo {//chatgpt大模型@Testvoid test() {ChatLanguageModel model = OpenAiChatModel.builder().apiKey("demo").modelName("gpt-4o-mini").build();String answer = model.chat("你好,你是谁?");System.out.println(answer);}//deepseek大模型@Testvoid testDeepSeek(){ChatLanguageModel model = OpenAiChatModel.builder().baseUrl("https://api.deepseek.com").apiKey("your key").modelName("deepseek-reasoner").build();String answer = model.chat("你好,你是谁?");System.out.println(answer);}//阿里千问大模型@Testvoid testQwenAi(){ChatLanguageModel model = QwenChatModel.builder()//.baseUrl("https://dashscope.aliyuncs.com").apiKey("your key").modelName("qwen-max").build();String answer = model.chat("你好,你是谁?");System.out.println(answer);}}

3、注意事项:

1.本文使用的Langchai4j的1.0.0-beta1版本,该版本为了降低Langchai4j的门槛,提供一个demo的apiKey,如果key为demo,请求将发送到http://langchain4j.dev/demo/openai/v1进行访问openai,后面的版本去掉这一处理,国内无法直接访问openai; 

2.deepseek跟openai使用同一接口规范,因此如果引入了langchain4j-open-ai的依赖

使用deepseek不用再单独引入deepseek的依赖。构建的方式也跟openai一样,使用

ChatLanguageModel model = OpenAiChatModel.builder()

来进行构建,使用deepseek需要到官网DeepSeek | 深度求索首页右上角的API开放平台创建apikey并进行充值才可以使用;

3.使用阿里千问,需引入专门的依赖:

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope</artifactId><version>${langchain4j.version}</version>
</dependency>

在使用前需要到阿里云百炼:大模型服务平台百炼控制台 注册账号创建apikey,有免费额度,

拿到key后进行编码开发,构建方式需要使用千问的类进行:

ChatLanguageModel model = QwenChatModel.builder()

运行后分别输出:

1、openai

你好!我是一个人工智能助手,旨在回答问题和提供信息。有任何你想了解的内容吗?

2、deepseek,deepseek响应较慢,等待时间较长

你好呀!👋我是 **DeepSeek-R1**,是由中国的 **深度求索公司(DeepSeek)** 开发的一款智能助手。你可以把我当作一个知识丰富、乐于助人的AI伙伴~无论是学习、工作、写作、编程,还是生活琐事、情感倾诉,我都可以尽力帮上忙!

✨我的特点包括:
- **免费使用**(目前完全免费,没有收费计划)
- **超长记忆上下文**(最多可处理128K字符)
- **文件阅读能力**(支持上传PDF、Word、Excel、PPT等文件)
- **联网搜索**(部分平台支持联网获取最新信息)
- **逻辑推理强**,尤其擅长数学、编程、写作类任务

如果你愿意的话,可以把我当作一个24小时在线的朋友~  
😊那今天有什么我可以帮你的吗?

3、阿里千问:

你好!我是Qwen,这是我的英文名,你也可以叫我通义千问。我是阿里云自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持。

http://www.dtcms.com/a/275531.html

相关文章:

  • 【跟我学运维】chkconfig jenkins on的含义
  • 使用 Java 开发大数据应用:Hadoop 与 Java API 的结合
  • Gas and Gas Price
  • MCP选型指南:AWS vs Azure vs GCP vs 国内云厂商深度对比
  • 从 Spring 源码到项目实战:设计模式落地经验与最佳实践
  • 批量自动运行多个 Jupyter Notebook 文件的方法!!!
  • 13. G1垃圾回收器
  • Edge浏览器:报告不安全的站点的解决方案
  • 【字符串移位包含问题】2022-8-7
  • Kotlin文件操作
  • 浅谈 Python 中的 yield——yield的返回值与send()的关系
  • Ether and Wei
  • Spring 框架中的设计模式:从实现到思想的深度解析
  • 贪心算法题解——跳跃游戏【LeetCode】
  • AI大模型(七)Langchain核心模块与实战(二)
  • Android音视频探索之旅 | C++层使用OpenGL ES实现视频渲染
  • CTFHub————Web{信息泄露[Git泄露(log)]}
  • 《Java Web程序设计》实验报告五 Java Script学习汇报
  • Redis Geospatial 功能详解及多边形包含判断实现
  • win10安装Rust Webassembly工具链(wasm-pack)报错。
  • Rust Web 全栈开发(五):使用 sqlx 连接 MySQL 数据库
  • Rust Web 全栈开发(六):在 Web 项目中使用 MySQL 数据库
  • 前端note
  • 【推荐】前端低端机和弱网环境下性能优化
  • 前端面试专栏-算法篇:24. 算法时间与空间复杂度分析
  • 在前端开发中关于reflow(回流)和repaint(重绘)的几点思考
  • MySQL 中图标字符存储问题探究:使用外挂法,毕业论文——仙盟创梦IDE
  • AI驱动的大前端内容创作与个性化推送:资讯类应用实战指南
  • 容器化改造避坑指南:传统应用迁移K8s的10个关键节点(2025实战复盘)
  • CSS flex