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

文章目录

  • 〇、使用OpenAI的两个步骤
  • 一、初始化方法__init__()
    • 1.源码
    • 2.参数解析
  • 二、提供的接口
    • 1.源码
    • 2.接口说明
      • 主要接口说明

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,)

在这里插入图片描述

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.Completionschat: resources.Chatedits: resources.Editsembeddings: resources.Embeddingsfiles: resources.Filesimages: resources.Imagesaudio: resources.Audiomoderations: resources.Moderationsmodels: resources.Modelsfine_tuning: resources.FineTuningfine_tunes: resources.FineTunesbeta: resources.Betawith_raw_response: OpenAIWithRawResponse# client optionsapi_key: strorganization: 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的参数和接口有了一些基本了解,后续的博客将会陆续对这些接口进行代码实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity的旋转实现一些方法总结(案例:通过输入,玩家进行旋转移动)

目录 1. Transform.Rotate 方法 使用 2. Transform.rotation 或 Transform.localRotation 属性与四元数 使用方式: 小案例 :目标旋转角度计算:targetRotation(Quaternion类型) 玩家发现敌人位置,玩家…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息,例如你的阅读计划,可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器,能够在桌面上显示各种信息。以下是基本的设置步骤: 安装 Conky 首先,你需要在 Ubuntu…

js面试---闭包、作用域及作用域链、执行上下文

1、什么是闭包 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。 闭包的作用: a、使我们在函数外部能够访问到函数内部的变量。通过使用闭包…

道可云元宇宙每日资讯|济南起步区:加快建设元宇宙政务大厅

道可云元宇宙每日简报(2024年4月23日)讯,今日元宇宙新鲜事有: 济南起步区:加快建设元宇宙政务大厅 济南起步区以“元宇宙”赋能智慧政务,集成政务服务智能办理、数字人智能引导交互服务、沉浸式漫游体验、…

【学习记录】autoware标定相机与激光雷达外参

一、autoware选择 这里踩了好几个坑,首先autoware作为一个无人驾驶知名框架,其内部实际上是有两套标定的东西的,这一点绝大多数博客没有提到。其中最常用的是一个叫标定工具箱的东西,这个ros包已经在1.10往后的版本中被删掉了&am…

hive SQL谓词下推

Sql 优化:谓词下推(PPD 定义 谓词下推的概念其实出现在sql中,在关联查询时(join,left join ,right join),因为涉及两个大表之间的关联(特别是在hive)造成资源消耗会比较大, 因为建议在join之前先将两个表进行过滤(hive…

Android 获取sha1的快速有效的简单方法

第一步 下载apk 点击下载(https://download.csdn.net/download/xiaohui2015/9751428) 第二步 试用Windows键R键打开命令行 输入 adb install把apk用鼠标左键拖动到命令行自动输入路径 回车安装 第三步 打开apk 选择你要查看的apk,一键…

Spring 1、初识Spring

初识Spring 了解Spring家族了解Spring发展史Spring Framework系统架构学习路线 了解Spring家族 官网spring.io Spring形成了一种开发的生态圈,Spring提供了若干个项目,每个项目用于完成特定的功能。 Spring Framework(最基础的东西&#x…

qemu参考

手把手教你搭建ARM64 QEMU环境 - 知乎

SpringCloud Alibaba--nacos配置中心

目录 一.基础介绍 1.1概念 1.2 功能 二.实现 2.1 依赖 2.2 新建配置文件 2.3 克隆 2.4 配置bootstap.yml文件 三.测试 一.基础介绍 1.1概念 在微服务架构中,配置中心就是统一管理各个微服务配置文件的服务。把传统的单体jar包拆分成多个微服务后&#xf…

NameError: name ‘_mysql‘ is not defined 安装mysqlclient报错

安装mysqlclient报错 The error message you’re seeing indicates that the pkg-config utility is not installed on your system, or it is not able to find the necessary configuration for mysqlclient. pkg-config is used to determine the compilation options for …

跨越未知,拥抱挑战——新征程

在浩瀚的IT领域里,每一位开发工程师都如同一位探险家,不断地探索、挑战和成长。作为一名新入职的Java开发工程师,我面临着全新的技术栈和业务领域,这是一次跨越未知的征程,也是一次自我提升的机会。 新入职 初入公司…

Android活动之Intent

Intent Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景, 显示intent 第一个参数Context要求提供…

低代码开发之腾讯云微搭工具

低代码开发之腾讯云微搭工具 微搭简介诞生缘由开发模式如何创建组件模块介绍实例讲解url传参级联联动使用事件其他方法调用数据源方法 callDataSource触发流程 callProcess 数据模型方法V2 微搭简介 微搭(WeDa),全称是腾讯云微搭低代码开发平…

设计模式- 适配器模式(Adapter Pattern)结构|原理|优缺点|场景|示例

设计模式(分类) 设计模式(六大原则) 创建型(5种) 工厂方法 抽象工厂模式 单例模式 建造者模式 原型模式 结构型(7种) 适配器…

【Python】深入解析Python中的eval()函数

你是魔鬼中的天使 所以送我心碎的方式 是让我笑到最后一秒为止 才发现自己胸口插了一把刀子 你是魔鬼中的天使 让恨变成太俗气的事 从眼里流下谢谢两个字 尽管叫我疯子 不准叫我傻子 🎵 田馥甄《魔鬼中的天使》 Python的eval()函数是一个强大而…

Powershell 一键安装 virtio_qemu_agent

前言 qemu-guest-agent qemu-guest-agent是一个助手守护进程,安装在客户机中。它用于在主机和客户端之间交换信息,并在客户端执行命令。 在Proxmox VE中,qemu-guest-agent主要用于三件事: 正确关闭客户机,而不是依赖于ACPI命令或windows策略在进行备份/快照时冻结客户机…

plt.show()输出<Figure size 1200x800 with 1 Axes>没有展示出图片在notebook里

解决方法如下: 在Jupyter Notebook中,如果使用plt.show()没有直接显示图像,可能是由于某些设置或限制导致的。您可以尝试使用%matplotlib inline魔术命令来确保图像能够直接显示在Notebook中。请在Notebook的第一个单元格中执行以下命令&…

世界首台能探测单个原子的量子模拟器,诞生!

量子物理学依赖于高精度的传感技术,以便深入研究材料的微观特性。近期开发的模拟量子处理器显示出量子气体显微镜在原子层面理解量子系统方面的强大潜力。这种显微镜可以生成极高分辨率的量子气体图像,甚至能够检测到单个原子。 在西班牙巴塞罗那的ICFO&…

flutter android studio升级java java17

oricle 网站下载jdk 17sudo dpkg -i 安装包。到android-studio 目录, mv jbr jbr_bak ln -s /usr/lib/jvm/jdk-17-oracle-x64 jre ln -s /usr/lib/jvm/jdk-17-oracle-x64 jbr 更新.bashrc里面 JAVA_HOMEusr/lib/jvm/jdk-17-oracle-x64 jresource .bashrc然后运行f…