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

网站建设对宣传的意义濮阳网官网

网站建设对宣传的意义,濮阳网官网,为什么选择做汉服网站,南宁网站制作超薄网络一、介绍 LangChain4j 是一个专为 Java 和 Kotlin 开发者设计的开源 AI 框架,旨在简化和加速基于大语言模型(LLM)的应用程序开发。它是广受欢迎的 Python 库 LangChain 的官方 Java 实现,致力于将 LangChain 的强大功能与设计理念…

一、介绍

LangChain4j 是一个专为 Java 和 Kotlin 开发者设计的开源 AI 框架,旨在简化和加速基于大语言模型(LLM)的应用程序开发。它是广受欢迎的 Python 库 LangChain 的官方 Java 实现,致力于将 LangChain 的强大功能与设计理念完整地带入 JVM 生态系统。它是一个模块化的 AI 开发工具包,提供了一套完整的组件和 API,帮助开发者快速构建智能应用。

通过 LangChain4j,Java 开发者可以轻松地将大语言模型集成到企业级应用中,无需从零构建复杂的底层逻辑。

二、简单对话调用实现步骤

1. 引入LangChain4j依赖

   <!-- https://mvnrepository.com/artifact/dev.langchain4j/langchain4j-open-ai --><!--LangChain4j依赖 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>1.1.0</version></dependency>

2. 获取Api Key 和 Base url

阿里云百炼平台访问地址:https://bailian.console.aliyun.com

配置环境变量:

到模型广场找想使用的大模型的base url:

3. 构建OpenAiChatModel对象,调用chat方法

@SpringBootTest
class Langchain4jDemoApplicationTests {public static void main(String[] args) {// 创建OpenAiChatModel模型对象OpenAiChatModel model = OpenAiChatModel.builder().baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")  // 模型地址.apiKey(System.getenv("API-KEY"))  // 获取系统环境变量的API-KEY.modelName("qwen-plus")  // 模型名称.build();  // 构建模型对象// 调用模型对象chat方法,获取模型结果System.out.println(model.chat("你好"));}
}

注意:设置完环境变量后要重启编辑器

运行获取输出结果:

添加请求和响应信息打印:

 .logRequests(true)   // 打印请求信息.logResponses(true)  // 打印响应信息

三、完整会话功能实现步骤

1. 会话功能

Springboot项目勾选spring web起步依赖,添加下方LangChain4j起步依赖


<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai-spring-boot-starter</artifactId><version>1.0.1-beta6</version>
</dependency>

配置application.yaml文件

langchain4j:open-ai:chat-model:base-url: https://dashscope.aliyuncs.com/compatible-mode/v1api-key: ${API-KEY}model-name: qwen-plus

创建Controller类

@RestController
@RequestMapping("/api")
public class ChatController {@Autowiredprivate OpenAiChatModel model;@GetMapping("/chat")public String chat(String message) {return model.chat(message);}
}

@RestController=@Controller + @ResponseBody 

标明控制器,并表示所有方法的返回值都为HTTP响应体,通常为Json或文本格式

使用@Autowired注解,自动从容器中获取OpenAiChatModel类型的实例并注入到该变量中(OpenAiChatModel起步依赖已由springboot接管并自动配置)

@GetMapping("/chat"):表示该方法处理 HTTP GET 请求,完整访问路径为/api/chat

方法参数String message:Spring 会自动从请求参数中获取名为message的参数值并传入

调用OpenAiChatModelchat方法,将接收的message作为输入发送给 OpenAI 模型,然后将模型返回的结果直接作为 HTTP 响应返回

测试效果:

2. 日志功能

修改application.yaml配置文件

langchain4j:open-ai:chat-model:base-url: https://dashscope.aliyuncs.com/compatible-mode/v1api-key: ${API-KEY}model-name: qwen-pluslog-requests: truelog-responses: truelogging:level:dev.langchain4j: DEBUG

重新启动,进行测试:

日志输出如下:

四、AiServices工具类使用

(1)继续引入AiServices依赖

 <!--AiServices依赖-->
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId><version>1.0.1-beta6</version>
</dependency>

(2)声明接口

package com.breeze.langchain4jdemo.service;public interface ConsultantService {// 用于聊天的方法public String chat(String message);
}

(3)使用AiServices为接口创建代理对象

@Configuration
public class CommonConfig {@Autowiredprivate OpenAiChatModel model;@Beanpublic ConsultantService consultantService(){ConsultantService consultantService = AiServices.builder(ConsultantService.class).chatModel( model).build();return consultantService;}
}
  • @Configuration:标识该类是一个 Spring 配置类,用于定义 Bean(组件)并交给 Spring 容器管理。Spring 会扫描并加载该类中的配置,将其中定义的 Bean 注册到容器中。

@Autowired:自动从 Spring 容器中注入OpenAiChatModel类型的实例。OpenAiChatModel是 LangChain4J 提供的 OpenAI 聊天模型封装类,负责与 OpenAI API 交互。

  • @Bean:标识该方法会创建一个 Bean,并将其注册到 Spring 容器中。其他组件可以通过@Autowired自动注入ConsultantService实例使用。
  • AiServices.builder(...):LangChain4J 提供的工具类,用于创建 “AI 增强的服务”。它可以将一个普通的接口(ConsultantService)与 AI 模型(如 OpenAI)绑定,让接口方法具备调用 AI 的能力。
    • ConsultantService.class:传入一个接口类,LangChain4J 会为该接口生成实现类,实现类的方法会自动调用 AI 模型处理逻辑。
    • .chatModel(model):指定使用注入的OpenAiChatModel作为底层 AI 模型,即接口方法的逻辑会通过该模型与 OpenAI 交互。
    • .build():构建并返回ConsultantService的实例。

(4)控制器部分

@RestController
@RequestMapping("/api")
public class ChatController {@Autowiredprivate ConsultantService consultantService;@GetMapping("/chat")public String chat(String message) {return consultantService.chat(message);}
}
  • @Autowired从 Spring 容器中自动获取ConsultantService类型的实例并注入到该变量中。
  • ConsultantService一个自定义的服务接口(由AiServices生成实现类,结合了 AI 模型能力),用于处理聊天逻辑并与 AI 模型交互。

仍然正常响应:

方法二:使用声明式注解

去掉config配置类,直接使用@AiServices注解即可

@AiService
public interface ConsultantService {// 用于聊天的方法public String chat(String message);
}

其他部分不变,成功运行

五、流式调用

(1)引入依赖

       <!--流式调用依赖·--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-reactor</artifactId><version>1.0.1-beta6</version></dependency>

(2)配置流式模型对象

langchain4j:open-ai:chat-model:base-url: https://dashscope.aliyuncs.com/compatible-mode/v1api-key: ${API-KEY}model-name: qwen-pluslog-requests: truelog-responses: truestreaming-chat-model:base-url: https://dashscope.aliyuncs.com/compatible-mode/v1api-key: ${API-KEY}model-name: qwen-pluslog-requests: truelog-responses: truelogging:level:dev.langchain4j: DEBUG

(3)切换接口中方法的返回值类型

@AiService(wiringMode = AiServiceWiringMode.EXPLICIT,chatModel = "openAiChatModel",streamingChatModel = "openAiStreamingChatModel"
)
public interface ConsultantService {// 用于聊天的方法public Flux<String> chat(String message);
}

(4)修改Controller

返回值修改为Flux<String> ,produces = "text/html;charset=utf-8"防止乱码

@RestController
@RequestMapping("/api")
public class ChatController {@Autowiredprivate ConsultantService consultantService;@GetMapping(value = "/chat",produces = "text/html;charset=utf-8")public Flux<String> chat(String message) {return consultantService.chat(message);}

流式输出实现效果:

六、消息注解

@SystemMessage

在业务层方法上添加@SystemMessage注解实现系统角色设定:

public interface ConsultantService {// 用于聊天的方法@SystemMessage("你是一个吉他手,很擅长弹吉他")public Flux<String> chat(String message);
}

测试效果:

--------配置文件形式--------

在resources下创建配置文件 .txt   文件内容按照实际需求写

业务类方法注解给出文件路径

public interface ConsultantService {// 用于聊天的方法@SystemMessage(fromResource = "system.txt")public Flux<String> chat(String message);
}

测试效果:

由此可见,大模型已经完全按照预设的格式输出内容,对于不相关的问题拒绝回答。

@UserMessage

在业务层方法上添加@UserMessage注解实现用户角色设定:

public interface ConsultantService {// @SystemMessage(fromResource = "system.txt")@UserMessage("你是一位厨师,{{it}}")public Flux<String> chat(String message);
}

实现效果:

使用@V注解修改占位词

后续--> 会话记忆+RAG+Tools 即将出炉,期待下一篇文章!

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

相关文章:

  • 海尔网站推广方法广东色绿色建筑信息平台
  • 建站公司怎么获客wordpress 后台子菜单
  • 做百度微信小程序都有哪些网站md wordpress
  • 各类郑州网站建设常见的网站建设类型都有哪些
  • 个人网站可以做社交类型做网站还是做公众号
  • 网站广告布局wordpress外链图床
  • 网站架构和网络昆山广告制作公司
  • 查看邮箱注册了哪些网站滨州做网站推广
  • 莱芜网站推广福建省建设厅网站职业资格
  • 做淘宝客网站的流程怎么加入社交电商平台
  • 免费的英文电子外贸网站建设优化就是开除吗
  • 成都网站建设招标2023年中国500强榜单
  • seo网站优化网站编辑招聘免费那个网站
  • 网站是一个链接的页面结合吗搜索建站网
  • 自适应型网站建设费用html5在网站建设中的
  • 网络建站 响应式网站天津网站搜索优化
  • 徐州手机建站模板两个路由器做双网站
  • 徐州专业网站建设公司哪家好专注手机网站建设
  • 找别人做网站 自己管理如何做游戏推广
  • 哪个网站有高清图片做ppt移动网站适配
  • wordpress网站很慢学建网站
  • 手机怎么注册网站手机网络游戏
  • 工信部网站备案系统登录劳务派遣和外包一样吗
  • 有口碑的模板网站建设桂林做手机网站设计
  • 广州外贸网站建设公司价格wordpress 蜘蛛记录
  • 做淘宝网站目的做外贸外文网站怎么做好
  • 做门户网站起什么域名好呼和浩特北京网站建设
  • 德州做网站的公司html5混合app开发
  • 新余网站建设网站开发和网站制作的区别
  • 音乐类网站建设选题背景中国搜索引擎排行榜