学会开发自己的Python AI应用【OpenAI API篇】

news2024/11/18 21:24:51

最近 OpenAI 宣布 ChatGPT 将很快推出他们的 API。虽然我们不知道这需要多长时间,但这之前我们可以熟悉下OpenAI API,快速开发自己的AI应用!

通过今天学习 OpenAI API,你将能够访问 OpenAI 的强大模型,例如用于自然语言的 GPT-3、用于将自然语言翻译为代码的 Codex 以及用于创建和编辑原始图像的 DALL-E。

这篇文章的例子将用Pyhon编写。

生成 API 密钥

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

这里要注意,OpenAI 不会在生成 API 密钥后再次显示它,因此请及时复制你的 API 密钥并保存。我将创建一个名为 OPENAI_API_KEY 的环境变量,它将包含我的 API 密钥并将在下一节中使用。

使用 Python接入 OpenAI API

要与 OpenAI API 交互,我们需要通过运行以下命令来安装官方OpenAI包。

pip install openai

我们可以用这个 API 做很多事情。 在本文中,我们将分别完成文字、代码和图像的生成。

1.文本生成

文本生成可用于文字鉴别、文本生成、自动对话、转换、摘要等。要使用它,我们必须使用completion endpoint并为模型提供触发指令,然后模型将生成匹配上下文/模式的文本。

假设我们要对以下文本进行鉴别,我们向AI输入指令(中英文都可以):

判断以下Mike的发言情绪是正面、中立还是负面:
Mike:我不喜欢做作业!
Sentiment:

以下就是用到的代码:

import os import openai
openai.api_key = os.getenv("OPENAI_API_KEY") prompt =  """
Decide whether a Mike's sentiment is positive, neutral, or negative.

Mike: I don't like homework!
Sentiment:
""" 
response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=100, temperature=0  )  print(response)

根据 OpenAI 文档,GPT-3 模型是与文本生成的endpoint一起使用。 这就是我们在此示例中使用模型 text-davinci-003 的原因。

以下是返回值的部分打印:

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "text": "Negative"
    }
  ],
...
}

在此示例中,推文的情绪被归类为负面Negative。

让我们看一下这个例子中使用的参数:

model :要使用的模型的 ID(在这里你可以看到所有可用的模型)

Prompt:生成结果的触发指令

max_token:完成时生成的最大token数量(这里可以看到OpenAI使用的tokenizer)

temperature:要使用的采样策略。 接近 1 的值会给模型带来更多风险/创造力,而接近 0 的值会生成明确定义的答案。

2. 代码生成

代码生成与文本生成类似,但这里我们使用 Codex 模型来理解和生成代码。

Codex 模型系列是经过自然语言和数十亿行代码训练的 GPT-3 系列的后代。 借助 Codex,我们可以将注释转化为代码、重写代码以提高效率等等。

让我们使用模型 code-davinci-002 和下面的触发指令生成 Python 代码。

代码生成一个序列,内容包含上海的温度。
import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
  model="code-davinci-002",
  prompt="\"\"\"\nCreate an array of weather temperatures for Shanghai\n\"\"\"",
  temperature=0,
  max_tokens=256,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)

print(response)

以下是返回值的部分打印:

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "text": "\n\nimport numpy as np\n\ndef create_temperatures(n):\n    \"\"\"\n    Create an array of weather temperatures for Shanghai\n    \"\"\"\n    temperatures = np.random.uniform(low=14.0, high=20.0, size=n)\n    return temperatures"
    }
  ],
...
  }
}

把text部分重新显示格式化一下,你就会看到规整的代码生成了:

import numpy as np

def create_temperatures(n):
    temperatures = np.random.uniform(low=14.0, high=20.0, size=n)
    return temperatures

如果想开发更多,我建议你在 Playground 中测试 Codex(这里有一些帮助你入门的示例)

3. 图像生成

我们可以使用 DALL-E 模型生成图像,我们使用图像生成endpoint并提供文本指令。

以下是我的测试指令(我们在指令中提供的细节越多,我们就越有可能获得我们想要的结果)。

一只毛茸茸的蓝眼睛白猫坐在花篮里,可爱地抬头看着镜头
import openai

response = openai.Image.create(
  prompt="A fluffy white cat with blue eyes sitting in a basket of flowers, looking up adorably at the camera",
  n=1,
  size="1024x1024"
)
image_url = response['data'][0]['url']
print(image_url)

以下是我得到的图片:

当然更有趣的是,还可以使用image edits and image variations endpoints编辑图像并生成原图像的调整。

好了,这篇文章就到这里,希望能激发你的创造力,更多OpenAI API的使用请参考官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态生成复选框列表弹性盒子

效果图 1.准备一块盒子区域 id“checkBoxList” 为例 //样式的简单介绍 style{ overflow:scroll; //让超出div 内容在div区域内以滚动条形式呈现 display: flex; //搞一个弹性盒子容器 flex-wrap: wrap;align-content: flex-start; // 文本对齐方式 这里是上下元素的内容对齐…

【论文Word排版】使用多级列表设置论文序号

在Word中对论文进行排版 1.设置章节前面的序号 1.1 需求 通常情况下要求如下 一级标题“第一章 XXX”,然后是“1.1 研究意义”, “1.2 研究现状” 之前的处理方式都是手打,并没有借助word的多级列表实现。这次趁着写毕业论文研究了一下。…

虹科案例 | Redis企业版数据库帮助金融机构满足客户需求

传统银行无法提供无缝的全渠道客户体验、无法实时检测欺诈、无法获得业务洞察力、用户体验感较差、品牌声誉受损和业务损失?虹科提供的Redis企业版具有低延迟、高吞吐和高可用性特征,使用Redis企业版数据库,金融机构可以实现即时的客户体验、…

搭建Hexo博客-第3章-Markdown语言介绍及编辑博客

搭建Hexo博客-第3章-Markdown语言介绍及编辑博客 搭建Hexo博客-第3章-Markdown语言介绍及编辑博客 搭建Hexo博客-第3章-Markdown语言介绍及编辑博客 大家好,如果你按照上一篇文章的内容安装并部署了博客,那么现在在你的主页上应该有一篇 Hello World&…

工业上为什么要使用Io-Link?

工业上为什么要使用Io-Link?IO-Link是一种通讯技术,可以把传统的硬件从单纯的输入输出转变为可配置、可编程的网络设备。它可以大大减少有线连接,改善机器人控制和过程控制系统的可读性和可维护性,实现智能化的装置。使用IO-Link可…

科技云报道:2023,云计算的风向变了

科技云报道原创。 2022,是云计算的“分水岭”之年。 与前两年的火热相比,2022年云计算行业实属不太好过:阿里云一季度营收增速创出历史新低,腾讯云的市场份额也被后来者华为云反超,沦为第三。 在此情形下&#xff0c…

rabbitmq菜鸟教程,搭建rabbitmq

一、前言RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,即需要先安装部署Erlang环境再安装RabbitMQ环境。需加注意的是,读者若不想跟着我的版本号下载安装,可根据两者版本号的对应表(下面图示只展示了部分&#xf…

Git(GitHub,Gitee 码云,GitLab)详细讲解

目录第一章 Git 概述1.1 何为版本控制1.2 为什么需要版本控制1.3 版本控制工具1.4 Git 简史1.5 Git 工作机制1.6 Git 和代码托管中心第二章 Git 安装第三章 Git 常用命令3.1 设置用户签名3.2 初始化本地库3.3 查看本地库状态3.3.1 首次查看(工作区没有任何文件&…

2023年美赛ICM问题E:光污染 这题很好做啊!

2023年美赛ICM问题E:光污染 这题很好做啊!![在这里插入图片描述](https://img-blog.csdnimg.cn/e918cc6fc9214b53bf4859063bfe56b0.png#pic_center) 我看到DS数模的分析,看似头头是道,实则GouPi不通,我出一个,用于大家…

分享5款办公必备的轻量级软件

今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。 1.PPT演示软件——Prezi Prezi是一种主要通过缩放动作和快捷动作使想法更加生动有趣的演示文稿软件。它打破了传统 Powerpoint的单线…

JavaEE——MyBatis将查询结果集封装进POJO实体类

简单介绍 在之前的我们比较详细的介绍过MyBatis的配置信息的时候,在SQL映射文件中说过我们可以直接将结果集映射到我们的POJO实体类中,省去了我们自己处理查询结果集的时间和代码,接下来我们就来演示将单条数据和多条数据映射到我们POJO实体…

java面试题-阿里真题详解

前言 大家好,我是局外人一枚,最近有不少粉丝去阿里巴巴面试了,回来之后总结不少难题给我,以下是面试的真题,跟大家一起来讨论怎么回答。 阿里一面 1、说⼀下ArrayList和LinkedList区别 ⾸先,他们的底层数…

CSA《企业架构参考指南》实现安全、效率和运营,最佳实践指南!

企业数字化安全转型面临着信息系统架构的选择、判断和组合的困扰。对组织、技术、人才、管理和业务模型等多方面的有机融合和运转构成了架构,而安全是架构高效发挥的基础,二者都是竞争力。 国际云安全联盟CSA发布报告《企业架构参考指南》是国外大型企业…

【Windows】使用Fiddler 工具对手机进行接口监听

目录 工具下载 配置Fidder 手机端获取证书 过滤指定接口 工具下载 CSDN下载地址 其他下载地址 配置Fidder 安装后,打开进入如下界面 在fiddler菜单项选择Tools -> Options -> HTTPS 勾选【Decrypt HTTPS traffic 】 下拉框默认:【from al…

C++复习笔记11

1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被…

时隔多年再学习Vuex,什么?原来如此简单!

时隔多年再学习Vuex,什么?原来如此简单! start 写 Vue 写了好多年了,少不了和 Vuex 打交道。虽然使用它的次数非常频繁,但是潜意识里总觉得这东西很难,导致遇到与之相关的问题就容易慌张。时至今日,升级版…

CDH 6.3.2 升级Hive 2.3.9

升级背景 DolphinScheduler 3.1.1安装好后,其源码中集成的是Hive 2.1.1,版本太低,当在数据中心连接Hive数据源时报错,所以升级CDH自带的Hive为2.3.9版本。 一、准备工作 1、下载hive2.3.9并解压 下载地址:http://a…

世界前沿3D开发工具HOOPS 2023震撼发布,核心功能再升级

HOOPS SDK简介 HOOPS SDK是全球领先开发商TechSoft 3D旗下的原生产品,专注于Web端、桌面端、移动端3D工程应用程序的开发。长期以来,HOOPS通过卓越的3D技术,帮助全球600多家知名客户推动3D软件创新,这些客户包括SolidWorks、SIEM…

springboot+vue学生考勤请假管理系统

管理员: 系统用户管理:针对系统的管理员用户, 系统用户的基本信息情况,进行管理。 教师管理:可以对教师权限的用户信息进行管理。并且能过实现教师信息的查看,密码修改等。 学生管理:对学生用户…

Unreal Engine06:Actor的实现

写在前面 Actor是可以放进地图的最基本类,这里主要是介绍一下Actor的使用。 一、空间坐标系 1. Actor的变换操作 Actor的变换变换操作主要包括四个部分: 位置;旋转;缩放; 上面三者都是对应三个轴进行变换&#xff1…