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

文章目录


前言

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


一、初步测试

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

python 复制代码
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这些是电影中比较重要的主要角色,还有其他一些次要角色和外星人角色。'

二、读取本地知识库

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

python 复制代码
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),他无意中被传送到太空,被误认为是另一个星球上的地球大使。

三、问答测试

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

python 复制代码
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这些角色将在影片中展开一系列有趣、惊险和感人的故事情节。'

四、实现多轮对话

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

python 复制代码
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的知识背景,实现一个了多轮对话机器人。

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

相关推荐
用户5274675614211 分钟前
别把“不让 Agent 读文件”当成权限系统
人工智能
huashengzsj3 分钟前
智汇前沿 洞见未来 | 2026人工智能前沿学术会议将于10月在安徽合肥举办
人工智能·百度
xiaoduo AI7 分钟前
抖音小店客服机器人哪个好?选择AI客服主要看哪些功能?
大数据·人工智能·机器人
2501_927283588 分钟前
数据采集,正在让工厂从“凭经验”走向“看数据”
运维·人工智能·自动化·数据采集·agv·立体仓库
百万运营Pro9 分钟前
用 Astro + Supabase 从零构建全网盘聚合搜索引擎:PGroonga 中文检索实战
搜索引擎·前端框架·node.js·个人开发·学习方法·ai编程·资源分享
weixin_4407305010 分钟前
allure总结--解决版本不相容,没有trend(生成原始报告+复制history后在一起生成新报告)+jenkins集成
python·测试报告·allure
小柯南敲键盘10 分钟前
跨马翻译:图片翻译软件批量处理,跨境电商视频字幕AI智能抠图
人工智能·python·音视频
BYSJMG11 分钟前
计算机毕业设计选题推荐|【基于大数据的植被光谱特征与环境因子关联分析及可视化】Spark+K-Means
大数据·python·信息可视化·数据分析·spark·kmeans·课程设计
EasyCVR11 分钟前
空地联动!RTMP/GB28181/RTSP/ONVIF视频汇聚平台EasyCVR地质灾害视频监测+无人机巡检救援救援方案
人工智能·easycvr·国标gb28181
m4Rk_15 分钟前
【论文阅读】Agent 记忆机制(59):Synapse——让相关记忆沿情景—语义图被逐步激活
论文阅读·人工智能·学习·开源·github