揭开ChatGPT面纱(2):OpenAI主类源码概览

文章目录

OpenAI版本==1.6.1


〇、使用OpenAI的两个步骤

在上一篇博客中,我实现并运行了一个OpenAI的demo,我们可以发现,想要使用OpenAI完成一个需求仅需要两个步骤,第一步是 传入参数 配置并声明对象,第二步是 调用接口 实现需求。

清楚这两点后,我们接着来看看源码。

在openai包中,OpenAI类是核心类,它作为客户端库的入口点,提供了与OpenAI API进行交互的方法和属性。这个类封装了API的各种功能,使得开发者可以通过编写代码来使用OpenAI提供的各种服务,如文本生成、图像生成、模型微调等。

下面我将针对OpenAI的源码文件_client.py进行一个概览说明。

一、初始化方法__init__()

这个方法是OpenAI Python库中用于配置和初始化客户端实例的一部分,允许用户设置各种参数以定制他们的API请求。

1.源码

python 复制代码
def __init__(
        self,
        *,
        api_key: str | None = None,
        organization: str | None = None,
        base_url: str | httpx.URL | None = None,
        timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
        max_retries: int = DEFAULT_MAX_RETRIES,
        default_headers: Mapping[str, str] | None = None,
        default_query: Mapping[str, object] | None = None,
        http_client: httpx.Client | None = None,
        _strict_response_validation: bool = False,
    )

2.参数解析

参数名 数据类型 默认值 描述
api_key str None 用于OpenAI API的认证密钥。如果设置为None,将尝试使用环境变量中的密钥。
organization str None 指定使用OpenAI API的组织名称。如果用户属于特定的组织,可以在这里指定。
base_url str None 指定OpenAI API服务的基础URL。如果设置为None,默认使用OpenAI的官方API URL。可以用来设置代理。
timeout Union[float, Timeout, None, NotGiven] NOT_GIVEN 设置请求的超时时间。可以是一个浮点数表示秒数,或者是一个Timeout对象。
max_retries int DEFAULT_MAX_RETRIES 设置最大重试次数。默认值由库的常量DEFAULT_MAX_RETRIES决定。
default_headers Mapping[str, str] None 设置默认的请求头部。映射类型,键是头部名称,值是头部值。
default_query Mapping[str, object] None 设置默认的查询参数。映射类型,键是参数名称,值是参数值。
http_client httpx.Client None 允许用户配置一个自定义的httpx.Client实例。这可以用于更高级的HTTP请求定制,如设置代理、SSL验证等。
_strict_response_validation bool False 启用或禁用对API返回数据的模式验证。当启用时,如果API响应的数据不符合预期的模式,将引发APIResponseValidationError错误。这个参数可能会在未来被移除或更改。如果依赖此特性,建议用户在GitHub上开启一个issue,以帮助开发者决定是否将其作为未来公共接口的一部分。

二、提供的接口

OpenAI类继承自SyncAPIClient。这个类提供了一些高级接口,用于与OpenAI的API进行交互。

1.源码

python 复制代码
class OpenAI(SyncAPIClient):
    completions: resources.Completions
    chat: resources.Chat
    edits: resources.Edits
    embeddings: resources.Embeddings
    files: resources.Files
    images: resources.Images
    audio: resources.Audio
    moderations: resources.Moderations
    models: resources.Models
    fine_tuning: resources.FineTuning
    fine_tunes: resources.FineTunes
    beta: resources.Beta
    with_raw_response: OpenAIWithRawResponse

    # client options
    api_key: str
    organization: str | None

2.接口说明

  • 首先,最后两行是一个client的配置,并不属于OpenAI类的接口:
  1. api_key:

    • 属性类型: str
    • 描述: 用于认证的API密钥。这个密钥是必需的,以确保用户有权访问OpenAI的API。
  2. organization:

    • 属性类型: str | None
    • 描述: 组织标识符,如果用户属于某个OpenAI组织,可以在这里指定。如果用户不属于任何组织,可以留空或设置为None

主要接口说明

  1. completions:

    • 属性类型: resources.Completions
    • 描述: 这个属性提供了一个用于生成文本完成的接口。它允许用户发送提示给OpenAI的语言模型,并接收由模型生成的文本响应。
  2. chat:

    • 属性类型: resources.Chat
    • 描述: 这个属性提供了一个用于创建和管理对话式AI的接口。它可以处理多轮对话,并允许用户与AI进行交互,类似于与聊天机器人的对话。
  3. edits:

    • 属性类型: resources.Edits
    • 描述: 这个属性提供了一个用于修改和改进文本的接口。它可以对生成的文本进行微调,以提高其连贯性、事实准确性或风格。
  4. embeddings:

    • 属性类型: resources.Embeddings
    • 描述: 这个属性提供了一个用于生成文本嵌入的接口。文本嵌入可以用于语义搜索、文本相似性比较等任务。
  5. files:

    • 属性类型: resources.Files
    • 描述: 这个属性提供了一个用于上传和下载文件的接口。这些文件可以用于进一步的处理或生成。
  6. images:

    • 属性类型: resources.Images
    • 描述: 这个属性提供了一个用于生成图像的接口。它可以利用OpenAI的DALL-E或其他图像生成模型来创建图像。
  7. audio:

    • 属性类型: resources.Audio
    • 描述: 这个属性提供了一个用于处理音频的接口。它可以用于生成、转录或其他音频相关的操作。
  8. moderations:

    • 属性类型: resources.Moderations
    • 描述: 这个属性提供了一个用于内容审核的接口。它可以检查文本内容是否违反了OpenAI的使用政策。
  9. models:

    • 属性类型: resources.Models
    • 描述: 这个属性提供了一个用于列出和检索有关模型信息的接口。它可以用来获取不同模型的详细信息。
  10. fine_tuning:

    • 属性类型: resources.FineTuning
    • 描述: 这个属性提供了一个用于模型微调的接口。用户可以创建、管理和监控模型微调作业。
  11. with_raw_response:

    • 属性类型: OpenAIWithRawResponse
    • 描述: 这个属性可能允许用户获取原始的API响应数据,而不仅仅是处理后的响应内容。

在这一篇博客中我们对OpenAI的参数和接口有了一些基本了解,后续的博客将会陆续对这些接口进行代码实践。

相关推荐
AndrewHZ9 分钟前
【AI黑话日日新】什么是AI智能体?
人工智能·算法·语言模型·大模型·llm·ai智能体
山顶夕景5 小时前
【LLM】多模态智能体Kimi-K2.5模型
llm·agent·多模态
JTnnnnn5 小时前
【架構優化】拒絕 LLM 幻覺:設計基於 Python 路由的 AntV 智慧圖表生成系統
llm·antv·dify
新缸中之脑5 小时前
ChatGPT 容器
chatgpt
AndrewHZ5 小时前
【AI黑话日日新】什么是skills?
语言模型·大模型·llm·claude code·skills
国家一级假勤奋大学生15 小时前
InternVL系列 technical report 解析
大模型·llm·vlm·mllm·internvl·调研笔记
DS随心转APP1 天前
ChatGPT和Gemini回答怎么导出
人工智能·ai·chatgpt·deepseek·ds随心转
缘友一世1 天前
张量并行和流水线并行原理深入理解与思考
学习·llm·pp·tp
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-01-30)
开源·大模型·llm·github·ai教程
DS随心转插件1 天前
ChatGPT和Gemini排版指令
人工智能·ai·chatgpt·deepseek·ds随心转