手动发送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个例子),因为通常不需要显式创建客户端实例

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐