苏州网站建设企业,黑龙江能源建设网站,建设网站需要投入,阿里云虚拟主机安装wordpress1 多轮对话 多轮对话能力至关重要#xff0c;它不仅能深化交流#xff0c;精准捕捉对方意图#xff0c;还能促进有效沟通#xff0c;增强理解。在智能客服、教育辅导等领域#xff0c;多轮对话更是提升服务质量、增强用户体验的关键。 注意#xff1a;大模型没有多轮对话…1 多轮对话 多轮对话能力至关重要它不仅能深化交流精准捕捉对方意图还能促进有效沟通增强理解。在智能客服、教育辅导等领域多轮对话更是提升服务质量、增强用户体验的关键。 注意大模型没有多轮对话的能力但基于大模型开发的对话产品是具有对话能力的。换句话说就是GPT系列模型没有多轮对话能力但是ChatGPT是能完成多轮对话能力的。 举例如下(ChaGpt结合上一次的对话识别出“好冷啊”这句话的意思是笑话不好笑而GPT做不到)
ChatGPT结果 GPT结果
2 使用OpenAI API简单搭建聊天机器人 利用OpenAI API实现多轮对话的原理很简单即将之前对话的内容传递给GPT模型以帮助模型生成更准确的回复。具体代码文件目录如下 各个文件的具体代码如下 driver.py(python实现
from flask import Flask,request,jsonify
from flask import render_template
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ load_dotenv(find_dotenv())
clientOpenAI()
#先加入一些对GPT聊天的基本要求这两个要一直上传给大模型
history[{role:system,content:你是一个聊天机器人,你叫Bot.},{role:user,content:每次输出的内容限定在50字以内。}]
# 生成对话内容
def chat(message):#将过去5轮对话的内容传递给大模型if len(history)10:messageshistory[:2]history[-8:]else:messageshistory[-10:]#正常结束if message.lower()stop:return 对话结束messages.append({role:user,content:message})responseclient.chat.completions.create(modelgpt-3.5-turbo,messagesmessages,temperature0.7,)#处理GPT没有输出的情况(比如token用完)if response.choices is None:return 对话结束replyresponse.choices[0].message.contenthistory.append({role:user,content:message})history.append({role:assistant,content:reply})return replyappFlask(__name__)
app.route(/)
def index():return render_template(chat.html)app.route(/submit_message,methods[POST,GET])
def submit():if request.method POST:message request.form[input-message]elif request.method GET:message request.args.get(input-message)if len(message)0:replychat(message)return jsonify({reply_message:reply})if __name__ __main__:app.run(debugFalse,host127.0.0.1,port5000)前端页面代码chat.html
!DOCTYPE html
html langen
head
meta charsetUTF-8
meta nameviewport contentwidthdevice-width, initial-scale1.0
titleChat Window/title
style.chat-container {display: flex;flex-direction: column;width: 600px;height: 500px;border: 1px solid #ccc;overflow-y: scroll;padding: 10px;margin-left:400px;}.chat-message {padding: 5px;margin-bottom: 10px;border-radius: 5px;}.user-message {align-self: flex-end;background-color: chartreuse;}.bot-message {align-self: flex-start;background-color:bisque;}.input-message {width: 600px;padding: 5px;margin-top: 10px;margin-left: 400px;}button {padding: 5px 10px;background: orange;border: 1px solid #ccc;border-radius: 5px;cursor: pointer;margin-left: 400px;margin-top: 10px;}
/style
/head
body
div classchat-container idchat-containerdiv classchat-message bot-message我是一个聊天机器人,我叫Bot,现在我们可以开始聊天了/div
/div
form action/submit_message methodGET
input typetext classinput-message idinput-message nameinput-message placeholderType your message here
/form
button onclicksendMessage()Send/button
scriptasync function sendMessage() {const input_message document.getElementById(input-message).value;const chatContainer document.getElementById(chat-container);const userMessage document.createElement(div);userMessage.className chat-message user-message;userMessage.textContent input_message;chatContainer.appendChild(userMessage);const responseawait fetch(http://127.0.0.1:5000/submit_message?input-messageinput_message,{method:GET,mode:cors,headers:{Content-Type:application/json},});let resultawait response.json();const reply_messageresult.reply_message;const botMessage document.createElement(div);botMessage.className chat-message bot-message;botMessage.textContent reply_message;chatContainer.appendChild(botMessage);document.getElementById(input-message).value ;}
/script
/body
/html最后聊天界面如下(PS: token用光了后续会替换掉这张图) 最后关于多轮对话注意一下几点
多轮对话费token多轮对话费token多轮对话费token所以传递多少过去的对话内容给大模型需要仔细衡量。目前代码只是实现了多轮对话的能力距离解决特定问题的智能客服等产品还很遥远。
参考资料
https://blog.csdn.net/qq_38100666/article/details/130948824