大模型开发(五):实现Jupyter本地调用OpenAI API

news2024/10/6 2:24:43

全文共3000余字,预计阅读时间约15分钟 | 满满干货,建议收藏!

在这里插入图片描述

大模型开发(五):实现Jupyter本地调用OpenAI API

OpenAI作为本轮大语言模型技术进步的先驱,其系列大型模型在效果上一直保持着领先。其推出的各类模型如文本模型、对话模型、嵌入模型、编码模型、图文模型及语音模型,构建了全面而丰富的模型生态圈。

另外,OpenAI的大语言模型能够在线进行推理和微调的模型,与那些需要在本地部署的开源模型相比,其在硬件需求、操作难度以及维护成本上都有明显优势。在许多实际开发情景中,OpenAI的在线大模型成为了首选方案。

本文先从如何实现本地调用OpneAI API流程开始!

一、 官网结构组成

OpenAI官网一定是最权威的帮助文档。给出了各类模型详细的参数解释、应用范例,而且还提供了在线调用和测试模型参数的页面。

同时由于需要根据实际调用API情况进行计费,因此查阅调用API计费规则、查阅账户余额以及及时充值,也是很有必要的!

OpenAI API官网地址

1.1 Documentation

image-20230717164853336

其中要重点关注:

对于大模型来说多轮对话的累积输入文本的最大数量是有限的,超出这个限制就会导致之前的文本被逐渐遗忘。在Documentation页面,需要清楚了解每个模型的MAX TOKENS,表示输入的最大文本限制。

image-20230717165131175

绝大多数模型的MAX TOKENS都是4096tokens,这类模型被称为4k模型,部分模型的MAX TOKENS都是16384tokens,这是一类最新更新的模型(6月13号更新的模型),且尾缀带有16k标志。

一个大概估算的规则是:4K个tokens约等于8000个单词,约4-5页PDF。

1.2 API reference

这个页面中详细讲解了各模型API的参数解释,是开发人员必不可少的说明手册

image-20230717165528130

1.3 Playground

Playground页面相当于是网页端的大模型调用应用,可以在这里直接选择不同类型模型、选择不同的参数、输入不同的提示测试模型输出结果,并且这个页面还可以查看网页端操作对应的代码,整体操作流程非常便捷,也非常适合初学者进行零代码的大模型功能测试。

image-20230717165719091

1.4 计费规则

OpenAI的在线大模型是通过个人API-Key在线验证的方式向OpenAI线上模型提交计算申请,并实时获取返回结果。因此,在实际调用OpenAI在线大模型会根据调用的不同模型、调用次数及输入输出文本数量进行计费,因此在使用时需要时刻关注费用支出情况。具体计费规则可以在Pricing页面查看

image-20230717170509137

image-20230717170258106

其中4K Model就表示MAX TOKENS=4096 tokens的模型,而16K模型则表示MAX TOKENS=16384 tokens的模型。

16K模型的费用是4K模型费用的两倍,其实也是因为16K模型需要有相比4K模型更大的“隐藏空间”容量,模型更加复杂,调用所需费用也更高。因此建议若非进行超大规模的多轮对话,应当尽量选择4K模型。

1.5 调用限制

在实际调用API的过程中,出于对计算资源的保护,OpenAI还限制了各模型API的每分钟请求最大次数(RPM:requests-per-minute)和每分钟Token通信量最大值(TPM:tokens-per-minute),这些限制可以在个人中心的Rate limits页面中进行查看

image-20230717170646665

如果希望放宽限制,则可以填写申请表格,向官方申请提高限制上限。

申请地址

1.6 账户余额

需要时刻关注账户余额及目前使用金额。可以在个人中心的Usage页面查看当前账户余额,以及过去一段时间的账户消费情况

image-20230717170917465

对于每个注册的新账户,系统会默认赠送5刀的使用额度,并保留4个月左右的使用期限。

如果是 商用开发的话,可以在Billing–>Usage limits页面设置每个月最大消费总金额,默认为120刀,若当月API使用金额超过该金额限制,则OpenAI会停止对该API Key调用的响应。该设置可以有效防止由于API滥用导致费用超支

image-20230717171154796

1

其中soft limit指的是当API使用支出超过某个预设金额时,会发送邮件进行提醒。

1.7 账户充值

OpenAI账户充值方法和ChatGPT升级PLUS时的充值方法类似,都是先绑定银行卡然后再进行扣费。在Billing–>Payment methods页面绑定可以用于支付的银行卡即可。OpenAI会根据每个月使用消费金额进行扣费,如果不知道如何付费的,看文末内容

2

二、在Jupyter中本地调用OpenAI API

2.1 环境配置

先配置环境变量,前一篇文章已经讲过了,看这篇文章的前三节:

在Jupyter中调用OpenAI API方法

保存重启电脑,使环境变量生效后,即可启动Jupyter测试能否在Jupyter环境下调用OpenAI大模型API。

对于国内用户,是无法直接访问OpenAI的,需要让Jupyter在代理环境下启动,即需要令Jupyter可以通过代理来访问网络。具体设置方法如下:

Step 1:启动魔法并设置全局代理模型

以我自己用的魔法举例,代理端口如下:

image-20230717172418370

大多数代理都是借助本地回环进行代理,即127.0.0.1,因此当前魔法的代理地址和端口为:127.0.0.1:15732。

Step 2: 配置Jupyter代理

让Jupyter通过代理方式访问网络,最简单的方法就是利用cmd命令行启动jupyter

image-20230717172758128

然后在命令行中启动Jupyter,并且每次启动前输入代理环境设置,即按照如下命令顺序启动Jupyter:

image-20230717172902758

如果报错:

image-20230717173008620

解决办法:

新版Anaconda安装时并不会自动添加环境变量,打开环境变量配置页面,然后点击系统变量内的Path并点击编辑:

image-20230717173511590

然后添加C:\ProgramData\anaconda3\condabin和C:\ProgramData\anaconda3\Scripts两个变量(这两个变量的地址需要是自己安装Anaconda时的安装位置)

image-20230717173636341

再次测试:

image-20230717173836594

  

2.2 调用测试

顺利启动Jupyter之后,即可测试能否顺利调用OpenAI大模型,测试代码如下:

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

openai.Completion.create(
  model="text-davinci-003",
  prompt="Say this is a test",
  max_tokens=7,
  temperature=0
)

结果如下:成功

image-20230717174116898

好了,完成,快动手试一试吧!下一篇继续!

最后,感谢您阅读这篇文章!如果您觉得有所收获,别忘了点赞、收藏并关注我,这是我持续创作的动力。您有任何问题或建议,都可以在评论区留言,我会尽力回答并接受您的反馈。如果您希望了解某个特定主题,也欢迎告诉我,我会乐于创作与之相关的文章。谢谢您的支持,期待与您共同成长!

最后,给大家送上干货!建议大家点赞&收藏,Mark住别丢了。有高质量资料免费送!

1. 关于魔法,你需要知道的

2. 超全流程!OpenAI账户注册看这里!

3. ChatGPT Plus 升级指南

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

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

相关文章

【PDF】HTML通过dom节点生成pdf

1、简要描述 上一篇博客主要讲的是pdf文件转换成canvas,然后进行相关的画框截图操作。 【PDF】Canvas绘制PDF及截图 本篇博客主要讲html中dom如何生成pdf文件(前端生成pdf),后端生成pdf当然也可以,原理也是将html网…

数据容器入门(str)

字符串是字符的容器,一个字符串可以存放任意数量的字符 字符串的特点: 作为数据容器,字符串有如下特点: 只可以存储字符串长度任意(取决于内存大小)支持下标索引允许重复字符串存在不可以修改(…

智慧数据驱动:基于smardaten构建多维数据可视化大屏

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

网络虚拟化相关的Linux接口介绍

Linux拥有丰富的网络虚拟化功能,能被虚拟机,容器还有云网络使用。在这篇文章中,我会给出所有通用网络虚拟化接口的简要介绍。没有代码分析,只有简短的接口介绍和在Linux上的使用操作。这系列接口都可以使用ip link命令实现。 这篇…

reggie优化06-项目部署

1、部署架构 2、部署环境 3、部署前端 4、部署后端 修改图片位置,并push至仓库

Redis数据类型(2)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ 文章目录 Redis数据类型1、Redis 键(key)1.1、KEYS pattern1.2、EXISTS k…

Vector - CANoe - VCDL与SomeIP

目录 一、基础介绍 二、vCDL介绍 1、vCDL工程创建 2、 vCDL编辑器关键字介绍 3、创建命名空间Datatype 接口示例 4、创建命名空间ICalculate 5、创建命名空间Participants 一、基础介绍 SomeIP作为车载以太网一个重要的组成部分,因为它的测试也是我们作为总…

windows PE 指南(基础部分)(二)

windows PE 指南(基础部分)(二) PE文件头IMAGE_OPTIONAL_HEADER.AddressOfEntryPointSectionAlignmentFileAlignment PE文件布局和装入后内存布局节表内容你想在PE文件(PE内存映像)里面找一个数据该怎么找&…

iOS-Block

Blocks的学习 Block的分类 Block根据其类型可以分为三类: 全局Block(NSGlobalBlock)栈Block(NSMallocBlock)堆Block(NSStackBlock) 而其区分的规则为: 如果没有引用局部变量&…

PHP特性之CTF中常见的PHP绕过

目录 一、关于md5()和sha1()的常见绕过 1、使用数组绕过 2、 使用特殊字符串绕过 二、strcmp绕过 三、switch绕过 四、intval绕过 一、关于md5()和sha1()的常见绕过 知识介绍: 1、对于php强比较和弱比较:md5(),sha1()函数无法处理数组…

【数据挖掘】如何为可视化准备数据

一、说明 想要开始您的下一个数据可视化项目吗?首先与数据清理友好。数据清理是任何数据管道中的重要步骤,可将原始的“脏”数据输入转换为更可靠、相关和简洁的数据输入。诸如Tableau Prep或Alteryx之类的数据准备工具就是为此目的而创建的,…

【ACM】—蓝桥杯大一暑期集训Day4

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前正在学习C/C、Java、算法等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&#xff…

基于STM32的homeassistant(采用FreeRTOS操作系统)【第一、二章优化拓展:Wifi、服务器连接验证以及UASRT串口区分】

第一、二章优化拓展开发环境: 主控STM32F103C8T6WIFI模块ESP01S开发语言C开发编译器 KEIL 组网方式WIFI服务器协议MQTT 硬件连接 STM32ESP01S3.3V3.3V GND GND GPIO2 (USRAT2-TX) RXGPIO3 (USART3-RX)TX 本章要点: 对ESP01S的AT指令的反馈指令进…

集合面试题--HashMap

目录 HashMap实现原理 HashMap的jdk1.7和jdk1.8有什么区别 总结 HashMap的put方法的具体流程 常见属性 添加数据的流程图 ​编辑 具体实现源码 总结 HashMap的扩容机制 总结 hashMap的寻址算法 总结 hashmap在1.7情况下的多线程死循环问题 HashMap实现原理 HashMap的…

MyBatis的多表操作

1 MyBatis的多表操作 1.1 多表模型介绍 我们之前学习的都是基于单表操作的,而实际开发中,随着业务难度的加深,肯定需要多表操作的。 多表模型分类 一对一:在任意一方建立外键,关联对方的主键。 一对多:在…

IDEA 工具- Java - Tomcat 9.x - 无法使用外部 tomcat 服务器的断点测试功能

问题:使用外部 Tomcat 运行项目,却无法使用断点功能测试 Java 项目 解决方法: 在 IDEA 工具的tomcat Edit configurations,进行修改 具体配置位置: Environment Variables 配置选项添加内容: NameValueJ…

Unity游戏源码分享-线条圆圈游戏Line and Circle Game Template

Unity游戏源码分享-线条圆圈游戏Line and Circle Game Template 圆圈穿过线条就通关 工程地址: https://download.csdn.net/download/Highning0007/88061484

java学习路程之篇十、知识点、数组介绍、二维数组介绍、静态初始化、访问元素、遍历元素、动态初始化、内存图、数组常见问题

文章目录 01、数组介绍02、数组静态初始化03、数组元素访问04、数组遍历操作05、数组动态初始化06、数组内存图07、数组常见问题08、二维数组介绍09、二维数组静态初始化10、二维数组遍历11、二维数组动态初始化12、二维数组内存图 01、数组介绍 02、数组静态初始化 03、数组元…

封装 视频以及监控组件

1.引入插件。 文件Git 地址&#xff1a; https://gitee.com/wang-xiaowang123/liveplayer.html 文件中 <script src"/assets/js/liveplayer-lib.min.js" exclude></script> // liveplayer-lib.min.js 文件在Git仓库中2.封装组件 LivePlayerDemo.vue …