大模型(LLM)的若干科普之问(四):OpenAI 的 API 接口规范与openai库

news/2025/1/19 1:37:02/

一、OpenAI 的 API 接口规范

OpenAI 的 API 接口规范是基于 RESTful API 设计的,主要用于与 OpenAI 的大型语言模型(如 GPT-3、GPT-4 等)进行交互。以下是 OpenAI API 的基本接口规范和使用方法:


1. API 基础信息

  • API 地址: https://api.openai.com/v1
  • 认证方式: 使用 API Key 进行身份验证。
    • 在请求头中添加 Authorization: Bearer <your-api-key>
  • 支持的模型: 包括 gpt-3.5-turbogpt-4 等。以及非OpenAI公司的号称兼容该规范的LLM(需稍作修改,如,API的地址)

2. 常用接口

(1) 文本生成接口
  • URL: POST https://api.openai.com/v1/chat/completions

  • 功能: 与模型进行对话或生成文本。

  • 请求示例:

    {"model": "gpt-3.5-turbo","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello, how are you?"}],"max_tokens": 100,"temperature": 0.7
    }
    
  • 参数说明:

    • model: 使用的模型名称(如 gpt-3.5-turbo)。
    • messages: 对话消息列表,每条消息包含 rolesystemuserassistant)和 content(消息内容)。
    • max_tokens: 生成的最大 token 数。
    • temperature: 控制生成文本的随机性(0-1,值越高越随机)。
    • top_p: 控制生成文本的多样性。
    • n: 生成多个回复。
    • stop: 停止生成的条件(如遇到特定字符串)。
    • stream: 是否以流式传输方式返回结果。
  • 响应示例:

    {"id": "chatcmpl-12345","object": "chat.completion","created": 1691234567,"choices": [{"index": 0,"message": {"role": "assistant","content": "I'm fine, thank you! How can I help you today?"},"finish_reason": "stop"}],"usage": {"prompt_tokens": 10,"completion_tokens": 20,"total_tokens": 30}
    }
    

(2) 模型列表接口
  • URL: GET https://api.openai.com/v1/models
  • 功能: 获取可用的模型列表。
  • 响应示例:
    {"data": [{"id": "gpt-3.5-turbo","object": "model","created": 1691234567,"owned_by": "openai"},{"id": "gpt-4","object": "model","created": 1691234568,"owned_by": "openai"}]
    }
    

(3) 图像生成接口(DALL·E)
  • URL: POST https://api.openai.com/v1/images/generations
  • 功能: 根据文本描述生成图像。
  • 请求示例:
    {"prompt": "A cute cat sitting on a chair","n": 1,"size": "1024x1024"
    }
    
  • 参数说明:
    • prompt: 图像生成的文本描述。
    • n: 生成图像的数量。
    • size: 图像分辨率(如 256x256512x5121024x1024)。
  • 响应示例:
    {"data": [{"url": "https://example.com/image.png"}]
    }
    

3. 错误处理

OpenAI API 返回的错误信息通常包含以下字段:

  • error: 错误对象。
    • message: 错误描述。
    • type: 错误类型(如 invalid_request_error)。
    • code: 错误代码。

示例:

{"error": {"message": "You exceeded your current quota, please check your plan and billing details.","type": "insufficient_quota","code": "quota_exceeded"}
}

4. 使用示例(Python)

以下是一个使用 OpenAI API 进行文本生成的 Python 示例:

python">import openai# 设置 API Key
openai.api_key = "your-api-key"# 调用 API
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "What is the capital of France?"}],max_tokens=50
)# 输出结果
print(response['choices'][0]['message']['content'])

5. 注意事项

  • API Key 安全: 不要将 API Key 暴露在客户端代码中。
  • 速率限制: OpenAI API 有速率限制,需根据订阅计划调整调用频率。
  • 费用: 使用 API 会产生费用,具体费用取决于模型和 token 使用量。

参考 OpenAI 的官方文档:OpenAI API Documentation。(由于是境外网,有时会连不上)

二、Python 的 openai

OpenAI 的 API 接口规范对应的 Python 库是 openai。这是一个官方提供的 Python 客户端库,用于与 OpenAI 的 API 进行交互,支持 GPT 系列模型、DALL·E、Whisper 等多种服务。

以下是关于 openai 库的详细介绍和使用方法:


1. 安装 openai

在 Python 环境中,可以通过 pip 安装 openai 库:

pip install openai

2. 设置 API Key

在使用 OpenAI API 之前,需要设置 API Key。可以通过以下方式设置:

python">import openai# 设置 API Key
openai.api_key = "your-api-key"  # 替换为你的 OpenAI API Key

3. 主要功能模块

openai 库提供了多个模块,用于支持不同的 OpenAI 服务:

(1) 文本生成(Chat Completions)
  • 用于与 GPT 系列模型(如 gpt-3.5-turbogpt-4)进行对话或生成文本。
  • 示例:
    python">response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello, how are you?"}],max_tokens=100,temperature=0.7
    )
    print(response['choices'][0]['message']['content'])
    
(2) 文本补全(Completions)
  • 用于与 GPT-3 系列模型(如 text-davinci-003)进行文本补全。
  • 示例:
    python">response = openai.Completion.create(model="text-davinci-003",prompt="Write a short story about a robot.",max_tokens=150,temperature=0.8
    )
    print(response['choices'][0]['text'])
    
(3) 图像生成(DALL·E)
  • 用于生成图像。
  • 示例:
    python">response = openai.Image.create(prompt="A cute cat sitting on a chair",n=1,size="1024x1024"
    )
    print(response['data'][0]['url'])
    
(4) 语音转文本(Whisper)
  • 用于将语音文件转换为文本。
  • 示例:
    python">with open("audio.mp3", "rb") as audio_file:response = openai.Audio.transcribe(model="whisper-1",file=audio_file)
    print(response['text'])
    
(5) 微调模型(Fine-tuning)
  • 用于微调自定义模型。
  • 示例:
    python">response = openai.FineTune.create(training_file="file-12345",model="davinci"
    )
    print(response)
    

4. 常用参数

以下是一些常用的 API 参数:

(1) 通用参数
  • model: 使用的模型名称(如 gpt-3.5-turbotext-davinci-003)。
  • max_tokens: 生成的最大 token 数。
  • temperature: 控制生成文本的随机性(0-2)。
  • top_p: 控制生成文本的多样性(0-1)。
  • n: 生成多个独立的回复。
  • stop: 指定停止符。
  • stream: 是否以流式传输方式返回结果。
(2) Chat Completions 参数
  • messages: 对话消息列表,包含 rolesystemuserassistant)和 content
(3) Completions 参数
  • prompt: 输入提示文本。
(4) Image 参数
  • prompt: 图像生成的文本描述。
  • n: 生成图像的数量。
  • size: 图像分辨率(如 256x256512x5121024x1024)。
(5) Audio 参数
  • file: 语音文件。
  • model: 使用的模型名称(如 whisper-1)。

5. 错误处理

OpenAI API 返回的错误信息通常包含以下字段:

  • error: 错误对象。
    • message: 错误描述。
    • type: 错误类型(如 invalid_request_error)。
    • code: 错误代码。

示例:

python">try:response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "user", "content": "Hello!"}])
except openai.error.OpenAIError as e:print(f"An error occurred: {e}")

6. 完整示例

以下是一个完整的示例,展示如何使用 openai 库生成文本:

python">import openai# 设置 API Key
openai.api_key = "your-api-key"# 调用 Chat Completions API
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "What is the capital of France?"}],max_tokens=50,temperature=0.7
)# 输出结果
print(response['choices'][0]['message']['content'])

7. 官方文档

  • OpenAI 官方文档: OpenAI API Documentation
  • openai 库 GitHub 仓库: openai-python

openai 库是 OpenAI 官方提供的 Python 客户端库,支持与 OpenAI API 的交互。通过该库,可以轻松调用 GPT 系列模型、DALL·E、Whisper 等服务。

通常来讲,国内LLM都支持openai库!!!


http://www.ppmy.cn/news/1564278.html

相关文章

【AI日记】25.01.16

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;罗素论幸福评估&#xff1a;读完&#xff0c;不错 律己 AI&#xff1a; 8 小时&#xff0c;良作息&#xff1…

【ComfyUI专栏】Git Clone 下载自定义节点的代理设置

我们实际在使用ComfyUI 下载节点的时候会碰到下载缓慢的问题,这个问题如何解决呢?有没有比较好的办法解决下载和复制缓慢的问题呢?这个就涉及到我们使用代理的方式进行节点下载的方式了。首先确定我们当前的代理服务器的设置,也就是IP地址和端口问题。 开启Cmd命令,执行如…

程序设计安全方案,软件开发安全指南,信息系统安全管理规范(Word原件)

2.1.应用系统架构安全设计要求 2.2.应用系统软件功能安全设计要求 2.3.应用系统存储安全设计要求 2.4.应用系统通讯安全设计要求 2.5.应用系统数据库安全设计要求 2.6.应用系统数据安全设计要求 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行…

Ubuntu20.4和docker终端指令、安装Go环境、安装搜狗输入法、安装WPS2019:保姆级图文详解

目录 前言1、docker、node、curl版本查看终端命令1.1、查看docker版本1.2、查看node.js版本1.3、查看curl版本1.4、Ubuntu安装curl1.5、Ubuntu终端保存命令 2、安装docker-compose、Go语言2.1、安装docker-compose2.2、go语言安装步骤2.3、git版本查看 3、Ubuntu20.4安装搜狗输…

基于Flutter的杰理OTA

目前杰理OTA只有安卓和IOS的SDK&#xff0c;由于项目使用了flutter框架&#xff0c;需要实现一个flutter版本的杰理OTA插件&#xff0c;本项目预计在2月份发布1.0.0版本&#xff0c;感兴趣的同学可持续关注 github仓库地址 快速开始 待定 接入答疑 待定 详细介绍 待定

密码学——密码学基础、散列函数与数字签名

1.密码学概述 是信息安全的基础和核心&#xff0c;是防范各种安全威胁的重要手段&#xff0c;信息安全的许多相关知识都与密码学相关。 密码学发展 密码学是一门古老而又年轻的学科 &#xff0c;几千年以前就存在&#xff0c;至今仍在发展演进。地位非常重要甚至起决定性作用…

文献阅读记录6--Empowering Sketches with Machine Learningfor Network Measurements

一、预备知识 Top-k Flows&#xff1a;是一种用于从数据流中找出频率最高的 k 个元素的算法。这些算法通常用于处理大规模数据流&#xff0c;如网络流量、社交媒体数据等&#xff0c;以实时识别最频繁出现的元素。Top-k 流算法在许多应用场景中都非常有用&#xff0c;例如检测…

代理模式实现

一、概念&#xff1a;代理模式属于结构型设计模式。客户端不能直接访问一个对象&#xff0c;可以通过代理的第三者来间接访问该对象&#xff0c;代理对象控制着对于原对象的访问&#xff0c;并允许在客户端访问对象的前后进行一些扩展和处理&#xff1b;这种设置模式称为代理模…