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

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

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在构建聊天应用时更加灵活和强大。

相关文章:

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

LangChain4J官方文档翻译与解析 目标文档路径: https://docs.langchain4j.dev/tutorials/chat-and-language-models/ 语言模型的两种API类型 LangChain4j支持两种语言模型(LLM)的API: LanguageModel:这种API非常简单,…...

Cython学习笔记1:利用Cython加速Python运行速度

Cython学习笔记1:利用Cython加速Python运行速度 CythonCython 的核心特点:利用Cython加速Python运行速度1. Cython加速Python运行速度原理2. 不使用Cython3. 使用Cython加速(1)使用pip安装 cython 和 setuptools 库(2&…...

【从0做项目】Java音缘心动(1)———项目介绍设计

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:项目结果展示 一:音乐播放器Web网页介绍 二:前期准备工作&…...

智慧农业新生态 | 农业数字化服务平台——让土地生金,让服务无忧

一部手机管农事,从播种到丰收,全链路数字化赋能! 面向农户、农机手、农服商、农资商打造的一站式农业产业互联网平台,打通农资交易、农机调度、农服管理、技术指导全场景闭环,助力乡村振兴提效增收。 三大核心场景&am…...

C++编程,#include <iostream>详解,以及using namespace std;作用

在C编程中&#xff0c;#include <iostream> 是用来包含输入/输出流头文件的预处理指令。它允许程序使用标准的输入/输出对象如 std::cout 和 std::cin&#xff0c;以便与标准输入和输出流进行交互。这一头文件是编写输入输出操作时必不可少的部分。 讲到这里&#xff0c…...

jetbrains IDEA集成大语言模型

一、CodeGPT ‌CodeGPT‌是由CSDN打造的一款生成式AI产品&#xff0c;专为开发者量身定制。它能够提供强大的技术支持&#xff0c;帮助开发者在学习新技术或解决实际工作中的各种计算机和开发难题‌1。 idea集成 1.在线安装&#xff1a;直接在线安装 2.离线安装 JetBrains Mar…...

理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)

之前一直不是很理解这个公式为什么用这个精度矩阵&#xff0c;为什么这么巧合&#xff0c;为什么是它&#xff0c;百思不得其解&#xff0c;最近有了一些新的理解&#xff1a; 1. 这个精度矩阵相对公平合理的用统一的方式衡量了变量间的关系&#xff0c;但是如果是公平合理的衡…...

使用 Spark NLP 实现中文实体抽取与关系提取

在自然语言处理(NLP)领域,实体抽取和关系提取是两个重要的任务。实体抽取用于从文本中识别出具有特定意义的实体(如人名、地名、组织名等),而关系提取则用于识别实体之间的关系。本文将通过一个基于 Apache Spark 和 Spark NLP 的示例,展示如何实现中文文本的实体抽取和…...

less-8 boolen盲注,时间盲注 函数补全

获取当前数据库名 import requestsdef inject_database(url):namemax_length20 # 假设数据库名称最大长度为20# ASCII范围&#xff1a;数字、字母、下划线&#xff08;_&#xff09;low{a: 97, z: 122, A: 65, Z: 90, 0: 48, 9: 57, _: 95}high{97: a, 122: z, 65: A, 90: Z,…...

[NKU]C++基础课(五)补充:结构体

【3.3】C结构体介绍_哔哩哔哩_bilibili 结构体 最厉害的学生 现有N名同学参加了期末考试&#xff0c;并且获得了每名同学的信息: 1 姓名(不超过8个字符的仅有英文小写字母的字符串) 2 语文、数学、英语成绩(均为不超过150的自然数)。 3 总分最高的学生就是最厉害的。 请输…...

亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!

作者&#xff1a;程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案&#xff0c;但是很多人表示还是用的不够爽&#xff0c;比如用CodeChat的方案&#xff0c;只支持V3版本&#xff0c;不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么&#xff0c;今天&#xff0c;给…...

springcloud整合seata

1、前置安装与了解&#xff1a; 1、nacos的安装&#xff1a;docker安装nacos并挂载 2、seata的安装&#xff1a;docker安装seata并挂载&#xff0c;同时注册到nacos 3、spring-boot版本为2.6.12&#xff0c;spring-cloud-alibaba版本为2021.0.4.0&#xff0c;spring-cloud版本…...

Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)

HTML5 简介 HTML5 是最新的 HTML 标准&#xff0c;它引入了许多新特性&#xff0c;使网页开发更加强大和灵活。以下是一些关键的 HTML5 语法知识点&#xff1a; 1. 文档类型声明 (DOCTYPE) HTML5 的文档类型声明非常简单&#xff1a; <!DOCTYPE html>2. 字符编码 HT…...

Django加bootstrap实现上传文件含有进度条

1. 项目结构 myproject/ ├── myproject/ │ ├── settings.py │ ├── urls.py │ └── ... ├── myapp/ │ ├── templates/ │ │ └── upload.html │ ├── views.py │ ├── urls.py │ └── ... └── media/ # 手动创…...

八大排序算法(2)交换排序-冒泡排序 和 快速排序

快速排序&#xff08;Quick Sort&#xff09; 和 冒泡排序&#xff08;Bubble Sort&#xff09; 都是常见的交换排序算法&#xff0c;它们的核心思想都是通过交换元素来实现排序。但是&#xff0c;它们的工作原理和性能差异非常大。下面我们来详细对比这两种排序算法&#xff1…...

Python的那些事第二十三篇:Express(Node.js)与 Python:一场跨语言的浪漫邂逅

摘要 在当今的编程世界里,Node.js 和 Python 像是两个性格迥异的超级英雄,一个以速度和灵活性著称,另一个则以强大和优雅闻名。本文将探讨如何通过 Express 框架将 Node.js 和 Python 结合起来,打造出一个高效、有趣的 Web 应用。我们将通过一系列幽默风趣的实例和表格,展…...

STM32MP157A单片机移植Linux驱动

在stm32mp157a单片机移植Linux操作系统&#xff0c;并移植内核驱动&#xff0c;在应用程序中使用3个线程&#xff0c;分别实现控制单片机上3个led流水灯的功能、蜂鸣器控制的功能、风扇控制的功能。 需求整理&#xff1a; 1.驱动程序-->led1.c&#xff0c;led2.c&#xff…...

Qt程序退出相关资源释放问题

目录 问题背景&#xff1a; aboutToQuit 代码举例 closeEvent事件 代码举例 程序退出方式 quit() exit(int returnCode 0) close() 问题背景&#xff1a; 实际项目中程序退出前往往需要及进行一些资源释放、配置保存、线程中断等操作&#xff0c;避免资源浪费&#xff…...

【大学生职业规划大赛备赛PPT资料PDF | 免费共享】

自取链接&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/4fa45515325e &#x1f4e2; 同学&#xff0c;你是不是正在为职业规划大赛发愁&#xff1f; 想展示独特思路却不知如何下手&#xff1f; 想用专业模板却找不到资源&#xff1f; 别担心&#xff01;我整理了全网…...

win32汇编环境,对话框中使用菜单示例一

;运行效果 ;win32汇编环境,对话框中使用菜单示例一 ;最基本的应用&#xff0c;即添加菜单及点击后响应的操作方法 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>&g…...

Linux /tmp 目录管理

Linux 会自动清理 /tmp 目录&#xff0c;但清理的频率、具体行为取决于你的系统配置和发行版。主要有以下几种机制&#xff1a;1. 基于 systemd 的系统&#xff08;大多数现代发行版&#xff0c;如 Ubuntu、Debian、CentOS 等&#xff09;通过 systemd-tmpfiles 服务管理。清理…...

2026年硕士论文开题报告降AI攻略:研究计划和方法论部分完整处理

2026年硕士论文开题报告降AI攻略&#xff1a;研究计划和方法论部分完整处理 截止日期只剩两天&#xff0c;AI率76%。 翻了论坛、问了学长、试了工具&#xff0c;最后用嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;一次过——4.8元&#xff0c;从76%降到了7%。把这段经…...

终极解决方案:3分钟搞定Windows与iPhone网络共享驱动安装

终极解决方案&#xff1a;3分钟搞定Windows与iPhone网络共享驱动安装 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_…...

哈希算法核心特性解析

哈希算法&#xff08;Hash Algorithm&#xff09;是一种将任意长度的输入&#xff08;或消息&#xff09;通过散列函数&#xff08;Hash Function&#xff09;变换成固定长度的输出&#xff08;哈希值&#xff0c;或称摘要&#xff09;的数学函数 。这个输出值通常是一个由字母…...

2026年人工智能论文降AI工具推荐:算法研究和模型分析部分降AI方案

2026年人工智能论文降AI工具推荐&#xff1a;算法研究和模型分析部分降AI方案 研究生群里聊起AI率的问题&#xff0c;发现十个人里起码六七个都在用工具降。主流的选择其实就那几款&#xff0c;关键是选对了能省很多麻烦。 综合价格和效果&#xff0c;我主推嘎嘎降AI&#xf…...

paraphrase-multilingual-MiniLM-L12-v2终极指南:5分钟掌握多语言语义匹配

paraphrase-multilingual-MiniLM-L12-v2终极指南&#xff1a;5分钟掌握多语言语义匹配 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否需要处理多语言…...

3步掌握百度网盘秒传神器:为什么这个网页工具能提升效率300%

3步掌握百度网盘秒传神器&#xff1a;为什么这个网页工具能提升效率300% 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 你是否曾经为了分享一个大文…...

BlockTheSpot终极指南:5分钟彻底解决Spotify广告与强制更新问题

BlockTheSpot终极指南&#xff1a;5分钟彻底解决Spotify广告与强制更新问题 【免费下载链接】BlockTheSpot Video, audio & banner adblock/skip for Spotify 项目地址: https://gitcode.com/gh_mirrors/bl/BlockTheSpot 你是否厌倦了Spotify的频繁广告打断音乐体验…...

从智能家居到工业4.0:上位机/下位机架构如何塑造万物互联?以Node-RED和MQTT为例

从智能家居到工业4.0&#xff1a;上位机/下位机架构如何塑造万物互联&#xff1f;以Node-RED和MQTT为例 在智能家居的灯光自动调节中&#xff0c;工业流水线的机械臂控制里&#xff0c;或是农业大棚的温湿度监控系统背后&#xff0c;都藏着一套经典的协作模式——上位机与下位机…...

避开这3个坑,你的单图像3D重建项目才算入门(PyTorch实战心得)

避开这3个坑&#xff0c;你的单图像3D重建项目才算入门&#xff08;PyTorch实战心得&#xff09; 第一次看到自己训练的模型从一张普通照片生成出三维点云时&#xff0c;那种兴奋感至今难忘。但随之而来的&#xff0c;是连续三周在实验室通宵调试的噩梦——损失函数震荡、点云密…...