社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python搭建一个属于自己的智能聊天机器人

Python绿色通道 • 2 年前 • 483 次点击  

如何使用ChatGPT API

近年来,人工智能(AI)的发展日新月异,而聊天机器人(Chatbot)则是AI领域的明星应用之一。

今天,我们将深入浅出地介绍如何使用ChatGPT API,构建属于自己的智能聊天机器人的基础。

一、准备工作

  1. 注册OpenAI账户 要使用ChatGPT API,首先需要在OpenAI官网(https://www.openai.com)上注册一个账户。

完成注册并登录后,通过(https://platform.openai.com/account)申请API密钥(API Key)。

  1. 安装相关依赖 在本地环境中安装Python和OpenAI Python库。使用以下命令安装:
pip install openai

二、使用OpenAI API

  1. 导入库和设置API密钥

在Python脚本中,导入OpenAI库并设置API密钥:

import openai

# 替换为您的API密钥
openai.api_key = "your-api-key"
  1. 调用API

现在可以调用openai模块中的ChatCompletion类来与ChatGPT进行交互。

示例代码:

import openai

# 配置API密钥
openai.api_key = "your-api-key"

# 准备输入消息
messages = [
    {"role""system""content""你是一个 AI 助手,会回答用户关于技术的问题。"},
    {"role""user""content""请解释一下什么是神经网络?"}, # 在content键对应的值中输入问题文本。
]

# 调用 openai.ChatCompletion.create 函数与 GPT 进行交互
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",               # 使用 GPT-3.5 模型
    messages=messages,           # 输入消息列表
    max_tokens=100,              # 限制回复的最大长度
    temperature=0.7,             # 控制回复的随机性
    top_p=0.9,                   # 控制回复时的令牌采样策略
    n=1 ,                         # 生成的独立回复数量
    stop_sequences=["\n"],       # 回复停止生成的字符串列表
)

# 输出生成的回复
generated_reply = response.choices[0].message['content']
print("AI Assistant: ", generated_reply)

openai.ChatCompletion.create 函数用于与 OpenAI 的 ChatGPT 模型进行交互,生成基于输入消息的回复。

这个函数接受多个参数,下面是其中一些关键参数及其作用的简要解释:

  1. model (字符串): 这个参数指定了你希望使用的预训练模型。在这种情况下,你应该使用 GPT-3.5 模型,例如 "gpt-3.5-turbo" 或者其他可用的 GPT-3 模型变种。

  2. messages (列表): 这个参数接受一个包含消息对象的列表。每个消息对象都包含一个 role(字符串,可以是 "system""user""assistant")以及相应的 content(字符串,表示实际消息文本)。这些消息按顺序构成了与模型的对话历史,通常以一个系统消息开始,然后是用户和助手的互动消息。

  • system 消息有助于设置助手的行为。在上面的例子中,助手被指示 “你是一个得力的助手”。
  • user 消息有助于指导助手。就是用户说的话,向助手提的问题。
  • assistant 消息有助于存储先前的回复。这是为了持续对话,提供会话的上下文。
  1. max_tokens (整数,可选): 这个参数用于限制生成回复的最大长度。其值表示生成回复中的最大令牌(token)数量。如果设置得太小,可能导致生成的回复被截断。

  2. temperature (浮点数,可选): 这个参数用于控制生成回复时的随机性。较高的值(如 1.0)会使生成的回复更随机和多样化,而较低的值(如 0.1)会让回复更确定和一致。一般情况下,较低的值更适合生成连贯、一致的回复,而较高的值则有助于激发创意思维。

  3. top_p (浮点数,可选): 这个参数用于控制生成回复时的令牌采样策略。它表示生成回复时,应考虑的最高概率的令牌的累积概率。较高的值(如 0.9)会考虑更多可能的令牌,而较低的值(如 0.5)会使采样范围更窄。调整此参数可以影响生成文本的多样性和质量。

  4. n (整数,可选): 这个参数用于指定要生成的独立回复的数量。例如,如果你想要从模型获得多个不同的回复,可以将 n 设置为大于 1 的值。请注意,生成多个回复可能会增加 API 请求的计算时间和成本。

  5. stop_sequences (列表,可选): 这个参数用于指定一个字符串列表,当生成的回复遇到这些字符串中的任何一个时,回复将停止生成。这可以用来设置自定义的生成边界,以避免生成过长或无关的回复信息。

三、多轮对话示例

以下代码展示了如何实现与ChatGPT的多轮对话:

import openai

# 配置API密钥
openai.api_key = "your-api-key"

def chat_with_gpt(messages):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        max_tokens=1000,
        temperature=0.5,
    )
    resp_content = response['choices'][0]['message' ]['content']
    return resp_content

# 初始化消息列表
messages = [
    {"role""system""content""你是我的编程顾问。"},
    {"role""user""content""你好,ChatGPT!请问你能帮我回答一些问题吗?"}
]

# 进行多轮对话
while True:
    response = chat_with_gpt(messages)
    print(f"ChatGPT: {response}")

    user_input = input("User: ")
    if user_input.lower() in ["exit""退出""再见"]:
        print("ChatGPT: 再见!期待下次与您交流。")
        break
    messages.append({"role""user""content": user_input}) # 添加ChatGPT需要上下文聊天记录。

在上面的代码中,使用一个while循环实现多轮对话。

每次循环中,先调用chat_with_gpt函数获取ChatGPT的回答,并将回答输出。

然后,获取用户输入的下一句话,并将其添加到messages列表中。

如果用户输入"exit""退出""再见",循环将终止,对话结束。

代码运行效果:

ChatGPT: 当然,我很乐意回答你的问题!请问你有什么需要帮助的?
User: 深度学习和机器学习有什么区别?
ChatGPT: 深度学习和机器学习是两个密切相关的领域,但是它们有一些不同之处。

机器学习是一种人工智能的分支,它使用算法和统计模型来让计算机从数据中学习。机器学习算法可以分为监督学习、无监督学习和强化学习。监督学习是指给计算机提供带有标签的数据,让它从中学习,例如分类和回归问题。无监督学习是指给计算机提供没有标签的数据,让它去发现数据中的模式和结构,例如聚类和降维问题。强化学习是指让计算机在与环境互动的过程中学习最优的行为,例如游戏和机器人控制。

深度学习是机器学习的一种特殊形式,它使用深度神经网络来学习数据中的特征和模式。深度神经网络是一种由多个层次组成的神经网络,每一层都可以自动学习数据中的特征,并将其传递给下一层。深度学习可以应用于各种任务,例如图像识别、自然语言处理和语音识别。

因此,机器学习是一个更广泛的概念,而深度学习是机器学习的一个子集,它使用深度神经网络来进行学习。
User: 如果我的训练样本非常大,哪种方式更适合我?
ChatGPT: 深度学习和机器学习都是人工智能领域中的分支,它们有一些相同之处,但也有一些区别。

机器学习是一种通过从数据中学习来完成特定任务的方法。它可以分为监督学习、无监督学习和半监督学习。监督学习需要训练数据和标签,以便为新数据提供正确的标签。无监督学习不需要标签,而是通过发现数据中的模式和结构来学习。半监督学习则是介于两者之间,它使用带标签的数据和未标记的数据进行训练。

深度学习是机器学习的一个分支,它使用神经网络来学习数据的特征。深度学习可以自动学习特征,而不需要手动选择或提取特征。它可以用于许多任务,如图像分类、语音识别和自然语言处理等。

如果训练样本非常大,深度学习可能更适合。深度学习模型可以处理大量的数据,并且可以自动学习特征,从而减少了手动特征提取的工作量。此外,深度学习模型可以使用GPU等硬件加速训练,从而加快训练速度。但是,深度学习模型通常需要更多的计算资源和更长的训 练时间,因此需要考虑计算成本和时间成本。如果数据集较小或任务较简单,则机器学习可能更适合。
User:

四、最后

通过以上的学习,相信你已经学会了如何使用OpenaiAPIGPT进行多轮对话。

当然,实际应用中,还可能需要根据需求调整参数、处理更复杂的场景。

此外,每次调用OpenaiAPI并不是免费的。在进行API请求时,Openai会根据您的账户余额自动扣除相应数量的Token


最后推荐一下我的ChatGPT星球

GPT 的想象力空间还有多大,我们继续拭目以待。


ChatGPT 的风口正到来!作为我们普通人,为了跟上时代,更应该马上行动,真正了解并熟练使用 ChatGPT。未来围绕着 ChatGPT 将会涌现出无数多的机会。我们一定要在这个领域内做点事情。如果在这个新的技术浪潮中,抓住一点点小的机会,那给我们人生带来的改变必然是巨大的! 


我相信有很多人没有 ChatGPT 的账号,或许连注册都不太会。跟着我们一起学习,这些方法我们都会手把手交给你!


目前我们星球 200 多人了,球友们都成功注册了,目前知道的可以通过一些特殊的邮箱和成功注册到 GPT 的账号!你一个人单打独斗玩 GPT 会遇到很多问题,费时费力,需要抱团取暖,才能走的更远!


如果你想快速上手、熟练应用 ChatGPT,获取第一首关于 ChatGPT 的资料,利用 ChatGPT 提升工作效率,获取 ChatGPT 变现机会等。请务必加入知识星球:ChatGPT 研究院。今天加入星球的小伙伴,直接送 ChatGPT 独立账户(数量有限)


所以如果你真的感兴趣,一定建议这个阶段加入,我们特别推荐加入知识星球72小时内如果不满意,可以无理由退出,然后款项原路返回,你也没损失.


入球福利:


考虑到很多小伙伴搞不定 ChatGPT 账号的问题,我们决定,凡是今天加入 ChatPGT  研究院的小伙伴,我们都会直接送一个 ChatGPT 独立账户。


这个星球能够为你提供什么服务呢?


1、ChatGPT 基础用法:账号注册、使用教程、基本玩法、提问技巧。


2、ChatGPT 前沿资讯、第一首资料、开源项目。


3、交流共享 ChatGPT 的各种信息,资源互换,答疑关于 ChatGPT 的问题。


4、分享如何利用 ChatGPT 提升工作效率,分享变现机会。


5、凡是今天加入星球都有一项重磅福利:免费获得 ChatGPT 独立账号一个。


我们第一期的定价是 198 元一年,这两天星球在试运营阶段,我们给出了加入的最低价 158,后面随着星球人数的增长,星球费用也会随之增长(破 1000 人涨价 10 元)。建议大家尽早以便宜的价格加入哦!


感兴趣的朋友们,欢迎扫码加入本星球:


机不可失失不再来!希望大家能在 2023 年抓住 ChatGPT 的风口,持续进步!


最后,无论是否加入,点击下方名片回复“chatgpt”送您一套ChatGPT入门资料



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/155705
 
483 次点击