大模型实战 P7 OpenAI接口实现多轮对话
前面课程当中,给大家介绍了 OpenAI 接口,实现单轮对话,也就是一问一答的场景。但在真实项目当中,多轮对话也是很常见的,也就是说会有多次提问,并且前后是有承接关系的对话场景。这节课,我们就来用一种简单直接的方式,实现多轮对话的过程。
代码示例
1、基本结构
# openai_04_multi_round.py from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI() messages = [] response = client.chat.completions.create( model="gpt-3.5-turbo", messages=messages ) print(response.choices[0].message.content)
2、循环构建多轮对话
while True: content = input('User: ') messages.append({"role": "user", "content": content}) response = client.chat.completions.create( model="gpt-3.5-turbo", messages=messages ) asst_content = response.choices[0].message.content print('Assistant: ', asst_content) messages.append({"role": "assistant", "content": asst_content}) # print(messages)
3、验证多轮对话效果
User: 感冒是一种什么病?
User: 一般会有哪些症状?
User: 吃什么药好得快?
在上面例子中,我们用的是把所有历史对话都带上的方法,实现了多轮对话的效果。但是,大家可能也发现了,这个方法其实存在一个问题,就是聊的时间越长,会越贵,因为历史的 messages 会积压,token 数量会越来越多。
这个问题,会在后面 Langchain 的部分,给大家介绍相应的解决方案。
本文链接:http://www.ichenhua.cn/edu/note/686
版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!