调用OpenAI的openai.ChatCompletion.create方法:发送请求到API端点
手动发送HTTP请求到API端点:使用Python的requests库(或其他HTTP客户端库)来构建和发送HTTP POST请求。它不使用openai客户端库,而是直接发送HTTP请求到OpenAI的聊天完成API端点用OpenAI客户发送请求到API端点
·
手动发送HTTP请求到API端点
使用Python的requests库(或其他HTTP客户端库)来构建和发送HTTP POST请求。它不使用openai客户端库,而是直接发送HTTP请求到OpenAI的聊天完成API端点
假设我们要创建一个简单的聊天机器人,它能够回答用户关于NBA球员的问题。我们将使用gpt-3.5-turbo模型来生成聊天响应。
import requests
import json
# 设置OpenAI API的密钥
api_key = '你的OpenAI API密钥'
api_endpoint = "https://api.openai.com/v1/chat/completions"
# 定义聊天消息,包括系统消息和用户消息
messages = [
{"role": "system", "content": "你是一个NBA知识助手,能够回答关于NBA球员的问题。"},
{"role": "user", "content": "谁是NBA历史上最伟大的球员?"}
]
# 构建请求头,包含API密钥和Content-Type
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
# 构建请求体,包含模型和消息
payload = {
"model": "gpt-3.5-turbo",
"messages": messages
}
# 发送HTTP POST请求到API端点
response = requests.post(api_endpoint, headers=headers, data=json.dumps(payload))
# 检查响应状态码并提取聊天响应
if response.status_code == 200:
# 解析JSON响应
response_data = response.json()
# 提取并打印生成的聊天响应
print(response_data['choices'][0]['message']['content'])
else:
# 打印错误信息
print(f"Error: {response.status_code} - {response.text}")
用OpenAI客户发送请求到API端点
上述程序改为:
import openai
# 设置OpenAI API的密钥(注意在实际使用中保护你的密钥)
openai.api_key = '你的OpenAI API密钥'
# 定义聊天消息,包括系统消息、用户消息和(可能的)助手消息
messages = [
{"role": "system", "content": "你是一个NBA知识助手,能够回答关于NBA球员的问题。"},
{"role": "user", "content": "谁是NBA历史上最伟大的球员?"}
]
# 调用chat.completions.create方法创建聊天完成请求
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 指定GPT模型
messages=messages # 提供聊天消息
)
# 提取并打印生成的聊天响应
print(response.choices[0].message.content)
使用异步客户端进行 API 调用
import asyncio
async def main():
client = openai.AsyncClient()
response = await client.completions.create(
engine="davinci",
prompt="Once upon a time",
max_tokens=150,
n=1,
stop=None,
temperature=0.7,
)
print(response.choices[0].text.strip())
# 运行异步主函数
asyncio.run(main())
使用同步客户端进行 API 调用
可用如下两种方法:
(1) 使用openai.Client():将上述的 openai.AsyncClient()改为openai.Client(),对应的句子作相应修改即可。
(2)直接使用openai模块的方法(见前述第2个例子),因为通常不需要显式创建客户端实例
更多推荐
所有评论(0)