您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-25
后台-插件-广告管理-内容页头部广告(手机)

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

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

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

生成 API 密钥

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

%20

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

%20

使用%20Python接入%20OpenAI%20API

%20

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

%20 pip%20install%20openai
  • 1

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

%20

1.文本生成

%20

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

%20

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

%20 %20 %20

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

%20 %20

以下就是用到的代码:

%20 ini import%20os%20import%20openai openai.api_key%20=%20os.getenv("OPENAI_API_KEY")%20prompt%20=%20%20""" Decide%20whether%20a%20Mike's%20sentiment%20is%20positive,%20neutral,%20or%20negative. Mike:%20I%20don't%20like%20homework! Sentiment: """%20 response%20=%20openai.Completion.create(%20model="text-davinci-003",%20prompt=prompt,%20max_tokens=100,%20temperature=0%20%20)%20%20print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

%20

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

%20 json { %20%20"choices":%20[ %20%20%20%20{ %20%20%20%20%20%20"finish_reason":%20"stop", %20%20%20%20%20%20"index":%200, %20%20%20%20%20%20"logprobs":%20null, %20%20%20%20%20%20"text":%20"Negative" %20%20%20%20} %20%20], ... }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

%20

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

%20

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

%20

Prompt:生成结果的触发指令

%20

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

%20

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

%20

2.%20代码生成

%20

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

%20

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

%20

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

%20 %20 %20

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

%20 %20 ini import%20os import%20openai openai.api_key%20=%20os.getenv("OPENAI_API_KEY") response%20=%20openai.Completion.create( %20%20model="code-davinci-002", %20%20prompt=""""\nCreate%20an%20array%20of%20weather%20temperatures%20for%20Shanghai\n"""", %20%20temperature=0, %20%20max_tokens=256, %20%20top_p=1, %20%20frequency_penalty=0, %20%20presence_penalty=0 ) print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

swift { "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" } ], ... } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

arduino import numpy as np def create_temperatures(n): temperatures = np.random.uniform(low=14.0, high=20.0, size=n) return temperatures
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

3. 图像生成

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

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

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

ini 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

以下是我得到的图片:

%20

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

%20

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

%20

Python%20的迅速崛起对整个行业来说都是极其有利的%20,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

%20

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

%20

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索