随着人工智能技术的迅速发展,越来越多的大模型被研发出来,这些模型具有强大的功能,其中代表性的GPT就是一种强大的大语言模型。而想要从零开始实现这种大模型,需要大量的成本。好在OpenAI提供了可以访问GPT模型的API,借助 OpenAI API,开发人员可以快速集成先进的自然语言处理功能,以开发更多创新且实用的应用。接下来本文将主要讲解OpenAI API的调用方法。✨✨
欢迎各位关注我的公众号!分享有趣的知识!
一.准备
OpenAI API的KEY可以去官网的OpenAI控制台创建并获取。然而,可能由于网络问题不能访问官网的API,所以也可以使用中转API Key。
由于KEY(密钥)是访问数据和服务的凭证,将其保存在环境变量中要比直接写在代码中更安全,以防由于程序泄露或报错造成可能的密钥泄露。同时,使用环境变量存储KEY更为方便,可以在不同环境中部署,而无需在程序中管理冗长的KEY值。
那么接下来将获取好的Key输入到环境变量中,操作如下:
1.右键点击 “此电脑”,然后点击 “属性”。
2.找到并点击高级系统设置。
3.点击环境变量。
4.新建环境变量。
5.新建变量名为OPENAI_API_KEY的环境变量,变量值为KEY值。如果使用中转API,可以新建另外新建一个名为OPENAI_API_URL的环境变量,其值为对应的URL。创建完毕后确认。
配置好环境变量后,注意要重启更新环境变量!
二.代码部分
import os
from openai import OpenAI
client = OpenAI(
#下面两个参数的默认值来自环境变量
api_key=os.environ.get('OPENAI_API_KEY'),
#若使用中转添加下段代码,反之删除
base_url=os.environ.get('OPENAI_API_URL')
)
completion = client.chat.completions.create(
#选择模型
model="gpt-3.5-turbo",
#配置发送信息
messages=[
{"role":"system",
"content": "You are a helpful assistant."},
{"role":"user",
"content": "Hello!"}
]
)
print(completion.choices[0].message) # 回答
运行上述代码后输出:
ChatCompletionMessage(content='Hello! How can I assist you today?', role='assistant', function_call=None, tool_calls=None) |
三.代码详解
接下来逐步分析上述代码:
1.导入库
import os
from openai import OpenAI
导入 Python 的os 模块,用于与操作系统进行交互,主要进行访问环境变量。
从 OpenAI 模块中导入 OpenAI 类以便实例化。
2.创建 OpenAI 客户端实例:
client = OpenAI(
api_key=os.environ.get('OPENAI_API_KEY'),
base_url=os.environ.get('OPENAI_API_URL')
)
os.environ.get用于从操作系统环境变量中获取特定变量。其中os.environ是一个字典,包含当前进程环境变量的映射关系。它将环境变量的名称作为键,对应的值作为值存储在字典中。那么就可以使用get方法访问指定键对应的值。比如使用os.environ.get('KEY'),如果环境变量中存在名为 'KEY' 的变量,则返回该变量的值;如果不存在,则返回 None。
于是就可以使用os.environ.get来获取系统环境变量中的 'OPENAI_API_KEY' (OPENAI的KEY)和 'OPENAI_API_URL' (如果是使用的中转,则需要输入中转URL,反之则不用)的值,并传递给 OpenAI 客户端的构造函数,用于初始化 OpenAI 客户端对象。
其中,OpenAI() 是OpenAI Python 库中的一个类,主要用于与 OpenAI 的 API 进行交互。可以将其实例化并使用 API 密钥和其他配置选项来进行初始化,使开发者可以调用 OpenAI 的各种服务。
3.创建对话完成请求:
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role":"system",
"content": "You are a helpful assistant."},
{"role":"user",
"content": "Hello!"}
]
)
使用创建好的client 对象的 chat.completions.create() 方法创建对话完成请求。chat.completions.create() 是 OpenAI Python 库中用于生成聊天(对话)完成结果的一个方法。它通常用于与 OpenAI 的聊天模型(如 GPT-3.5、GPT-4)进行交互,生成基于给定提示的对话回复。
在此请求中:
model="gpt-3.5-turbo"
model:选择使用的模型,本示例选择使用的模型为"gpt-3.5-turbo"
messages:为一个列表,包含了对话消息。这个列表中,每个元素都是一个字典,表示一条消息。每个字典包含两个键:
role:表示消息的角色,角色可以是 "system"、"user" 或 "assistant"。
"system": 系统消息,通常用于设定对话的背景或规则。
"user": 用户消息,表示用户输入的内容。
"assistant": 助手(或模型)的回复。
content: 消息的内容,即具体的对话文本。
在这个示例中,messages 列表包含了两条消息:
{"role": "system",
"content": "You are a helpful assistant."}
这条消息告诉模型它的角色是一个“有帮助的助手”,设定了对话的背景。
{"role": "user",
"content": "Hello!"}
这是用户的输入消息,用户简单地说了一句“Hello!”,用于进行测试。
completion = ...:整个调用返回一个包含模型生成的回复的对象,赋值给变量 completion,这个对象包含了模型生成的回复以及其他相关信息。即整个流程是请求制定好的消息发送到指定模型,并接收回复。
4.输出回应消息:
print(completion.choices[0].message)
打印对话完成请求的输出消息。其中completion.choices是返回的一个包含多个选项的列表,通常这个列表的长度为 1,因为大多数请求只生成一个回复。completion.choices[0]则为获取列表的第一个选项,以继续获取message,为生成的消息对象,包含了生成的消息的角色和内容。
综上所述,这段代码演示了如何调用OpenAI API进行简单的对话。展示了如何初始化 OpenAI 客户端、创建对话请求,以及如何提取和打印对话回应。
四.可能的报错
ConnectionError(连接错误)
错误描述: 这个错误表示客户端无法与 OpenAI 服务器建立连接。通常是因为网络问题或服务器暂时不可用。
可能原因:
本地网络问题,如断网、DNS 解析失败或防火墙阻止连接。
OpenAI 服务器不可达,可能由于服务维护或其他网络问题。
代理服务器设置不当或网络配置问题。
解决方法:
检查网络连接: 确保设备可以正常访问互联网,并且没有网络问题阻止连接到外部服务器。
尝试其他网络: 如果可能,切换到另一个网络(例如,从 Wi-Fi 切换到移动数据)以排除本地网络问题。
重试机制: 在遇到连接错误时,可以设置重试机制,等待几秒钟后重新尝试连接。
检查代理设置: 如果你使用了代理服务器,确保代理配置正确且不阻止对 OpenAI 服务器的连接。
查看OpenAI 服务器状态: 如果怀疑是服务器问题,可以查看 OpenAI 的状态页面,确认服务是否正常运行。
AuthenticationError(认证错误)
错误描述: 这个错误通常发生在 API 密钥无效或未提供时。
可能原因:
使用了无效的 API 密钥。
没有提供API 密钥。
API 密钥过期或被吊销。
解决方法:
确保在代码中正确设置了KEY。
验证是否正在使用正确的 API 密钥。
如果不确定密钥的有效性,可检查或更新 API 密钥。
若使用的是环境变量中设置的KEY,注意是否进行了重启更新。
InvalidAPIKeyError(无效的 API 密钥错误)
错误描述: 使用了无效的 API 密钥。
可能原因:
输入错误的API 密钥。
API 密钥已被吊销或过期。
解决方法:
检查并确保使用了正确的 API 密钥。
确认API 密钥的状态。
RateLimitError(速率限制错误)
错误描述: 当API 请求超过了 OpenAI 规定的速率限制时,会遇到此错误。
可能原因:
在短时间内发送了太多的请求。
超过了免费使用配额或当前定价计划的请求限制。
解决方法:
实施重试逻辑,在遇到速率限制时稍作等待再重试。
降低请求的频率,分散请求的时间。
如果频繁遇到此错误,考虑升级到更高的使用配额。
五.应用场景
通过调用 OpenAI API 提供的服务,可以帮助开发更多的功能或应用。比如:
增强应用程序功能:通过调用 OpenAI API,开发人员可以为应用程序增加自然语言处理功能,例如智能答疑、对话生成、文章摘要等,从而提升用户体验和功能多样性。
加速开发:可以快速集成先进的人工智能技术而无需从头开始开发,从而节省开发时间和成本。可以帮助开发人员更迅速地实现项目需求。
自然语言处理任务:OpenAI API 提供了强大的自然语言处理能力,可以用于各种任务,如语言理解、文本生成、对话系统等。通过调用 OpenAI API,可以简化处理自然语言数据的任务。
实验和研究:研究人员和学生可以通过调用 OpenAI API 来探索人工智能领域的最新进展,进行实验和研究,快速验证新的想法和模型。
智能助手和虚拟助手:OpenAI API 可以用于构建智能助手或虚拟助手,帮助用户回答问题、提供支持、生成文本等。这在客户服务、教育等领域有广泛的应用。
推荐系统:可以进行个性化推荐,基于用户行为数据生成个性化的产品、内容或音乐推荐。
综上所述,调用 OpenAI API 可以为开发人员和研究人员提供强大的人工智能技术支持,为开发者提供了处理复杂自然语言数据的灵活性和便利性,辅助实现各种自然语言处理任务和创新应用。✨✨