全文共3000余字,预计阅读时间约15分钟 | 满满干货,建议收藏!
大模型开发(五):实现Jupyter本地调用OpenAI API
OpenAI作为本轮大语言模型技术进步的先驱,其系列大型模型在效果上一直保持着领先。其推出的各类模型如文本模型、对话模型、嵌入模型、编码模型、图文模型及语音模型,构建了全面而丰富的模型生态圈。
另外,OpenAI的大语言模型能够在线进行推理和微调的模型,与那些需要在本地部署的开源模型相比,其在硬件需求、操作难度以及维护成本上都有明显优势。在许多实际开发情景中,OpenAI的在线大模型成为了首选方案。
本文先从如何实现本地调用OpneAI API流程开始!
一、 官网结构组成
OpenAI官网一定是最权威的帮助文档。给出了各类模型详细的参数解释、应用范例,而且还提供了在线调用和测试模型参数的页面。
同时由于需要根据实际调用API情况进行计费,因此查阅调用API计费规则、查阅账户余额以及及时充值,也是很有必要的!
OpenAI API官网地址
1.1 Documentation
其中要重点关注:
对于大模型来说多轮对话的累积输入文本的最大数量是有限的,超出这个限制就会导致之前的文本被逐渐遗忘。在Documentation页面,需要清楚了解每个模型的MAX TOKENS,表示输入的最大文本限制。
绝大多数模型的MAX TOKENS都是4096tokens,这类模型被称为4k模型,部分模型的MAX TOKENS都是16384tokens,这是一类最新更新的模型(6月13号更新的模型),且尾缀带有16k标志。
一个大概估算的规则是:4K个tokens约等于8000个单词,约4-5页PDF。
1.2 API reference
这个页面中详细讲解了各模型API的参数解释,是开发人员必不可少的说明手册
1.3 Playground
Playground页面相当于是网页端的大模型调用应用,可以在这里直接选择不同类型模型、选择不同的参数、输入不同的提示测试模型输出结果,并且这个页面还可以查看网页端操作对应的代码,整体操作流程非常便捷,也非常适合初学者进行零代码的大模型功能测试。
1.4 计费规则
OpenAI的在线大模型是通过个人API-Key在线验证的方式向OpenAI线上模型提交计算申请,并实时获取返回结果。因此,在实际调用OpenAI在线大模型会根据调用的不同模型、调用次数及输入输出文本数量进行计费,因此在使用时需要时刻关注费用支出情况。具体计费规则可以在Pricing页面查看
其中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页面中进行查看
如果希望放宽限制,则可以填写申请表格,向官方申请提高限制上限。
申请地址
1.6 账户余额
需要时刻关注账户余额及目前使用金额。可以在个人中心的Usage页面查看当前账户余额,以及过去一段时间的账户消费情况
对于每个注册的新账户,系统会默认赠送5刀的使用额度,并保留4个月左右的使用期限。
如果是 商用开发的话,可以在Billing–>Usage limits页面设置每个月最大消费总金额,默认为120刀,若当月API使用金额超过该金额限制,则OpenAI会停止对该API Key调用的响应。该设置可以有效防止由于API滥用导致费用超支
其中soft limit指的是当API使用支出超过某个预设金额时,会发送邮件进行提醒。
1.7 账户充值
OpenAI账户充值方法和ChatGPT升级PLUS时的充值方法类似,都是先绑定银行卡然后再进行扣费。在Billing–>Payment methods页面绑定可以用于支付的银行卡即可。OpenAI会根据每个月使用消费金额进行扣费,如果不知道如何付费的,看文末内容
二、在Jupyter中本地调用OpenAI API
2.1 环境配置
先配置环境变量,前一篇文章已经讲过了,看这篇文章的前三节:
在Jupyter中调用OpenAI API方法
保存重启电脑,使环境变量生效后,即可启动Jupyter测试能否在Jupyter环境下调用OpenAI大模型API。
对于国内用户,是无法直接访问OpenAI的,需要让Jupyter在代理环境下启动,即需要令Jupyter可以通过代理来访问网络。具体设置方法如下:
Step 1:启动魔法并设置全局代理模型
以我自己用的魔法举例,代理端口如下:
大多数代理都是借助本地回环进行代理,即127.0.0.1,因此当前魔法的代理地址和端口为:127.0.0.1:15732。
Step 2: 配置Jupyter代理
让Jupyter通过代理方式访问网络,最简单的方法就是利用cmd命令行启动jupyter
然后在命令行中启动Jupyter,并且每次启动前输入代理环境设置,即按照如下命令顺序启动Jupyter:
如果报错:
解决办法:
新版Anaconda安装时并不会自动添加环境变量,打开环境变量配置页面,然后点击系统变量内的Path并点击编辑:
然后添加C:\ProgramData\anaconda3\condabin和C:\ProgramData\anaconda3\Scripts两个变量(这两个变量的地址需要是自己安装Anaconda时的安装位置)
再次测试:
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
)
结果如下:成功
好了,完成,快动手试一试吧!下一篇继续!
最后,感谢您阅读这篇文章!如果您觉得有所收获,别忘了点赞、收藏并关注我,这是我持续创作的动力。您有任何问题或建议,都可以在评论区留言,我会尽力回答并接受您的反馈。如果您希望了解某个特定主题,也欢迎告诉我,我会乐于创作与之相关的文章。谢谢您的支持,期待与您共同成长!