• 揭开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.源码

    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,
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2.参数解析

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

    二、提供的接口

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

    1.源码

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    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的参数和接口有了一些基本了解,后续的博客将会陆续对这些接口进行代码实践。

  • 相关阅读:
    AWB(Auto White Banlance)——自动白平衡
    day32贪心算法part02| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II
    Truncation Sampling as Language Model Desmoothing
    C#面:.NET Remoting 的⼯作原理是什么
    [附源码]Python计算机毕业设计Django基于VUE的网上订餐系统
    某大学作业
    python毕业设计作品基于django框架新闻信息管理系统毕设成品(1)开发概要
    Flask框架参数类型以及获取方法
    C++11智能指针学习笔记及拓展
    装饰器模式
  • 原文地址:https://blog.csdn.net/Tracycoder/article/details/138014471