机文章

聊天机器人实现(ChatGPT教我写聊天机器人代码)聊天机器人编写 学会了吗

 

ChatGPT 火了有些时间,期间我也做了没有少尝试,其中包括使用 OpenAI API 和 Flask 框架写了个交互聊天软件,代码是基于网上代码的基础修改的今天突然想,如果和 ChatGPT 聊天,实现1个简单的聊天软件,它会如何写代码,上面就把聊天内容记录下来(代码验证通过)。

上面就以聊天的形式记录下来ChatGPT 简介Q:介绍下你自己 A:你好,我是 ChatGPT,1个由 OpenAI 培训的大型语言模型,旨在通过自然语言处理技术提供高质量的智能问答服务我使用了1种称为“深度学习”的人工智能技术,通过对大量的语言数据进行训练,从而能够理解自然语言、生成文本、回答问题等。

我可以处理各种手机壁纸主题,包括科学、历史、文化、娱乐等,帮助用户解答问题、提供信息和建议等同时,我还在没有断的学习和发展中,我的回答和表达能力将随着训练数据和技术的没有断增加而得到改进和提高,希望我能帮助你解决问题。

开始 AI 助手编写Q:使用 Python 语言 OpenAI API 写个 AI 助手, 命令行,完整代码,详细中文注释 A:好的,上面1个使用 Python 和 OpenAI API 编写的简单 AI 助手的示例代码,它可以通过命令行用户进行交互:

import openaiimport prompt_toolkit # 需要额外安装这个库,用于命令行交互import os# 配置OpenAI A手机壁纸PI密钥openai.api_key = os.environ[

"OPENAI_API_KEY"]# 设定OpenAI的模型和引擎model_engine = "text-davinci-002"prompt_prefix = "我: "response_prefix = 

"AI: "# 定义1个函数,用于向OpenAI API发送请求并返回结果defgenerate_response(prompt):    response = openai.Completion.create(

engine=model_engine,        prompt=prompt,        max_toke手机壁纸ns=1024,        n=1,        stop=None

,        temperature=0.7,    )    message = response.choices[0].textreturn message.strip()# 通过Prompt Toolkit库来实现命令行交互

defprompt_user():whileTrue:try:# 读取用户输入的信息            user_input = prompt_toolkit.prompt(prompt_prefix)

# 将用户输入发送给OpenAI API,并返回结果            respo手机壁纸nse = generate_response(user_input)# 打印OpenAI API返回的结果            print(response_prefix + response)

except KeyboardInterrupt:# 如果用户按下Ctrl-C,则退出程序            print("\n再见!")break# 运行程序if __name__ == "__main__"

:    prompt_user()这个代码使用了 OpenAI 的 API 密钥来配置 API 连接,然后使用 text-davinci-002 模型和引擎来完成回答用户问题的任务gen手机壁纸erate_response() 函数发送用户输入到 API,接收响应并返回响应消息。

该程序使用 Prompt Toolkit 库来启动命令行并接收用户输入用户输入的消息会传递给 generate_response() 函数,函数会调用 OpenAI API 并获取回复程序会将 OpenAI API 返回的回复打印到命令行窗口上,然后再次等待用户输入。

如果用户按下 Ctrl-C,则程序会退出在运行这个程序之前,你需要安装 prompt_toolkit 库并设置 OpenAI API 密钥,这可以通过设置 OPENAI_API_KEY 环境变量来完成如果你没有 OpenAI API 密钥,可以在手机壁纸 OpenAI 官网上注册并获取。

和 ChatGPT 做下对比测试上面是代码给出的回复,

上面是 ChatGPT 给出的回复,

比较看来,ChatGPT 给出的结果富得多,这个差异得另外开个话题讨论了(暂时我也没有知道答案)先看看如何实现真正的聊天,而没有是简单的问答理解聊天高低文的实现Q:请支持真正的聊天,没有是简单的问答,完整代码 。

A:好的,上面1个更完整的 Python 代码,它使用 OpenAI API 构建了1个聊天机器人,并支持自然的聊天交互:import openaiimport prompt_toolkitimport

os# 配置OpenAI API密钥openai.api_key手机壁纸 = os.environ["OPENAI_API_KEY"]# 设定OpenAI的模型和引擎model_engine = "text-davinci-002"

prompt_prefix = "我: "response_prefix = "AI: "# 定义1个函数,用于向OpenAI API发送请求并返回结果defgenerate_response(prompt)

:    response = openai.Completion.create(        engine=model_engine,        prompt=prompt,        max_tokens=

1024, 手机壁纸       n=1,        stop=None,        temperature=0.7,    )    message = response.choices[0].text

return message.strip()# 通过Prompt Toolkit库来实现命令行交互defprompt_user():# 记录用户历史输入    history = []whileTrue

:try:# 读取用户输入的信息            user_input = prompt_toolkit.prompt(prompt_prefix, history=history)         手机壁纸   history.append(user_input)

# 将用户输入和历史记录发送给OpenAI API,并返回结果            prompt = "\n".join(history[:])  # 只向OpenAI API提供最近3个历史输入

            response = generate_response(prompt)# 打印OpenAI API返回的结果            print(response_prefix + response)

# 记录历史记录的最新回答            history.append(response)except KeyboardInterr手机壁纸upt:# 如果用户按下Ctrl-C,则退出程序            print(

"\n再见!")break# 运行程序if __name__ == "__main__":    prompt_user()这个代码上面的代码类似,没有的地方在于,它记录了用户的历史输入,并将它们1起发送到 OpenAI API 中。

这样,API 可以更好地理解高低文,并生成更好的响应程序还记录了机器人的回答,并将它们添加到历史记录中,以便下1次查询这个程序可以像上1个程序1样启动,通过命令行输入机器人进行自然的对话但执行上面代码的时候报错,再问问 ChatGPT 怎么回事,。

Q: 上面代码执行时报错:Att手机壁纸ributeError: list object has no attribute load,代码出错处为:user_input = prompt_toolkit.prompt(prompt_prefix, history=history)

A:这个错误通常是由于 history 对象没有是 InMemoryHistory 的实例造成的根据代码,history 实际上是1个 Python 列表,而没有是 InMemoryHistory 对象要解决这个问题,您可以使用以下代码将 history 转换为 InMemoryHistory 的实例:

from prompt_toolkit.history im手机壁纸port InMemoryHistoryhistory = InMemoryHistory()history.extend(your_list_history)

其中 your_list_history 是您之前存储历史记录的 Python 列表然后,您可以将转换后的 history 对象传递给 prompt_toolkit.prompt 函数,以便将其用作历史记录。

还是报错 ,Q:AttributeError: history object has no attribute extend A:非常抱歉,我的前1个回答中的代码有误,导致了您遇到的问题history 对象是没有 extend 方法手机壁纸的,因此您在调用 history.extend(your_list_history) 时遇到了 AttributeError。

为了将列表转换为 InMemoryHistory 对象,您可以使用以下代码:from prompt_toolkit.history import InMemoryHistoryhistory = InMemoryHistory()

for item in your_list_history:    history.append_string(item)其中 your_list_history 是您之前存储历史记录的 Python 列表,history.append_str手机壁纸ing(item) 用于将列表中的每个字符串添加到 history 对象中。

这样,您就可以将转换后的 history 对象传递给 prompt_toolkit.prompt 函数,并使用它来记录用户的输入历史记录。按照提示做适当修改后,成功了,看看效果吧,

完整代码如下,import openaiimport prompt_toolkitimport osfrom prompt_toolkit.history import InMemoryHistory# 配置OpenAI API密钥

openai.api_key = os.environ["OPENAI_API_KEY"]# 设定OpenAI的手机壁纸模型和引擎model_engine = "text-davinci-002"prompt_prefix =

"我: "response_prefix = "AI: "# 定义1个函数,用于向OpenAI API发送请求并返回结果defgenerate_response(prompt):    response = openai.Completion.create(

        engine=model_engine,        prompt=prompt,        max_tokens=1024,        n=1,        stop=None

,        temperature=0.手机壁纸7,    )    message = response.choices[0].textreturn message.strip()# 通过Prompt Toolkit库来实现命令行交互

defprompt_user():# 记录用户历史输入# history = []    history = InMemoryHistory()whileTrue:try:# 读取用户输入的信息            user_input = prompt_toolkit.prompt(prompt_prefix, history=history)

# history.append(user_input)   手机壁纸         history.append_string(user_input)# 将用户输入和历史记录发送给OpenAI API,并返回结果

            prompt = "\n".join(history.get_strings()[:])  # 只向OpenAI API提供最近3个历史输入            response = generate_response(prompt)

# 打印OpenAI API返回的结果            print(response_prefix + response)# 记录历史记录的最新回答            history.append_str手机壁纸ing(response)

except KeyboardInterrupt:# 如果用户按下Ctrl-C,则退出程序            print("\n再见!")break# 运行程序if __name__ == "__main__"

:    prompt_user()参数相关问题接下来我有几个关于参数上的疑惑要问ChatGPT Q: 历史记录1般几条为好? A:历史记录的条数可以根据具体情况来设置1般来说,历史记录应该包含足够的高低文,以使机器人能够理解用户的意图并生成相关的响应,但也没有要太多,以免过于复杂。

在上面的代码中,我设置了历史记录为最近的 3 条输入,这应该已经足够了,因为它手机壁纸包含了高低文并且没有会让历史记录太长如果你发现机器人的回答没有太准确或没有连贯,你可以尝试增加历史记录的条数,或者根据实际情况进行调整。

Q:请解释 openai.Completion.create 函数中每个参数的含义,以及参考值的选择 A:openai.Completion.create 函数是 OpenAI GPT API 顶用于生成文本的次要函数。

上面是各个参数的含义:engine:指定使用哪个 GPT 模型来生成文本,也称作“引擎”在 OpenAI GPT API 中有多种引擎可供选择,每个引擎对应的 GPT 模型的规模和能力没有同例如,"davinci" 引擎对应的 GPT 模型是目前最手机壁纸大和最强大的,而 "curie" 引擎对应的 GPT 模型则较小和速度较快。

在本例中,我使用了 "text-davinci-002" 引擎,因为它是 OpenAI GPT API 中的1个强大模型,可以生成非常流畅和连贯的文本prompt:这是1个文本字符串,表示要传递给 GPT 模型的输入。

在这里,我们将历史记录和用户输入合并成1个字符串,然后将其作为输入传递给 GPT 模型,以便它可以生成相应的响应max_tokens:这是生成文本的最大长度,以标记数量为单位在生成文本时,GPT 模型会逐步生成标记,直到达到指定的最大数量为止。

在本例中,我将 max_tokens 设置为 1024,这手机壁纸是 OpenAI GPT API 的最大值但是,在实际使用中,这个值应该根据具体情况进行设置如果您需要生成较短的文本,则可以将此值设置为更小的数字。

n:这是要生成的响应的数量在本例中,我将 n 设置为 1,表示要生成1个响应如果您需要生成多个响应以供选择,则可以将此值设置为更大的数字stop:这是1个字符串列表,表示当生成文本中包含其中任意1个字符串时,GPT 模型将停止生成文本。

在本例中,我将 stop 参数设置为 None,表示没有使用停止字符串temperature:这是1个用于控制生成文本的“创造性”的参数,其值在 0 到 1 之间较低的温度将导致生成文本较保守和可预测,而较高的温度将导手机壁纸致生成文本更加奇特和出人意料。

在本例中,我将 temperature 设置为 0.7,这是1个适度的值,可以在生成文本时保持1定的创造性和多样性总之,以上参数都是用来控制 OpenAI GPT API 如何生成文本的在实际使用中,您应该根据自己的需求和数据情况来选择适当的参数值。

如果您没有确定应该选择什么值,可以先使用默认参数,并根据实际情况进行调整,直到您得到满意的结果上面1些参考值的选择:engine:如果您需要生成非常流畅和连贯的文本,可以使用 "text-davinci-002" 引擎;如果您需要生成速度更快的文本,则可以使用 "text-curie-001" 引擎。

max_token手机壁纸s:如果您需要生成较短的文本,可以将 max_tokens 设置为更小的数字,例如 64 或 128;如果您需要生成较长的文本,则可以将此值设置为更大的数字,例如 512 或 1024。

n:如果您需要生成多个响应以供选择,则可以将 n 设置为更大的数字,例如 3 或 5;如果您只需要生成1个响应,则可以将此值设置为 1stop:如果您希望生成文本遵循某种特定的主题或方向,可以使用 stop 参数来控制文本的生成。

例如,如果您希望生成关于“狗”的文本,您可以将 stop 参数设置为 ["cat", "animal", "pet"],这将使 GPT 模型生成的文本没有包含这些词temperature手机壁纸:如果您需要生成创新性更高的文本,可以将 temperature 设置为更高的数字,例如 0.8 或 0.9;如果您需要生成较保守和可预测的文本,则可以将此值设置为较低的数字,例如 0.5 或 0.6。

需要注意的是,没有同的参数组合可能会对生成的文本产生没有同的影响,因此建议您多次尝试没有同的参数组合,以找到最适合您需求的组合同时,建议您在使用 OpenAI GPT API 时,遵守 API 的使用规范,以保证数据安全和合法性。

Q: text-davinci-002 和 text-davinci-003 区别 A: text-davinci-002 和 text-davinci-003 都是 Ope手机壁纸nAI GPT 模型的变体,它们在训练数据和模型架构方面略有没有同,具体区别如下:

训练数据:text-davinci-002 使用了比 text-davinci-003 更大的训练数据,前者使用了 570GB 的数据,而后者使用了 175B 的数据这意味着 text-davinci-002 在各种任务中可能会更擅长,因为它看到了更多的例子。

模型架构:text-davinci-002 使用了更大的模型架构,包含 175 亿个参数,而 text-davinci-003 只有 13 亿个参数这意味着 text-davinci-002 具有更强大的计算能力和生成能力,可以更好地完成复杂的任务,但也需手机壁纸要更多的计算资源。

性能:由于 text-davinci-002 的模型规模更大,因此它在生成文本和执行各种任务时可能更快、更准确综上所述,text-davinci-002 在数据和模型方面都比 text-davinci-003 更大更强大,但也需要更多的计算资源和时间来进行训练和推理。

因此,在选择模型时,需要根据具体应用场景的需求来确定总结全程,基本都是我提出简单需求,然后由 ChatGPT 实现,没有论是代码还是理解,只要问题问的合适,它可以表现得比熟练软件工程师还更胜任工作在另外1个尝试,我让 ChatGPT 帮我实现了个基于 Flask 框架的聊天软件, 它实现了 CSS、HTML、Jav手机壁纸aScript 以及 Python 代码。

    看完本文有收获?请转发分享给更多人数据分析星球微信群助理数据分析入门

为您推荐

聊天机器人实现(ChatGPT教我写聊天机器人代码)聊天机器人编写 学会了吗

聊天机器人实现(ChatGPT教我写聊天机器人代码)聊天机器人编写 学会了吗

ChatGPT 火了有些时间,期间我也做了没有少尝试,其中包括使用 OpenAI API 和 Flask 框架写了个交互聊天...

2023-05-22 栏目:科技派
最近发表

当前非电脑浏览器正常宽度,请使用移动设备访问本站!