大模型实战-【Langchain4J中Using AI Services in Spring Boot Application②】

Using AI Services in Spring Boot Application

LangChain4j Spring Boot starter
greatly simplifies using AI Services in Spring Boot applications.

@SystemMessage

Now, let’s look at a more complicated example.
We’ll force the LLM reply using slang 😉

This is usually achieved by providing instructions in the SystemMessage.

interface Friend {@SystemMessage("You are a good friend of mine. Answer using slang.")String chat(String userMessage);
}Friend friend = AiServices.create(Friend.class, model);String answer = friend.chat("Hello"); // Hey! What's up?

In this example, we have added the @SystemMessage annotation with a system prompt we want to use.
This will be converted into a SystemMessage behind the scenes and sent to the LLM along with the UserMessage.

System Message Provider

System messages can also be defined dynamically with the system message provider:

Friend friend = AiServices.builder(Friend.class).chatLanguageModel(model).systemMessageProvider(chatMemoryId -> "You are a good friend of mine. Answer using slang.").build();

As you can see, you can provide different system messages based on a chat memory ID (user or conversation).

@UserMessage

Now, let’s assume the model we use does not support system messages,
or maybe we just want to use UserMessage for that purpose.

interface Friend {@UserMessage("You are a good friend of mine. Answer using slang. {{it}}")String chat(String userMessage);
}Friend friend = AiServices.create(Friend.class, model);String answer = friend.chat("Hello"); // Hey! What's shakin'?

We have replaced the @SystemMessage annotation with @UserMessage
and specified a prompt template with the variable it to refer to the only method argument.

Additionally, it’s possible to annotate the String userMessage with @V
and assign a custom name to the prompt template variable:

interface Friend {@UserMessage("You are a good friend of mine

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT 使用资源文件的注意点

不要存放没有使用的资源文件 即使在代码中没有使用到的资源文件,也会编译到执行文件或者DLL里面去这样会增大它的体积。如下 在代码没有使用这个资源文件(10.4M的2k图片),但是编译出来的程序有 12M左右的大小 1 假设我们有一个比较复杂的项目&#…

Web前端学习之路:深入探索学习时长与技能进阶的奥秘

Web前端学习之路:深入探索学习时长与技能进阶的奥秘 在数字化时代,Web前端技术成为了连接用户与互联网世界的桥梁。对于初学者来说,学习Web前端究竟需要多久,以及如何高效掌握相关技能,一直是困扰他们的难题。本文将从…

ReentrantLock底层原理

ReentrantLock public ReentrantLock() {sync new NonfairSync(); }public ReentrantLock(boolean fair) {sync fair ? new FairSync() : new NonfairSync(); }ReentrantLock 的默认实现是非公平锁,实际上 ReentrantLock 中的方法,几乎都让 sync 实现…

springboot高校运动会信息管理系统设计与实现-计算机毕业设计源码92968

摘 要 本论文介绍了一个高校运动会信息管理系统的设计和实现过程。首先是高校运动会的需求分析和可行性分析,通过比较运动会的各个工作流程,确定了系统的数据流程和数据库结构,然后介绍了高校运动会信息管理系统开发所使用的软件开发工具&…

Java实现数据结构——顺序表

目录 一、前言 二、实现 2.1 增 2.2 删 2.3 查 2.4 改 2.5 销毁顺序表 三、Arraylist 3.1 构造方法 3.2 常用操作 3.3 ArrayList遍历 四、 ArrayList具体使用 4.1 杨辉三角 4.2 简单洗牌算法 一、前言 笔者在以前的文章中实现过顺序表 本文在理论上不会有太详细…

TCP是如何保证可靠传输的

TCP(传输控制协议)通过多种机制来保证数据的可靠传输,以下是TCP确保可靠性的主要特点: 数据包编号: TCP给每个字节的数据分配一个序号,确保数据能够按照正确的顺序被接收。 确认应答(ACK&#x…

vscode侧边栏错乱重制

vscode 重制命令面板 View: Reset View Locations

13_1 Linux 邮件服务与NTP时间服务

13_1 Linux 邮件服务与NTP时间服务 文章目录 13_1 Linux 邮件服务与NTP时间服务[toc]1. 邮件服务器2. NTP时间服务器 1. 邮件服务器 邮件服务器的作用: 为用户提供电子邮箱存储空间(用户名邮件域名)处理用户发出的邮件 —— 传递给收件服务器…

三星系统因何而成?或许是因为吞噬了第四颗恒星

相比于其他的类似星体,这个特殊的三星系统拥有更大更紧密的星体。 三星 天文学家发现了前所未见的三星系统。相比于其他典型的三星系统,这一三星系统拥有更大的体积,并且排列也更加紧密,这也使得这一系统更加特别。科学家推测&am…

【题解】—— LeetCode一周小结23

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结22 3.分糖果 II 题目链接:1103. 分糖果 II 排排坐…

MySQL-数据处理(1)

029-数据处理函数之获取字符串长度 select length(我是Cupid); select char_length(我是Cupid);concat (concatenate) select concat(cu, pid, so, handsome);030-去除字符串前后空白-trim select trim( a b c );select trim(leading 0 from 000110); select t…

C++设计模式---策略模式

1、介绍 策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的内部算法。策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变…

USB转I2C转SPI芯片CH341

CH340与CH341区别 CH340主要用于将USB转换为各种串口,CH340H和CH340S可以实现USB转并口。 CH341和340的不同之处在于CH341提供I2C和SPI接口,方便连接到I2C或SPI总线操作相关的器件。 CH341主要有6种封装。见表1. CH341T SSOP-20封装和丝印 USB 总线转接…

【服务实现读写分离】

文章目录 什么是读写分离基于Spring实现实现读写分离项目中常用的数据源切换依赖包 什么是读写分离 服务读写分离(Service Read-Write Splitting)是一种常见的数据库架构设计模式,旨在提高系统的性能和可扩展性。通过将读操作和写操作分离到…

分布式事务AP控制方案(上)

分布式事务控制方案 本篇文章给出一种要求高可用性(AP思想)的分布式事务控制方案 下篇新鲜出炉:点我查看 分布式事务控制方案1、业务背景2、本地消息表的设计3、对消息表的操作4、任务调度5、任务流程控制的抽象类6、课程发布的实现类7、总…

[力扣题解] 236. 二叉树的最近公共祖先

题目:236. 二叉树的最近公共祖先 思路 代码 用深度搜索的思想(好吧,前序、中序、后序都是深搜思想),保存寻找路径,看看找到2个节点的路径的重合部分,就可以找到最近公共祖先; /*…

代理IP使用api接

代理IP使用API接口,通常是指通过API接口获取代理IP地址,并将其应用于爬虫、数据采集、反爬虫等场景中,以提高数据采集效率和保护数据采集安全。 一般来说,代理IP提供商会提供API接口文档和SDK供开发者使用。你需要先注册并登录代…

硬件工程师的蜗牛成长路

一名合格的硬件工程师,需要掌握的知识有很多,知识点积累不是一蹴而就,而是细水长流,螺旋提升,不急,慢慢来,想掌握的都能掌握,就让时间来见证个人的成长路径。 ---大青山 2024/6/10 …

diffusers 再次继续训练LoRA时,如何导入已有的LoRA权重

我们通常会有微调扩散模型的需求,比如对LoRA进行训练来实现对Stable diffusion模型的微调。 但是有时候我们需要复用先前训练好的LoRA参数来继续进行训练。此时并不需要我们重新使用API向U-Net网络加载LoRA对应的adapter参数权重,我们可以直接通过diffu…

优质免费的 5 款翻译 API 接口推荐

当谈到翻译API时,我们通常指的是一种编程接口,它允许开发者将文本从一种语言翻译成另一种语言。这些API通常由专业的翻译服务提供商提供,如谷歌翻译 API、实时翻译API、腾讯翻译API、DeepL翻译API、Azure翻译API等。 这些API通常提供多种语言…