使用 Python 的ChatGPT API 的简单指南

2023-11-07

OpenAI 刚刚发布了 ChatGPT API.这是一个调用 GPT-3.5-Turbo 的 API,与 ChatGPT 产品中使用的模型相同。

对于那些已经熟悉 Python 中的 OpenAI API 的人来说,学习如何使用 ChatGPT API 应该很简单,但仍有一些概念是该 API 独有的,我们将在本指南中学习。

让我们探索 Python 中的 ChatGPT API.

注意:API定价为每1K代币0.002美元。不过,你可以免费使用信用卡。现在我似乎有了另一个理由 取消我的ChatGPT Plus订阅.

生成你的 API 密钥

在我们开始使用 ChatGPT API 之前,我们需要登录我们的 OpenAI 帐户和生成我们的API密钥。

 

请记住,OpenAI 不会在你生成 API 密钥后再次显示它,因此请复制你的 API 密钥并保存它。我将创建一个名为OPENAI_API_KEY的环境变量,它将包含我在本教程中的 API 密钥。

安装库

要使用 ChatGPT API,首先,我们必须通过运行以下命令来安装 OpenAI 库。

pip install openai

你可以使用 OpenAI 库,今天我们将重点关注完成gpt-3.5-turbo。更准确地说,我们将使用“ChatCompletion”gpt-3.5-turbo,它与 ChatGPT 使用的模型相同。

使用 Python 的 ChatGPT API 入门

首先,我们将使用下面我从官方文档中获得的代码片段。

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Tell the world about the ChatGPT API in the style of a pirate."}

print(completion.choices[0].message.content)

这是与 API 交互的一种非常简单的方式。要知道的主要一点是,该messages列表有一个包含两个键的字典:rolescontent

简单地说content就是消息的内容,主要roles有三种:“系统”、“用户”或“助手”。“用户”是给出指令并在上面的代码中使用的人。

如果我们运行上面的代码,我们将得到以下结果。

Ahoy matey, ye be lookin' for a chat API that'll blow ye away? Look no further than ChatGPT API ye ol' sea dog!

这与 ChatGPT “以web的方式向世界介绍 ChatGPT API ”功能是一样的。

 

现在,我们从文档中获取的代码片段是非常基本的,我们可以添加更多的代码来与 API 交互,就像我们在与 ChatGPT 聊天一样。此外,我们还应该添加用于设置助手行为的system角色和用于存储先前响应的assistant角色。

管理员角色

让我们添加一个系统角色来设置助手的行为。你可以告诉助理是一个“将英语翻译成法语的有用助理”或任何你想要的东西。

为了简单起见,我将通过消息列表将系统角色设置为“友好的助手”(我让 ChatGPT 在工作面试中表现为招聘人员)。

messages = [
{"role": "system", "content" : "You’re a kind helpful assistant"}

现在,我将把角色附加users到前面的列表中,并添加输入函数,以便与 API 交互,就像我们在使用 ChatGPT 一样。

import openai
content = input("User: ")
messages.append({"role": "user", "content": content})
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages

chat_response = completion.choices[0].message.content
print(f'ChatGPT: {chat_response}')

现在,如果我们问“谁是第一个登上月球的人?”,系统就会表现得像一个“有用的助手,告诉我们答案”。

User:who was the first man on the moon?
ChatGPT:The first man on the moon was Neil Armstrong on July 20,1969.

不过只有一个小细节。assistant没有存储以前的响应,因此系统可能不会记住我们以前的响应并给出正确的响应。

让我们现在问“他来自哪里?”然后“他有多高?”我现在将添加一个 while 循环来问多个问题。

 

正如你所看到的,现在系统正在回答每个新问题,但它正在从以前的答复中积累信息。

我们可以用assistant角色来解决这个问题。

助理角色

我们使用助理角色来存储先前的响应。通过存储以前的响应,我们可以建立对话历史记录,当用户指令引用以前的消息时,对话历史记录就会派上用场。

使用下面的代码,我们将助理角色添加到消息列表中。

messages.append({"role": "assistant", "content": chat_response})

请注意,在内容中,我们必须添加聊天响应,以便存储响应。

现在,我们将上一行代码添加到 while 循环中。

import openai
while True:
content = input("User: ")
messages.append({"role": "user", "content": content})
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages

chat_response = completion.choices[0].message.content
print(f'ChatGPT: {chat_response}')
messages.append({"role": "assistant", "content": chat_response})

现在,如果我们问之前问过的问题,我们会得到更好的回答。

 

就是这样!现在你知道如何使用这 3 个角色,你可以使用你想要的 API.除了请求主体中的模型和消息之外,你还可以添加其他参数来定制你的请求。

以下是一些额外的参数:

  • max_token:在完成中生成的最大标记数(here你可以看到 OpenAI 使用的提交数)

  • temperature:要使用的取样比例。接近 1 的值将给模型带来更多的风险/创造性,而接近 0 的值将产生定义明确的答案。

  • n:为每个输入消息生成的聊天完成选项的数量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 的ChatGPT API 的简单指南 的相关文章

随机推荐

  • GBN,SR,TCP区别

    GBN 回退N go back N 如果某个报文段没有被正确的接收 那么从这个报文段到后面的报文段都要重新发送 返回的ACK采用剋及确认的机制 也就是说如果GBN返回的ACK 3 也就是说3报文段和3 之前的报文段都被正确地接收了 SR 接
  • 基于Vue3实现鼠标按下某个元素进行拖动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能

    前言 其原理主要是利用JavaScript中的鼠标事件来控制CSS样式 大致就是监听某个DOM元素的鼠标按下事件 以及按下之后的移动事件和松开事件 在鼠标按下且移动过程中 可实时获得鼠标的X轴坐标的值 通过简单计算 可计算出目标元素的宽度
  • uboot-链接脚本(u-boot.lds)

    学习目标 uboot链接脚本分析 学习内容 学习使用了正点原子的I MX6ULL教程及开发平台 uboot的链接脚本u boot lds u boot map 学习时间 2022 07 17 学习产出 分析uboot的启动流程之前 首先要找
  • npm install 报错 ERR! network ‘proxy‘ config is set properly. See: ‘npm help config‘

    想用npm创建项目 但是突然报了个问题 问题 使用 npm install 初始化项目依赖失败 报错 proxy config is set properly See npm help config npm WARN registry Un
  • 多行同时编辑(idea)

    同时按住 Ctrl Shift Alt 点击要编辑的地方就可以同时编辑了
  • stm32图像识别分类技术,陈老师简单为你阐述一下

    STM32图像分类 前言 可能有的同学会有疑问 STM32 能做图像分类这么复杂的事情吗 嵌入式系统中视觉技术的迅速普及 推动了用于汽车安全 机器视觉和运动分析的超高速成像攻克方案 相应地 通过更壮大的图像传感器和更小的像素体系构造 能够显
  • 学习Java面向对象编程和设计模式最好的5本书

    对于任何一个Java开发人员来说 必须学会面向对象的设计原则和各种设计模式的知识 但有一些关于面向对象设计原则 设计模式和最佳实践的书籍 只有少数几本书能做到真正在讲解这方面内容 设计原则和设计模式 设计原则是基础 设计模式是基于这个基础的
  • OAuth2.0 授权模式,基于HttpClient 实现

    功能代码如下 package com zzg ucas config import java io IOException import org apache http HttpResponse import org apache http
  • TP5.0: 显示错误信息

    在TP5中 我们运行的代码有错误无法执行时 只显示页面错误 而不显示错误信息 对我我来讲是无法接受滴 毕竟我还是个小渣渣 查看了百度 解决方案是 在application config php中找到 我们把false改成true即可 然后我
  • CUDA Samples: heat conduction(模拟热传导)

    以下CUDA sample是分别用C 和CUDA实现的模拟热传导生成的图像 并对其中使用到的CUDA函数进行了解说 code参考了 GPU高性能编程CUDA实战 一书的第七章 各个文件内容如下 funset cpp include funs
  • 【计算机视觉

    文章目录 一 分割 语义相关 12篇 1 1 MeViS A Large scale Benchmark for Video Segmentation with Motion Expressions 1 2 Likelihood Based
  • SCAU-OJ教材习题

    第三章 1 分期还款 加强版 从银行贷款金额为d 准备每月还款额为p 月利率为r 请编写程序输入这三个数值 计算并输出多少个月能够还清贷款 输出时保留1位小数 如果无法还清 请输出 God 计算公式如下 输入格式 三个数 分别为货款金额 每
  • 史上最全的Websocket入门教程

    websocket简介 websocket是什么 答 它是一种网络通信协议 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 为什么需要websocket 疑问 我们已经有了 HTTP 协议 为什么还需要另一个协议
  • 【力扣】96. 不同的二叉搜索树 <动态规划>

    力扣 96 不同的二叉搜索树 给你一个整数 n 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种 返回满足题意的二叉搜索树的种数 示例 1 输入 n 3 输出 5 示例 2 输入 n 1 输出 1 提示 1 l
  • Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!

    1 Lombok 使用演示 Lombok 使 同时使 Data 和 Builder 构建无参构造器报错 编译不通过 如下图 Lombok 使 Data 可以自动 成 参构造和类 所有属性的 getter setter 法 可以简化我们代码的
  • 【Matlab显示空间不足 help memory——已解决 + Matlab上保存的数据太大,导致保存的数据显示只有1KB——已解决】

    Matlab显示空间不足 help memory 已解决 Matlab上保存的数据太大 导致保存的数据显示只有1KB 已解决 问题描述 问题一 方案一 问题一 方案二 问题二 方案 问题描述 1 当处理一些matlab矩阵数据时会出现一些错
  • Flutter LayoutBuilder组件

    文章目录 Flutter LayoutBuilder组件 简书 使用 Flutter LayoutBuilder组件 简书 可以借助LayoutBuilder组件根据不同的屏幕尺寸显示不同的效果 如竖屏和横屏显示的样式不一样 屏幕尺寸介绍
  • 数据分析之非参数检验与二元逻辑回归结果不一致的原因

    在对两组数据进行非参数检验时 各项属性间无统计学差异 但以分类变量作为因变量使用二元逻辑回归进行分析时 其中存在属性p值小于0 05 即该变量对因变量的影响具有显著性 导致该情况的原因 可能是由于两个检验方法所用的假设和检验策略不同所致 非
  • 菜鸟电子面单打印

    一 首先开通电子面单服务 然后自己编辑一个模板 地址 https cloudprint cainiao com print 提示 这里不再详细说明 网上随便找了一个模板地址 如果不会 下面我会提供一个 没有关系 二 需要一台打印机 我的打印
  • 使用 Python 的ChatGPT API 的简单指南

    OpenAI 刚刚发布了 ChatGPT API 这是一个调用 GPT 3 5 Turbo 的 API 与 ChatGPT 产品中使用的模型相同 对于那些已经熟悉 Python 中的 OpenAI API 的人来说 学习如何使用 ChatG