揭开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…

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

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

Spring 1、初识Spring

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

SpringCloud Alibaba--nacos配置中心

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

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

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

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

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

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&…

156.25MHz的差分晶体振荡器SG3225VEN

数字经济正焕发出勃勃生机,云计算,大数据,5G和人工智能等新技术的发展给行业带来了新的机遇。无论是在数据中心内部还是在数据中心之间,提供低成本,高速的100/200/400G小型化解决方案都是光模块的发展需求。为了使DSP稳定工作,需要一个小型的封装晶体振荡器来提供参…

书生·浦语大模型第二期实战营第六节-Lagent AgentLego 智能体应用搭建 笔记和作业

来源: 视频教程:Lagent & AgentLego 智能体应用搭建 文字教程: Lagent Web Demo:https://github.com/InternLM/Tutorial/blob/camp2/agent/lagent.md#1-lagent-web-demo AgentLego: https://github.com/Inter…

ComfyUI学习旅程

一、模型文件(Checkpoint) 首先它很大,这些文件是你从huggingface或者civitai下载而来的, 所以这些大文件如 .ckpt 或 .safetensors ,实际上包含了什么内容呢? 它包含了包含了三种不同模型的权重&#x…

做大模型产品,如何设计prompt?

做GenAI产品,除了要设计好的AI任务流程,合理的拆分业务以外,最重要的就是写好prompt,管理好prompt,持续迭代prompt。 prompt一般有两种形式:结构化prompt和对话式prompt。 结构化prompt的优点是通过规范的…

Odoo:全球排名第一的免费开源PLM管理系统介绍

概述 利用开源智造OdooPLM产品生命周期管理应用,重塑创新 实现产品生命周期管理数字化,高效定义、开发、交付和管理创新的可持续产品,拥抱数字化供应链。 通过开源智造基于Odoo开源技术平台打造数字化的产品生命周期管理(PLM&am…

allegro输出正反面bom

不是前面两条命令,而是component report

李沐65_注意力分数——自学笔记

Additive Attention 等价于将key和value合并起来后放入到一个隐藏大小为h输出大小为1的单隐藏层 总结 1.注意力分数是query和key的相似度,注意力权重是分数的softmax结果 2.两种常见的分数计算: (1)将query和key合并起来进入一个单输出单…

模块三:二分——852.山脉数组的峰顶索引

文章目录 题目描述算法原理解法一:暴力查找解法二:二分查找 代码实现暴力查找二分——C二分——Java 题目描述 题目链接:852.山脉数组的峰顶索引 算法原理 解法一:暴力查找 峰顶:比左右区间都大 遍历整个数组&…

谷歌搜索SEO优化需要做什么?

最基本的要求,网站基础要优化好,让你的网站更加友好地服务于用户和搜索引擎,首先你要保证你的网站也适配手机端,现在手机端,如果你的网站在手机上打开慢,或者没有适配手机端,让用户用手机看着电…

笔记:VMware之性能优化

目标:通过调整VMware设置,提高VMware中虚拟机性能 版本:16.2.2 build-19200509 一、首选项 针对所有虚拟机设置,对所有虚拟机都有效 1.1 设置路径:主页->编辑->首选项->更新 软件更新,取消“…