AI大模型探索之路-基础篇3:构建Chat Completions驱动的多轮对话机器人

文章目录

  • 前言
  • 一、初步测试
  • 二、读取本地知识库
  • 三、问答测试
  • 四、实现多轮对话
  • 总结


前言

在上一篇《AI大模型应用开发篇之Chat Completions API》中熟悉了 Chat Completions API相关特点和各种场景的使用样例; 本章主要记录如何基于Chat Completions API实现简单的多轮对话机器人。


一、初步测试

先咨询大模型一个未经训练不知道的内容;会发现大模型的回答结果并不是真实的,基本上都是他自己编写出来的。

from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "null"},{"role": "user", "content": '你知道《地球特派员》的电影里角色有哪些吗?'}]
)
# 输出结果
response.choices[0].message.content  # 可以发现输出的内容都是大模型自己编出来的
'《地球特派员》是一部动画电影,也称为《Men in Black》。以下是电影中的一些角色:\n\n1. Agent K (凯)\n2. Agent J (杰)\n3. Frank the Pug (弗兰克)\n4. Agent L (艾丽)\n5. Zed (齐德)\n6. Edgar the Bug (埃德加)\n7. Laurel Weaver (劳瑞)\n8. Serleena (赛琳娜)\n\n这些是电影中比较重要的主要角色,还有其他一些次要角色和外星人角色。'

二、读取本地知识库

读取本地服务器提前准备好的知识库内容。

with open('地球特派员.txt', 'r', encoding='utf-8') as f:chatCompletion_kg = f.read()
# 输出 chatCompletion_kg
'电影:地球特派员 Elio\n导演: 阿德里安·莫利纳\n主演: 约纳斯·基布雷亚布 / 亚美莉卡·费雷拉\n类型: 喜剧 / 科幻 / 动画 / 冒险\n上映日期: 2024-03-01(美国)\n这是皮克斯宣布了第 28 部故事片,将聚焦于一个 11 岁的男孩(当然叫 Elio),他无意中被传送到太空,被误认为是另一个星球上的地球大使。

三、问答测试

以本地知识库作为背景知识,再次让大模型回答相关问题;基本回答正确。

response = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": chatCompletion_kg},{"role": "user", "content": '你知道《地球特派员》的电影里角色有哪些吗?'}]
)
#输出 response.choices[0].message.content
'当然!《地球特派员》电影中的主要角色包括:\n\n1. Elio:主角,一个 11 岁的男孩,被误认为是地球大使而被传送到另一个星球上。\n2. 太空探险家 Zara:另一个星球的居民,是 Elio 在外太空中遇到的重要角色。\n3. 机器人小助手 R1C4:协助 Elio 在另一个星球上生存和应对挑战的机器人伙伴。\n4. 地球特派员团队:一群来自不同星球的使者,与 Elio 一起合作展开冒险活动。\n\n这些角色将在影片中展开一系列有趣、惊险和感人的故事情节。'

四、实现多轮对话

利用本地知识库+循环处理实现简单的多轮对话效果

def chat_with_model(messages):response = client.chat.completions.create(model="gpt-3.5-turbo",messages=messages)return response.choices[0].message.content# 测试函数
def gpt_chat_with_model():# 初始问候messages = [{"role": "system", "content": chatCompletion_kg}, ##添加本地知识库{"role": "user", "content": "你好!"},{"role": "assistant", "content": "你好!我是一个AIGC智能助理,有什么问题我可以帮助你?"}]print(chat_with_model(messages))# 进行对话while True:user_input = input("用户:")messages.append({"role": "user", "content": user_input})assistant_response = chat_with_model(messages)messages.append({"role": "assistant", "content": assistant_response})print("助理:" + assistant_response)# 判断是否结束对话if user_input.lower() == 'quit':break

调用gpt_chat_with_model()
在这里插入图片描述
问题如下:
问题1:请问地球特派员的导演是谁?
问题2:请问地球特派员的主演是谁?
问题3:请问地球特派员的什么时候上映?
问题4:请问地球特派员是什么类型的电影?
问题5:quit

回复如下:
助理:这部电影的导演是阿德里安·莫利纳(Adrian Molina)。
助理:《地球特派员》的主演包括约纳斯·基布雷亚布(Jonas Kühnemann)和亚美莉卡·费雷拉(Amarilys Ferreira)。
助理:《地球特派员》预计于2024年3月1日在美国上映。
助理:《地球特派员》是一部喜剧、科幻、动画和冒险题材相结合的电影。
助理:如有任何其他问题,欢迎随时向我提问!祝您有美好的一天!如果需要帮助,请随时回来。再见!


总结

本章案例主要利用ChatCompletion API的使用技巧,以及message参数中system可以实现知识背景的设置;让大模型浏览本地知识库内容,将其设定为System role的知识背景,实现一个了多轮对话机器人。

探索未知,分享所知;点击关注,码路同行,寻道人生!

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

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

相关文章

【数据结构与算法】:快速排序和归并排序的非递归实现

1. 递归实现的缺陷 在以前的文章中我们把快速排序和归并排序的递归实现方式进行了介绍,但是在校招面试和在企业的日常开发过程中,仅掌握递归方法是不够的,因为递归也有它的缺陷。 我们知道在函数调用过程中会在内存中建立栈帧,栈…

solidity(3)

地址类型 pragma solidity ^0.8.0;contract AddressExample {// 地址address public _address 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;address payable public _address1 payable(_address); // payable address,可以转账、查余额// 地址类型的成员uint256…

C/C++与Python:各自的优势与前景展望

在讨论C/C和Python这两种编程语言的前景时,我们必须认识到每种语言都有其独特的定位和应用场景,并不存在绝对意义上的“谁更有前景”。它们分别在不同的领域发挥着重要作用,而且在未来的技术发展过程中,二者都将继续保持其不可替代…

Linux进程间通信【二】

system V进程间通信 管道通信本质是基于文件的,也就是说操作系统并没有为此做过多的设计工作,而system V IPC是操作系统特地设计的一种通信方式。但是不管怎么样,它们的本质都是一样的,都是在想尽办法让不同的进程看到同一份由操…

【深度学习】海洋生物数据集,图片分类

文章目录 任务描述数据收集数据处理模型训练指标评测web app代码和帮助 任务描述 收集9种以上的海洋生物图片,然后基于深度学习做一个分类模型,训练完成后,分类模型就可以对未知图片进行分类。 在之后随便传一张图片,分类模型就…

【静态分析】静态分析笔记01 - Introduction

参考: BV1zE411s77Z [南京大学]-[软件分析]课程学习笔记(一)-introduction_南京大学软件分析笔记-CSDN博客 ------------------------------------------------------------------------------------------------------ 1. program language and static analysis…

ORB-SLAM3整体流程详解

0. 简介 在之前,作者曾经转过一篇《一文详解ORB-SLAM3》的文章。那篇文章中提到了ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。与ORB-SLAM2相比,ORB-SLAM3…

接口自动化框架设计必备利器之参数传递

在我们设计自动化测试框架的时候,我们会经常将测试数据保存在外部的文件(如Excel、YAML)中,实现测试脚本与测试数据解耦,方便后期维护。 当涉及到业务场景接口用例时,由于接口与接口存在关联关系&#xff…

STL容器之unordered_map类

文章目录 STL容器之unordered_map类1、unordered_map1.1、unordered_map介绍1.2、unordered_map的使用1.2.1、unordered_map的常见构造1.2.2、unordered_map的迭代器1.2.3、unordered_map的容量1.2.4、unordered_map的增删查1.2.5、unordered_map的桶操作 2、unordered_multima…

【快速上手ESP32(基于ESP-IDFVSCode)】04-PWM

PWM PWM,即脉冲宽度调制(Pulse Width Modulation),是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而达到控制开关稳压电源输出…

物联网系统设计 8

1 规划中小型LoRa 中小型分时复用,大型项目需要学习LoRaWAN 1.1 通信记录 1.2 节点能耗 1278芯片 满功率20DMB,增加PA,发送功率 30 DBM 内置天线柔性 棒状 3db 203 休眠、发生、接收 计算链路预算,工作电流,工…

Blocs v5.2.3 mac版 可视化网页设计工具 兼容 M1/M2/M3

Mac毒搜集到的Blocs 是一款mac上专业强大的精美网页设计软件。特点就是简介、高效、高质,可以帮助我们快速设计出精美的网页,retina视网膜特性支持,优化自适应网页的开发。 应用介绍 Blocs 是一款mac上专业强大的精美网页设计软件。专注于简…

实现WAF对CC攻击的零误封防护:关键技术解析与实践

一、引言 Web应用防火墙(WAF)作为网站安全的重要防线,其在防御CC(Challenge Collapsar,即挑战黑洞,一种分布式拒绝服务攻击)攻击中的效能至关重要。然而,精准识别并有效拦截CC攻击的…

2024阿里云2核4G服务器优惠价格表_2核4G性能测评

阿里云2核4G服务器多少钱一年?2核4G服务器1个月费用多少?2核4G服务器30元3个月、85元一年,轻量应用服务器2核4G4M带宽165元一年,企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

pytesseract,一个超强的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个超强的 Python 库 - pytesseract。 Github地址:https://github.com/madmaze/pytesseract 在当今数字化时代,文字识别技术扮演着越来越重要的角色。…

设计模式-装饰者模式(Decorator)

1. 概念 装饰者模式是一种结构型设计模式,它允许用户在不修改原始对象的基础上,通过将对象包装在装饰者类的对象中,动态地给原始对象添加新的行为或职责。 2. 原理结构图 图1 图2 抽象组件(Component)&#xff1a…

离散化实现低通滤波器(选用双线性变换)

学习了离散化后整理了其中的核心步骤,此处不对原理进行深究,仅仅介绍如何对一个连续系统进行离散化 此处可以得到低通滤波器的截止频率为1000rad/s. 离散化的过程为将s 2/Ts * [(z - 1) / (z 1)] (选用双线性变换) 得到离散化序列为 Y(z) [w…

Python-VBA函数之旅-bytearray函数

目录 1、bytearray函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:非风V非雨-CSDN博客 bytearray函数在Python中提供了一种可变字节序列的表示方式,这在实际编程中有多种应用场景。常见的应用场…

如何用Python编写简单的网络爬虫(页面代码简单分析过程)

一、什么是网络爬虫 在当今信息爆炸的时代,网络上蕴藏着大量宝贵的信息,如何高效地从中获取所需信息成为了一个重要课题。网络爬虫(Web crawler)作为一种自动化工具,可以帮助我们实现这一目标,用于数据分析…

项目实战 | 使用python分析Excel销售数据(用groupby)

项目实战 | 使用python分析Excel销售数据 本文目录: 零、00时光宝盒 一、提出问题 二、理解数据 2.1、安装python读取excel文件的库 2.2、查看excel表的字段名和前几行记录 2.3、查看excel表结构 2.4、查看索引 2.5、查看每一列的列表头内容 2.6、查看每一…