看到很多用OpenAI开发对话功能的例子,发现都存在问题,影响了产品的效果。所以写了这篇短文,希望对大家有帮助。
调用过程中,不携带上下文信息
绝大多数外面开放的聊天对话产品,都没有携带上下文信息,一般代码如下:
import openai
import os
# 从OpenAI网站上获取API密钥
openai.api_key = os.environ["OPENAI_API_KEY"]
# 设置模型ID
model_engine = "text-davinci-003"
# 设置要提问的问题
question = "你的问题"
# 调用OpenAI的chat函数
response = openai.Completion.create(
engine=model_engine,
prompt=(f"Q: {question}\nA:"),
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
# 输出答案
print(response.choices[0].text.strip())
看出这段代码的问题没有?完全没有携带对话的上下文信息,这样会导致每个聊天对话都是独立的,你想延续上文继续进行对话,发现根本不是你要的结果。
了解了这些,聪明的你肯定知道应该如何写携带上下文的正确的代码了,大致代码如下:
import openai
import os
# 从OpenAI网站上获取API密钥
openai.api_key = os.environ["OPENAI_API_KEY"]
# 设置模型ID
model_engine = "text-davinci-003"
# 设置要提问的问题
question = "这次的问题"
# 调用OpenAI的chat函数
response = openai.Completion.create(
engine=model_engine,
prompt=(f"Q:上几次聊天的内容\nA:上几次Chat GPT的回答。\nQ: {question}\nA:"),
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
# 输出答案
print(response.choices[0].text.strip())
你可以根据实际情况,传递多少次对话的上下文进去。
当然了,传递的越多,token会消耗越多,价格也越贵。建议选择一个合适的对话次数即可。
欢迎更多的朋友参与讨论(OpenAI交流区)如何使用OpenAI进行产品开发。