与大模型的单次对话相比,多轮对话过程中,维护了上下文信息(也可以说是保存了每次的提问与返回的答案信息),这样每次问大模型新的问题时候,实际上是携带者历史的所有聊天内容进行提问,大模型于是就知道了新问题的上下文。

1、导入大模型包

from http import HTTPStatus
//pip install dashscope
from dashscope import Generation

2、创建保存上下文信息的变量,此处是列表

messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': '如何做西红柿炖牛腩?'}]

3、向大模型提问

response = Generation.call(model="qwen-turbo",messages=messages,result_format='message')

4、将大模型的回复,追加到上下文变量中,即 列表中

messages.append({'role': response.output.choices[0]['message']['role'],
                     'content': response.output.choices[0]['message']['content']})

此时列表中内容大概如下:

[{'role': 'system', 'content': 'You are a helpful assistant.'},
 {'role': 'user', 'content': '如何做西红柿炖牛腩?'},
 {'role': 'assistant',
  'content': '材料:\n牛腩500克,西红柿3个,大葱1根,生姜2片,省略。。。。。'}]

5、第二轮提问,先把新的问题,追加到上下午中

messages.append({'role': 'user', 'content': '不放糖可以吗?'})

6、发起提问

此时的提问,包含了之前上下文,所以,大模型能够理解“不放糖可以吗?”这一句新问题

response2 = Generation.call(model="qwen-turbo",messages=messages,result_format='message')

7、响应结果如下:

当然可以。如果你不喜欢或不想添加糖,那么在烹饪过程中就无需加冰糖了。糖主要是为了中和牛肉的腥味,,,,

如果某次提问,大模型没有响应,返回了错误码,

应该把这次提问的问题从上下文列表中删除,即列表中最后一个记录。

messages = messages[:-1]
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐