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

全文共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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu搭建docker+laradock

使用Ubuntu搭建dockerlaradock windows 下载Ubuntu工具二选一 链接:https://pan.baidu.com/s/154K6MKdFZxWqaTn2q-6MSQ 提取码:06lc https://www.jianshu.com/p/b7e11d0dbe8c借鉴地址:https://zhuanlan.zhihu.com/p/547169542 备注&#x…

JS-27 前端数据请求方式;HTTP协议的解析;JavaScript XHR、Fetch的数据请求与响应函数;前端文件上传XHR、Fetch;安装浏览器插件FeHelper

目录 1_前端数据请求方式1.1_前后端分离的优势1.2_网页的渲染过程 – 服务器端渲染1.3_网页的渲染过程 – 前后端分离 2_HTTP协议的解析2.1_HTTP概念2.2_网页中资源的获取2.3_HTTP的组成2.4_HTTP的版本2.5_HTTP的请求方式2.6_HTTP Request Header2.7_HTTP Response响应状态码 3…

成为机器人工程师需要学习那些技术

机器人工程师是未来比较吃香的工作岗位,要成为机器人工程师,ChatGPT的回答是,建议你需要学习以下技术: 1、机械工程:了解机械结构、运动学和动力学,以及机械设计和制造方面的知识。 2、电子工程&#xff1…

opencv -11 图像运算之按位逻辑运算(图像融合图像修复和去除)

按位逻辑运算是一种对图像进行像素级别的逻辑操作的方法,使用OpenCV的按位逻辑运算函数可以对图像进行位与(AND)、位或(OR)、位非(NOT)和位异或(XOR)等操作。 通俗点就是…

i.MX6ULL(十六) linux 设备驱动

一 简介 Linux设备驱动是指驱动Linux内核与硬件设备进行通信的软件模块。设备驱动通常分为两类:字符设备驱动和块设备驱动。 设备驱动的主要功能包括: 设备初始化:在系统启动时,设备驱动需要初始化相应的硬件设备,设…

8、链路层以太网协议,ARP协议32

网络层IP协议描述了通信中的起点到终点,但是数据不是飞过去的,是经过了大量的中间节点转发完成的。 一、以太网协议 1、MAC地址 物理硬件地址,是每一块网卡在出厂时设定的地址,固定且不可修改(早期,现在可…

密码学学习笔记(十五):ECDSA - 椭圆曲线数字签名算法

椭圆曲线数字签名算法是DSA的一种椭圆曲线变体,它发明的初衷只是避免使用Schnorr签名的专利。椭圆曲线数字签名算法依赖于验证器中的私钥和主机用于验证验证器的公钥。它的缺点和DSA一样,它也没有提供安全性证明。 椭圆曲线算法 DSS(数字签…

【Vue面试题系列】四

VNode有哪些属性? Vue内部定义的Vnode对象包含了以下属性: __v_isVNode: true,内部属性,有该属性表示为Vnode __v_skip: true,内部属性,表示跳过响应式转换,reactive转换时会根据此属性进行判断…

Django实现接口自动化平台(十四)测试用例模块Testcases序列化器及视图【持续更新中】

相关文章: Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django…

一条命令解决端口占用,开启mysql

注:最后有面试挑战,看看自己掌握了吗 文章目录 端口占用开启mysql 端口占用 如果发现 8080 端口被占用可以使用命令 sudo lsof -t -i:8080 | sudo xargs kill -9 查找并杀死相应的进程。 开启mysql 打开命令提示符或终端。如果您已经安装了MySQL&…

Cesium Terrain Builder (CTB) 简单使用_地形切片

Cesium Terrain Builder (CTB) 简单使用_地形切片 目录 Cesium Terrain Builder (CTB) 简单使用_地形切片 官网地址: winr(cmd)打开命令提示符工具运行: Create a GDAL Virtual Dataset (optional) Create Cesium Terrain fi…

EasyCVR视频融合平台能正常播放其他协议流,但无法播放HLS流的原因排查

EasyCVR基于云边端一体化架构,支持海量视频汇聚管理,平台支持多协议与多类型设备接入,具体包括国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等,能对外分发RTMP、RTSP、HTTP-FLV、WS-FLV、HLS、WebRTC等。…

部署langchain+chatglm

先参考:window零基础部署langchain-ChatGLM_飞奔的屎壳郎的博客-CSDN博客 安装一部分, 1.GCC安装 gcc64位下载 一定要装64位的gcc,因为我的电脑是w10 64位的,装32位运行langchain报错并配置环境变量 可直接用压缩包中的文件&am…

八股文(消息队列)

文章目录 1. RabbitMQ特点2. 如何保证消息的可靠性3. RabbitMQ消息的顺序性4. 实现RabbitMQ的高可用性5. 如何解决消息队列的延时以及过期失效问题?6. RabbitMQ死信队列7. RabbitMQ延迟队列8.RabbitMQ的工作模式9. RabbitMQ消息如何传输10. 核心概念10.1 生产者和消…

python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)

简介 上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是…

python_day11_pymysql

SQL基础语法回忆 show DATABASES;use world;-- SELECT DATABASES();show TABLES;CREATE TABLE Student(id int,name VARCHAR(10),age int,gender VARCHAR(5) );删除表 # 删除表 DROP TABLE Student;插入操作 insert into student(id) VALUES(1),(2),(3);insert i…

HTML+CSS+JavaScript:渲染柱形统计图

一、需求 用户输入四个季度的数据&#xff0c;根据数据生成柱形统计图&#xff0c;浏览器预览效果如下 二、完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&q…

vue-sticky简单使用(实现吸顶效果)

参考链接 vue-sticky&#xff1a;在页面滚动时将指定元素固定在窗口上的某个位置 生效条件如下&#xff1a; 1、父元素不能设置 overflow:hidden 或者 overflow:auto 属性 2、至少指定 top 、bottom 、left 、right 4 个值中的一个&#xff0c;否则只会处于相对定位 3、父元素…

云曦期末复现

serialize 代码审计&#xff0c;给1传参&#xff0c;满足password的值为yunxi&#xff0c;那么反序列化前就会执行__wakeup函数&#xff0c;从而得到flag.php&#xff0c;但是password的值被定死为1&#xff0c;利用PHP反序列化的字符逃逸: <?php error_reporting(0); hig…

android studio 离线打包配置push模块

1.依赖引入 SDK\libs aps-release.aar, aps-unipush-release.aar, gtc.aar, gtsdk-3.2.11.0.aar, 从android studio的sdk中找到对应的包放到HBuilder-Integrate-AS\simpleDemo\libs下面 2.打开build.gradle&#xff0c;在defaultConfig添加manifestPlaceholders节点&#xff0c…