您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

创建你的第一个使用 OpenAI ChatGPT API 的程序

时间:2023-06-01 14:09:20  来源:微信公众号  作者: Linux中国

易于使用的 AIChatGPT” 已经以 API 提供。ChatGPT 的创造者 OpenAI 宣布,模型('gpt-3.5-turbo')现在适用于自定义产品和解决方案。而且成本也非常实惠。目前的价格为每 1000 个令牌 0.002 美元。

该模型目前与 Whisper API 一起提供,后者也用于文本到语音解决方案。该 API 目前具备以下功能:

  • 创建自定义的对话代理和机器人
  • 为你编写 Python/ target=_blank class=infotextkey>Python 代码
  • 起草电子邮件或任何你想要的文档
  • 你可以将自然语言界面集成到你当前的产品/应用/服务或软件中,为你的消费者提供服务
  • 语言翻译服务
  • 成为许多科目的导师
  • 模拟视频游戏角色

正如你所见,机会无限。

如果你计划尝试该 API 并开始使用它,这里有一个简单的指南,为你提供逐步指导。

OpenAI ChatGPT API: 入门指南

先决条件

确保你拥有一个 OpenAI 账户。如果你没有,访问此页面 并创建一个账户。你也可以使用你的谷歌或微软账号。

创建一个账户后,生成一个专属于你的 API 密钥。访问 此页面 并创建一个新的秘密密钥。

创建 OpenAI API 密钥的位置

创建 OpenAI API 密钥的位置

记录该密钥或在安全的地方保存它。基于安全原因,它将不会从 OpenAI 账户部分再次可见。而且不要与任何人分享此密钥。如果你计划使用企业解决方案,请向你的组织查询 API 密钥。由于该密钥与你的付费 OpenAI 计划相关,因此请谨慎使用。

设置环境

安装 Python 和 pip

本指南使用 Python 编程语言来调用 OpenAI API 密钥。你可以使用 JAVA 或其他任何语言来调用它。

首先,请确保你在 linuxwindows 中已经安装了 Python。如果没有,请按照以下指南安装 Python。如果你使用现代 Linux 发行版(例如 Ubuntu),Python 应该已经安装好了。

在安装 Python 后,确保 pip 在 Linux 发行版中可用。运行以下命令进行安装。对于 Windows,你应该已经在 Python 安装的一部分中安装了它。

Ubuntu、Debian 和其他基于 Debian 的发行版:

sudo apt install python3-pip

Fedora、RHEL、centos 等:

sudo dnf install python3-pip

Arch Linux:

sudo pacman -S python-pip

将 OpenAI API 密钥设置为环境变量

上述步骤中创建的 API 密钥,你可以直接在程序中使用。但这并不是最佳实践。

最佳实践是从文件或你系统的环境变量中调用它。

对于 Windows,请设置一个任何名字的环境变量,例如 API-KEY。并添加密钥值。

对于 Linux,请使用超级用户权限打开 /etc/environment 文件并添加密钥。例如:

API-KEY="<你的密钥>"

对于基于文件的密钥访问,请在你的代码中使用以下语句:

openai.api_key_path = <你的 API 密钥路径>

对于直接在代码中访问(不建议),你可以在你的代码中使用以下语句:

openai.api_key = "你的密钥"

注意:如果验证失败,OpenAI API 将抛出以下错误。你需要验证你的密钥值、路径和其他参数以进行更正:openai.error.AuthenticationError: No API key provided

安装 OpenAI API

最后一步是安装 OpenAI 的 Python 库。打开终端或命令窗口,使用以下命令安装 OpenAI API。

pip install openai

在此阶段,你已经准备好撰写你的第一个程序了!

编写助手程序(逐步)

OpenAI API 提供了各种接口模式。例如“聊天补完”、“代码补完”、“图像生成”等。在本指南中,我将使用 API 的“聊天补完”功能。使用此功能,我们可以创建一个简单的对话聊天机器人。

首先,你需要导入 OpenAI 库。你可以使用以下语句在你的 Python 程序中完成:

import openai

在这个语句之后,你应该确保启用你的 API 密钥。你可以使用上面解释的任何方法来完成。

openai.api_key="your key here"
openai.api_key="your environment variable"
openai.api_key_path = <your path to API key>

OpenAI 聊天 API 的基本功能如下所示。openai.ChatCompletion.create 函数以 JSON 格式接受多个参数。这些参数的形式是 “角色”(role) 和 “内容”(content):

openai.ChatCompletion.create(   
  model = "gpt-3.5-turbo",   
  messages = [         
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who won the world series in 2020?"},
    {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
    {"role": "user", "content": "Where was it played?"}     
  ]
)

说明:

role: 有效的值为 systemuserassistant

  • system: 指示 API 如何行动。基本上,它是 OpenAI 的主提示。
  • user: 你要问的问题。这是单个或多个会话中的用户输入。它可以是多行文本。
  • assistant: 当你编写对话时,你需要使用此角色来添加响应。这样,API 就会记住讨论的内容。

注意:在一个单一的消息中,你可以发送多个角色。如上述代码片段所示的行为、你的问题和历史记录。

让我们定义一个数组来保存 OpenAI 的完整消息。然后向用户展示提示并接受 system 指令。

messages = []
system_message = input("What type of chatbot you want me to be?")
messages.Append({"role":"system","content":system_message})

一旦设置好了,再次提示用户进行关于对话的进一步提问。你可以使用 Python 的 input 函数(或任何其他文件输入方法),并为角色 user 设置 content

print("Alright! I am ready to be your friendly chatbot" + "n" + "You can now type your messages.")
message = input("")
messages.append({"role":"user","content": message})

现在,你已经准备好了具有基本 JSON 输入的数组,用于调用“聊天补完”服务的 create 函数。

response=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=messages)

现在,你可以对其进行适当的格式化,要么打印响应,要么解析响应。响应是以 JSON 格式提供的。输出响应提供了 choices 数组。响应在 message JSON 对象下提供,其中包括 content 值。

对于此示例,我们可以读取 choices 数组中的第一个对象并读取其 content

reply = response["choices"][0]["message"]["content"]
print(reply)

最后,它将为你提供来自 API 的输出。

运行代码

你可以从你的 喜好的 Python IDE 或直接从命令行运行代码。

python OpenAIDemo2.py

未格式化的 JSON 输出

以下是使用未格式化的 JSON 输出运行上述程序供你参考。正如你所看到的,响应在 choices 数组下具有 content

[debugpoint@fedora python]$ python OpenAIDemo2.py
What type of chatbot you want me to be?a friendly friend
Alright! I am ready to be your friendly chatbot
You can now type your messages.
what do you think about kindness?
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "As an AI language model, I don't have personal opinions, but I can tell you that kindness is a very positive and essential trait to have. Kindness is about being considerate and compassionate towards others, which creates positive emotions and reduces negativity. People who are kind towards others are more likely to inspire kindness and compassion in return. It is an important quality that helps to build positive relationships, promote cooperation, and create a more peaceful world.",
        "role": "assistant"
      }
    }
  ],
  "created": <removed>,
  "id": "chatcmpl-<removed>",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 91,
    "prompt_tokens": 22,
    "total_tokens": 113
  }
}

格式化的输出

这是一个适当的对话式输出。

[debugpoint@fedora python]$ python OpenAIDemo2.py
What type of chatbot you want me to be?a friendly friend
Alright! I am ready to be your friendly chatbot
You can now type your messages.
what do you think about artificial general intelligence?
 
As an AI language model, I am programmed to be neutral and not have personal opinions. However, artificial general intelligence (AGI) is a fascinating field of study. AGI refers to the development of machines and algorithms that can perform any intellectual task that a human being can. The potential benefits and risks of AGI are still widely debated, with some experts worried about the implications of machines reaching human-like intelligence. However, many believe that AGI has the potential to revolutionize fields such as healthcare, education, and transportation. The key is to ensure that AGI is developed in a responsible and ethical manner.

完整代码

这是上面演示中使用的完整代码。

import openai
openai.api_key = "<your key>"
messages = []
system_message = input("What type of chatbot you want me to be?")
messages.append({"role":"system","content":system_message})
print("Alright! I am ready to be your friendly chatbot" + "n" + "You can now type your messages.")
message = input("")
messages.append({"role":"user","content": message})
response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=messages
)
reply = response["choices"][0]["message"]["content"]
print(reply)

总结

希望这篇简单的指南能让你开始尝试 OpenAI CharGPT API。你可以将上述步骤扩展到更复杂的会话式聊天机器人。此外,你还可以使用 OpenAI 的其他产品。

请不要错过我后续的教程,我将会实验和分享给大家。最后,请不要忘记关注我们,以便及时获取我们的文章。

如果上述步骤对你有帮助,请在评论框中告诉我。

干杯!



Tags:ChatGPT API   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
如何在Python中使用ChatGPT API处理实时数据
译者 | 李睿审校 | 重楼OpenAI公司推出的GPT如今已经成为全球最重要的人工智能工具,并精通基于其训练数据处理查询。但是,它不能回答未知话题的问题,例如: 2021年9月之后的近期...【详细内容】
2023-12-13  Search: ChatGPT API  点击:(229)  评论:(0)  加入收藏
创建你的第一个使用 OpenAI ChatGPT API 的程序
易于使用的 AI “ChatGPT” 已经以 API 提供。ChatGPT 的创造者 OpenAI 宣布,模型(&#39;gpt-3.5-turbo&#39;)现在适用于自定义产品和解决方案。而且成本也非常实惠。目前的价格...【详细内容】
2023-06-01  Search: ChatGPT API  点击:(320)  评论:(0)  加入收藏
c++调用chatgpt api
要在 C++ 中调用 ChatGPT API,您可以使用以下步骤: 首先,安装 C++ 的 HTTP 客户端库,例如 libcurl 或者 Poco。 创建一个 HTTP 客户端实例,以便向 OpenAI API 发送 HTTP 请求。 ...【详细内容】
2023-05-29  Search: ChatGPT API  点击:(328)  评论:(0)  加入收藏
ChatGPT API 提示指南和优秀实践
了解云原生 JuiceFS 如何赋能量化对冲基金以增强 AI 训练并在云端实现弹性吞吐。这不是编程或 ChatGPT API 集成教程,这些是使用 ChatGPT API 时需要牢记的一些关键思想和要...【详细内容】
2023-05-21  Search: ChatGPT API  点击:(492)  评论:(0)  加入收藏
OpenAI 正式宣布为第三方开发者开放 ChatGPT API
站长之家(ChinaZ.com) 3月2日消息:OpenAI宣布,它现在允许第三方开发者通过API将ChatGPT整合到他们的应用程序和服务中,这样做将比使用其现有的语言模型要便宜得多。OpenAI表示...【详细内容】
2023-03-03  Search: ChatGPT API  点击:(138)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(6)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条