第1章:LangChain4j的聊天与语言模型

embedded/2025/2/24 15:21:03/

LangChain4J官方文档翻译与解析
目标文档路径:
https://docs.langchain4j.dev/tutorials/chat-and-language-models/

  1. 语言模型的两种API类型
    LangChain4j支持两种语言模型(LLM)的API:
    LanguageModel:这种API非常简单,它接受一个字符串作为输入,并返回一个字符串作为输出。这种API正在逐渐被聊天API(第二种API类型)取代。
    ChatLanguageModel:这种API接受多个ChatMessage作为输入,并返回一个AiMessage作为输出。ChatMessage通常包含文本,但某些LLM还支持其他模态(例如图像、音频等)。例如,OpenAI的gpt-4o-mini和Google的gemini-1.5-pro就是支持这种多模态的聊天模型。
    LangChain4j不再扩展对LanguageModel的支持,所有新功能都将使用ChatLanguageModel API。ChatLanguageModel是LangChain4j中与LLM交互的低级API,提供了最大的灵活性和功能。此外,LangChain4j还支持其他类型的模型,例如:
    EmbeddingModel:将文本转换为嵌入向量。
    ImageModel:生成和编辑图像。
    ModerationModel:检查文本是否包含有害内容。
    ScoringModel:对多段文本进行评分或排名,以确定它们与查询的相关性。这对于检索增强型生成(RAG)非常有用。
  2. ChatLanguageModel API
    ChatLanguageModel API的核心是generate方法,它接受一个或多个ChatMessage作为输入,并返回一个AiMessage。ChatMessage是一个基础接口,代表聊天消息,有以下几种类型:
    UserMessage:用户发送的消息,可以是文本或其他模态内容。
    AiMessage:AI生成的消息,通常是对UserMessage的回应。
    ToolExecutionResultMessage:工具执行请求的结果。
    SystemMessage:系统消息,通常由开发者定义,用于指定LLM在对话中的角色、行为风格等。LLM会更关注SystemMessage,因此不要让用户随意修改或注入内容。
  3. 多轮对话的管理
    由于LLM本身是无状态的,因此需要开发者手动管理对话状态。例如,一个简单的多轮对话如下:
    用户:你好,我叫Klaus。
    AI:你好Klaus,我能帮你什么?
    用户:我的名字是什么?
    AI:Klaus。
    在ChatLanguageModel中,需要将之前的对话消息传递给generate方法,以维护对话上下文。例如:
    java复制
    UserMessage firstUserMessage = UserMessage.from(“你好,我叫Klaus”);
    AiMessage firstAiMessage = model.generate(firstUserMessage).content();
    UserMessage secondUserMessage = UserMessage.from(“我的名字是什么?”);
    AiMessage secondAiMessage = model.generate(firstUserMessage, firstAiMessage, secondUserMessage).content();
  4. 多模态支持
    UserMessage不仅可以包含文本,还可以包含其他类型的内容,例如图像、音频、视频或PDF文件。例如,发送文本和图像的代码如下:
    java复制
    UserMessage userMessage = UserMessage.from(
    TextContent.from(“描述下面的图像”),
    ImageContent.from(“https://example.com/cat.jpg”)
    );
    Response response = model.generate(userMessage);
  5. Kotlin扩展
    LangChain4j为Kotlin提供了扩展,支持异步处理聊天交互。这些扩展利用Kotlin的协程功能,提供了chatAsync和generateAsync方法,简化了聊天请求的构建和对话处理。
    总结
    这篇文章主要介绍了LangChain4j中与语言模型和聊天模型相关的API。它强调了ChatLanguageModel的重要性,并详细解释了如何通过ChatMessage管理多轮对话、支持多模态输入,以及如何利用Kotlin扩展进行异步处理。这些功能使得LangChain4j在构建聊天应用时更加灵活和强大。

http://www.ppmy.cn/embedded/164847.html

相关文章

k2路由器登录校园网

教程1刷入Breed,并手动刷入Padavan固件:斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net) Padavan下载网址: 我用的是: Padavan 登录的网址是 192.168.123.1 Padavan配置教程: 先用网线连上校园网&#…

SQL ①-数据库 || MySQL

这里是Themberfue 数据库 ✨进入到目前的学习阶段中,数据库相信大家并不陌生,但是如果要说出概念的话那可能还是有点困难的,这里我就简单罗列出数据的一些相关概念,虽然这部分内容只是理论知识,但是非常重要。 &…

AxiosError: Network Error

不知怎么的,项目还在开发阶段,之前还好好的,玩儿了两天再一打开发现页面无法显示数据了,报错如下: 我以为是后端出问题了,但是后端控制台无报错,又用postman测试了一下,可以获取到数…

3DGS(三维高斯散射)算法原理介绍

3DGS(3D Gaussian Scattering)是一种基于高斯分布的三维场景表示与渲染方法,主要用于高效建模和渲染复杂的三维场景,尤其适用于动态环境或需要实时性能的应用。其核心思想是将三维空间中的物体或体积表示为多个高斯函数的集合&…

springboot和springframework版本依赖关系

springboot和springframework版本依赖关系 springboot版本 springframework版本 发布时间 1.0.x 1.0.0.RELEASE 4.0.3.RELEASE 2014.04 1.0.1.RELEASE 4.0.3.RELEASE 2014.04 1.0.2.RELEASE 4.0.3.RELEASE 2014.04 1.1.x 1.1.0.RELEASE 4.0.5.RELEASE 2014.06…

【python】网页批量转PDF

安装wkhtmltopdf 网站:wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…

为 Power Automate 注册 Adobe PDF Services

前言 最近,再测试如何将HTML转换成PDF,然后发现Adobe有一个免费的操作可以用,好开心,赶紧注册一下。 正文 1.先注册一个账号,然后登录到Adobe Developer 注册链接:https://www.adobe.com/go/getstarted_pow…

<02.23>Leetcode100

class Solution {public String minWindow(String s, String t) {if (s.length() < t.length()) {return "";}HashMap<Character, Integer> count new HashMap<>();// 统计组成t字符串的每个字符数量// count[n]<0&#xff1a;滑动窗口缺少多少个…