调用OpenAI的openai.ChatCompletion.create方法:发送请求到API端点

手动发送HTTP请求到API端点

使用Python的requests库(或其他HTTP客户端库)来构建和发送HTTP POST请求。它不使用openai客户端库,而是直接发送HTTP请求到OpenAI的聊天完成API端点

假设我们要创建一个简单的聊天机器人,它能够回答用户关于NBA球员的问题。我们将使用gpt-3.5-turbo模型来生成聊天响应。

  1. import requests
  2. import json
  3. # 设置OpenAI API的密钥
  4. api_key = '你的OpenAI API密钥'
  5. api_endpoint = "https://api.openai.com/v1/chat/completions"
  6. # 定义聊天消息,包括系统消息和用户消息
  7. messages = [
  8. {"role": "system", "content": "你是一个NBA知识助手,能够回答关于NBA球员的问题。"},
  9. {"role": "user", "content": "谁是NBA历史上最伟大的球员?"}
  10. ]
  11. # 构建请求头,包含API密钥和Content-Type
  12. headers = {
  13. "Authorization": f"Bearer {api_key}",
  14. "Content-Type": "application/json"
  15. }
  16. # 构建请求体,包含模型和消息
  17. payload = {
  18. "model": "gpt-3.5-turbo",
  19. "messages": messages
  20. }
  21. # 发送HTTP POST请求到API端点
  22. response = requests.post(api_endpoint, headers=headers, data=json.dumps(payload))
  23. # 检查响应状态码并提取聊天响应
  24. if response.status_code == 200:
  25. # 解析JSON响应
  26. response_data = response.json()
  27. # 提取并打印生成的聊天响应
  28. print(response_data['choices'][0]['message']['content'])
  29. else:
  30. # 打印错误信息
  31. print(f"Error: {response.status_code} - {response.text}")

用OpenAI客户发送请求到API端点

上述程序改为:

  1. import openai
  2. # 设置OpenAI API的密钥(注意在实际使用中保护你的密钥)
  3. openai.api_key = '你的OpenAI API密钥'
  4. # 定义聊天消息,包括系统消息、用户消息和(可能的)助手消息
  5. messages = [
  6. {"role": "system", "content": "你是一个NBA知识助手,能够回答关于NBA球员的问题。"},
  7. {"role": "user", "content": "谁是NBA历史上最伟大的球员?"}
  8. ]
  9. # 调用chat.completions.create方法创建聊天完成请求
  10. response = openai.ChatCompletion.create(
  11. model="gpt-3.5-turbo", # 指定GPT模型
  12. messages=messages # 提供聊天消息
  13. )
  14. # 提取并打印生成的聊天响应
  15. print(response.choices[0].message.content)

使用异步客户端进行 API 调用

  1. import asyncio
  2. async def main():
  3. client = openai.AsyncClient()
  4. response = await client.completions.create(
  5. engine="davinci",
  6. prompt="Once upon a time",
  7. max_tokens=150,
  8. n=1,
  9. stop=None,
  10. temperature=0.7,
  11. )
  12. print(response.choices[0].text.strip())
  13. # 运行异步主函数
  14. asyncio.run(main())

 使用同步客户端进行 API 调用

可用如下两种方法:

   (1) 使用openai.Client():将上述的 openai.AsyncClient()改为openai.Client(),对应的句子作相应修改即可。

(2)直接使用openai模块的方法(见前述第2个例子),因为通常不需要显式创建客户端实例