Spring AI教程(二)Chat API之上下文对话

本文介绍了如何通过在ChatGPT中实现上下文对话功能,通过Message接口和队列管理来存储用户和AI的交互历史,以便AI根据之前的信息进行回复。同时提及了OpenAI的计费规则对消息队列长度的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上下文对话

 上下文对话的作用就是让AI具有记忆力,在快速入门流式对话中,我们是通过一种单一的输入输出方式进行调用的,这种调用方式无法让AI具有记忆力,例如,当我发起如下问题时:

  • hi
  • 中国的四大名著有哪些?
  • 本次对话中,我的第一个问题是什么?

 可以看到,AI无法根据之前的对话内容进行分析回复。因此,这就要求我们实现一个可以让ChatGPT具有一定的记忆力,并根据过去的聊天信息进行回复。

 ChatGPT上下文对话的实现原理较为简单,本质上其实就是将不同角色的聊天信息依次存储在一个队列中发送给ChatGPT即可,然后ChatGPT会根据整个聊天信息对回复内容进行判断。在OpenAI提供的接口中,每条信息的角色总共分为三类:

  • SystemMessage:系统限制信息,这种信息在对话中的权重很大,AI会优先依据SystemMessage里的内容进行回复;
  • UserMessage:用户信息
  • AssistantMessage:AI回复信息

还有一个FunctionMessage,这类信息用于AI的函数调用,一般不予以讨论。

 这些Message均实现了一个Message接口,如上图。AbstractMessage提供了对Message接口的抽象实现,SystemMessageUserMessageAssistantMessage等均继承了AbstractMessage,是Message的具体实现。而ChatMessage是Message的扩展实现,用于创建其它大语言模型需要的Message。

通俗点讲就是有些AI的Message不支持这类System、User、Assistant等,这时,我们就可以通过ChatMessage去自定义创建可用的Message对象了。

 如果我们需要实现上下文对话,就只需要使用一个List存储这些Message对象,并将这些Message对象一并发送给AI,AI拿到这些Message后,会根据Message里的内容进行回复。
不过,根据OpenAI的计费规则,你的消息队列越长,单次问询需要的费用就会越高,因此我们需要对这个消息列表的长度进行限制。

package com.ningning0111.controller;

import org.springframework.ai.chat.C
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PG Thinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值