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

揭开ChatGPT面纱(5):使用chat.completions接口实现多轮聊天 openai版本==1.6.1,本博客对应文件夹05。 阅读详情

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

OpenAI使用步骤详解 点击生成密钥,系统将为你提供一个独一无二的API密钥,用于后续的API调用。这包括设置你的API密钥、选择适当的模型版本、确定请求的方法(如GET或POST)以及准备必要的输入数据。使用你喜欢的HTTP客户端或者编程语言的HTTP库,向OpenAI的API端点发送请求。根据你的应用需求,你可以在OpenAI的模型库中浏览并选择最适合你的模型。你需要在你的代码中解析这个响应,提取出你需要的数据。根据API返回的结果,你可能需要对你的请求参数或输入数据进行调整,以优化模型的性能和输出质量。 阅读详情

相关推荐

OpenAI——CLIPs(代码使用示例)

OpenAI——CLIPs(代码使用示例)

weixin_43860330的博客 3598

OPenAi源代码

OpenAI的源代码并没有公开。OpenAI是一家私人企业,它的源代码是被保密的。然而,OpenAI在GitHub上有一些开源的项目,您可以在GitHub上浏览这些项目的代码。这些项目包括一些用于自然语言处理的开源模型和工具,例如GPT-3和DALL-E。 ...

weixin_35749796的博客 1296

企业级私有化ChatGPT:Azure OpenAI安全落地实战

私有化大模型部署是企业实现AI数据主权的核心路径,其本质在于将模型推理、身份认证、会话存储与网络流量全部收敛于自有云环境。基于Azure OpenAI的服务架构,通过专用子网、私有终端节点与Azure AD联合鉴权,可构建符合GDPR、等保2.0及HIPAA要求的合规闭环。该方案不替代公有模型能力,而是以‘模型即服务(MaaS)’为底座,叠加VNet隔离、CMK加密、Cosmos DB分区存储与七层纵深防御,真正实现敏感数据不出域、审计留痕可追溯、权限管控最小化。本文聚焦金融、医疗与政务场景下从零部署到生产

技术百科 764

怎么获取openai源码

要获取OpenAI的源代码,你可以通过以下方式之一获取: 在GitHub上浏览OpenAI的项目并使用git工具克隆代码库。例如,你可以使用以下命令克隆GPT-3的代码库: git clone https://github.com/openai/gpt-3.git 在OpenAI的网站上下载源代码的压缩文件。你可以在OpenAI的项目页面找到下载链接。 注意:有些项目可能没有公开发布源代...

weixin_42596246的博客 1445

用 JavaScript 五分钟将 Siri 接入 ChatGPT(含全部源码)

3. 进入刚才创建好的 AirCode 应用中,在「Environments」标签页,将复制的 API Key 的值填入「OPENAI_KEY」这一项的 value 中。另外,你也可以在快捷指令的编辑页面中,点击下方的「分享」按钮,在弹出的菜单中选择「添加到主屏幕」,这样就可以在桌面通过点击打开对话框。1. 填完环境变量后,点击页面最上方的「Deploy」按钮,在弹出对话框中点击「Deploy」,开始部署。2. 在打开的页面中点击「获取捷径」按钮,然后在弹出的窗口中点击「添加快捷指令」。

7044

ChatGPT 开源了第一款插件,都来学习一下源码吧~

此举意味着 ChatGPT 将迎来“APP Store”时刻,也就是围绕它的能力,形成一个开发者生态,打造出基于 AI 的“操作系统”!插件系统将为 ChatGPT 带来质的飞跃,因为借助于插件服务,它可以获取实时的互联网信息、调用第三方应用(预定酒店航班、点外卖、购物、查询股票价格等等)。ChatGPT 是一个无比聪明的大脑,而插件会成为它的眼睛、耳朵、手脚、甚至于翅膀,能力惊人,未来不敢想象!官方目前提供了两个插件:一个网页浏览器。

wshyb0314的博客 5121

chatgpt会开源码

ChatGPT 会开源吗?削微寒于 2022-12-08 08:15:06 发布16316文章标签: chatgpt 人工智能版权最近,我被一款叫做 ChatGPT 的人工智能(AI)聊天机器人,刷屏了。网上有人说它是搜索引擎杀手,还有人说它将取代程序员…最后,我还是没扛住铺天盖地的赞美,跑去注册了个账号,抱着调侃“人工智障”的心态,想要调戏 ChatGPT 一番。于是就有了下面的对话:此时,我内心毫无波澜。此刻,我放下了傲慢与偏见。对不起,是我鲁莽了,我才是智障。

OcularSystem的博客 1万+

OpenAI ChatGPT Linux桌面预览版安装、配置与深度评测指南

在人工智能技术普及的浪潮中,大型语言模型(LLM)的应用正从云端API和网页端向本地化、集成化的桌面环境延伸。其核心原理是通过客户端软件封装模型接口,实现低延迟、高集成的交互体验,从而提升开发者和技术工作者的日常效率。从技术价值看,原生桌面应用能更好地利用系统资源,支持全局快捷键、独立窗口和离线缓存等功能,为代码辅助、文档撰写和技术问答等场景提供更流畅的工作流。本文聚焦于OpenAI官方发布的ChatGPT Linux桌面预览版,详细解析其与网页版和API调用的区别,并提供从环境准备、安装部署到功能实测、稳

Hi, Sun 397

揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)

openai版本==1.6.1,本博客对应文件夹03在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。

TracyCoder的博客 1835

人工智能工具包 OpenAI源码

人工智能工具包 OpenAI源码

基于STM32的智能火灾报警系统设计:多传感器融合与远程控制实现

本文详细介绍基于STM32单片机的智能火灾报警系统设计,采用多传感器融合技术(烟雾、温度、火焰检测)实现高精度火灾识别。系统集成远程控制与手机APP监控,通过加权决策算法降低误报率,提供多级响应策略,确保火灾预警的准确性与可靠性。

u5v6w7的博客 1102

OpenAi[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人-学习详解篇

监听QQ消息并不需要我们写代码,因为市面上已经有很多开源QQ机器人框架,在这里我们使用go-cqhttp官方文档:go-cqhttp如果您感兴趣的话,可以阅读一下官方文档,如果不想看,直接看我的文章即可。

Jan's的博客 3万+

手把手教你用VL822-QFN88设计一个支持PD快充的Type-C四口HUB(附原理图要点)

本文详细介绍了基于VL822-QFN88芯片设计支持PD快充的Type-C四口HUB的完整流程,包括芯片选型、系统架构设计、原理图要点、PCB布局及固件配置。特别适合硬件工程师和电子设计爱好者,帮助实现高速数据传输与快速充电的多端口扩展方案。

weixin_30832405的博客 516

在 ZeroClaw 中使用 ChatGPT 订阅运行 OpenAI Codex:配置、计费与 OAuth 认证全指南

本文讲解如何让 ZeroClaw 在 `openai` 槽位上运行 OpenAI Codex 模型(GPT-5.x Codex 系列),用 ChatGPT 订阅额度替代按量计费的 `OPENAI_API_KEY`,并以 Codex 登录态而非 API Key 完成认证。读完本文,你将掌握 Codex 订阅槽位的完整配置方法、`responses` 线协议下的精确模型 ID 使用规则、订阅额度的计费

gitblog_00803的博客 249

xenomai内核解析--嵌入式实时linux概述

Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。 虽然Linux系统功能强大、实用性强...

wsg1100 3699

团结引擎+OpenHarmony 2实战篇:从零构建鸿蒙应用开发环境

本文详细介绍了如何从零开始构建鸿蒙应用开发环境,重点讲解了团结引擎与OpenHarmony 2的实战配置步骤。内容包括DevEco Studio安装、OpenHarmony SDK配置、团结引擎集成及项目创建等关键环节,帮助开发者快速搭建高效的开发环境,提升鸿蒙应用开发效率。

weixin_29294395的博客 262

揭开ChatGPT面纱(4):单轮及多轮文本生成任务实践(completions接口)

openai版本==1.6.1,本博客对应文件夹04在前面的博客中介绍过了OpenAI一共有11个接口,其中completions接口常用于文本生成类任务。下面来对completions接口的参数、使用进行一些介绍。

TracyCoder的博客 1724

西门子S7-1200/1500 PLC编程与应用技巧

西门子S7-1200 PLC是一款紧凑型的控制器,适用于小型到中型的自动化控制任务。紧凑设计:集成了I/O模块,减少了控制柜的空间需求。高性能:高达25µs的扫描时间,能够快速响应。模块化扩展:支持扩展输入输出模块、通信模块和智能模块,满足不同的应用需求。多种编程语言:支持Ladder图(梯形图)、功能块图(FBD)、结构化文本(ST)等多种编程语言。西门子S7-1200与S7-1500 PLC是强大且灵活的工业控制系统,适用于各种自动化应用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2671

看看ChatGPT怎么说-对OpenAI收购Windsurf怎么看?

OpenAI 于 2025 年 5 月初同意以约 30 亿美元收购 AI 编程助手 Windsurf(前身为 Codeium),这将成为其迄今为止最大的一笔并购。

释迦呼呼的博客 1254

告别GPS,用Sentinel-1数据+Python实战SBAS-InSAR监测城市地面沉降(保姆级教程)

本文详细介绍了如何利用Sentinel-1数据和Python实现SBAS-InSAR技术监测城市地面沉降。通过保姆级教程,从环境配置、数据获取到干涉处理、时序分析和形变反演,逐步解析全流程技术细节,帮助读者掌握毫米级精度的形变监测方法,并以上海陆家嘴区域为例展示实际应用效果。

weixin_32771907的博客 534

用 SNC 和 SAP Single Sign-On Secure Login 把 SAP 登录这件小事,变成一件安全又不用输密码的事

在传统的 SAP 系统里,登录这件事看起来很朴素:用户打开 SAP GUI,输入一个 SAP 用户名,再输入一个 SAP 密码,点回车,进系统,开始干活。表面上没毛病,但从安全角度看,这种老办法问题很大。默认情况下,这些用户名和密码在网络上传输时是明文,也就是不加密传输。攻击者如果在公司网络里做监听,理论上可以直接截取到口令信息,这种风险对今天任何一家合规要求高、审计严格的企业来说,基本是不可接受的。(SAP Help Portal)SAP 给出的答案叫做 ,全称是 。SNC 做的事情可以概括成两类:一类是

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 374

深入解析 coze2openai 源码:Coze API 如何被改造成 OpenAI API(请求流程拆解)

coze2openai 是一个把 Coze API 无缝转成 OpenAI API 格式的开源项目,它让所有兼容 OpenAI 接口的客户端(如各类第三方 ChatGPT 应用)都能直接调用 Coze 的模型、知识库、插件与工作流。本文将从源码层面拆解 coze2openai 的完整请求流程,带你看懂「Coze API 转 OpenAI API」这台翻译机器内部到底发生了什么,帮助你理解其工作原理

gitblog_00509的博客 665

华为OD新系统真题-最小极差分组(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【最小极差分组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【最小极差分组】多语言题解。

qq_45776114的博客 585

Claude to ChatGPT源码解析:Adapter类如何实现消息格式转换

Claude to ChatGPT是一个实用的开源项目,它能将Anthropic Claude模型的API转换为OpenAI Chat API格式,让开发者可以轻松地在使用OpenAI API的项目中集成Claude模型。本文将深入解析项目核心的Adapter类,揭示它如何实现消息格式的无缝转换。 ## 核心转换机制:ClaudeAdapter类概览 在[claude_to_chatgpt/a

gitblog_00845的博客 964

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ChatGPT中文版源码

ChatGPT最近很火爆大家都知道吧,今天废话不多说 直接给大家带来一个ChatGPT中文版的源码 先对整体进行一个介绍,这套源码界面很有科技感,其次是功能方面有专门的指令输入框,让你可以舒舒服服的玩转你手中的prompts

志在指尖 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

最新AI写作创作系统源码ChatGPT源码,支持AI绘画/支持OpenAI-GPT全模型+国内AI全模型

SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统+AI绘画系统,支持OpenAI GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!SparkAi程序使用Nestjs和Vue3框架技术,持续集成AI能力到AIGC系统。

学习笔记,人工智能,教程,技术分享! 1600

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 揭开ChatGPT面纱(1):准备工作(搭建开发环境运行OpenAI Demo)
下一篇: 揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)
TracyCoder123
博客等级 码龄8年 1万+粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyCoder123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值