两条命令搞定 ChatGPT API 的调用问题

两条,命令,搞定,chatgpt,api,调用,问题 · 浏览次数 : 1019

小编点评

# 打开AI代理搭建指南 **引言** 打开AI代理搭建指南,我们开始探索如何利用OpenAI技术,搭建一个AI代理应用。 **第一步:创建基础环境** - 访问官方网站,获取OpenAI开发环境:https://openai.dev/ - 账号注册,并获取API Key。 **第二步:选择部署方式** - 函数计算:易于部署,可进行跨用户测试。 - SaaS:可利用现有的SaaS租户资源,快速搭建应用。 **第三步:创建应用** - 选择函数计算或SaaS部署方式。 - 输入应用信息,如应用名、API Key、环境配置等。 - 配置运行环境,例如环境变量、日志输出等。 **第四步:开始搭建应用** - 根据 chosen的方式,开始构建应用。 - 我们可以选择使用本地环境进行测试,也可以选择使用在线平台进行测试。 **第五步:验证应用** - 访问应用页面,验证是否成功运行。 - 可以查看日志文件,获取应用运行的信息。 **第六步:部署应用** - 可选择将应用部署到本地环境或在线平台。 - 配置运行环境,例如环境变量、日志输出等。 **第七步:启动应用** - 启动应用,可以访问应用页面。 - 可查看应用运行的日志,验证是否正常运行。 **第八步:进行测试** - 可进行各种测试,验证应用是否正常运行。 - 可以根据测试结果,进行优化和改进。 **第九步:发布应用** - 可选择将应用发布到本地环境或在线平台。 - 配置发布环境,例如环境变量、日志输出等。 **第十步:监控应用** - 可设置监控应用运行的日志,进行持续监控。 - 可以根据需要,进行调整和优化。 **总结** 打开AI代理搭建指南,让我们开始探索如何搭建一个AI代理应用,利用OpenAI技术,为我们的应用做出贡献。

正文

自2022年11月30日 OpenAI 发布 ChatGPT 以来,虽然时有唱衰的声音出现,但在OpenAI不断推陈出新,陆续发布了OpenAPI、GPT-4、ChatGPT Plugins之后,似乎让大家看到了一个聊天机器人往操作系统入口进军的升纬之路。

ChatGPT能被认为是操作系统级别的入口平台,那么必然会催生各行各业应用的重新入局。对此,作为一名开发者来说,面对这样的变革,应该尽早的去了解与实践,在蓝海里更容易找到一份自己的位置。目前DD知道的就有不少小伙伴在基于其API做一些出海的应用。

最近,DD也花了不少时间去研究和体验了一些有趣的内容。比如:尝试跑了一些基于其API实现的类ChatGPT应用:

还有比如下面这个通过拖拽就能轻松调试和构建智能聊天应用的开源工具:

在这几天的不断尝试过程中,DD发现一个比较麻烦的问题,就是这些应用都需要OpenAI的API Key。

作为开发者来说,相信不少小伙伴知道如何获取了,这里就不细节说了,大家可以Google一下,有大量的资料。

这里具体说说另外一个问题:由于我们本地调试、服务器部署等原因,在请求 https://api.openai.com 的时候,很容易造成IP混乱,稍有不慎就有可能被封号。所以,我们最好还是有一个稳定的位于国外的调用来源,这样日常开发调试就能更效率一些。

那么如何快捷方便的来搞定呢?下面就给大家分享一个利用阿里云函数计算(有大量免费试用额度)来实现的方案。

命令行部署

准备工作

  1. 点击链接(https://t.aliyun.com/U/nb5Ka1),进入管理“控制台”,开通函数计算FC

  1. 安装最新版本的nodejs,不会的可以看官网:https://nodejs.org/

  2. 执行命令安装Serverless Devs Tool

npm安装:
$ npm install @serverless-devs/s -g

yarn安装:
$ yarn global add @serverless-devs/s
  1. 通过该链接(https://usercenter.console.aliyun.com/#/manage/ak ),获取阿里云的AccessKey。一定要把这里获取的AccessKey ID和AccessKey Secret记下来,下面马上要用。
  2. 为Serverless Devs Tool配置阿里云的AccessKey
$ s config add 
? Please select a provider: Alibaba Cloud (alibaba)
🧭 Refer to the document for alibaba key:  http://config.devsapp.net/account/alibaba
? AccessKeyID 此处填写AccessKeyID
? AccessKeySecret 此处填写AccessKeySecret
? Please create alias for key pair. If not, please enter to skip alibaba-access

Alias: alibaba-access
AccountID: 自动获取AccountID
AccessKeyID: 此处填写AccessKeyID
AccessKeySecret: 此处填写AccessKeySecret

✔ Configuration successful

两行命令实现部署

在完成了上面的准备工作之后,接下来我们只需要两行命令即可完成代理服务的部署!

第一步:初始化项目。执行命令**s init openai-proxy**,创建openai-proxy项目。

$ s init openai-proxy

🚀  More applications: https://registry.serverless-devs.com

? Please input your project name (init dir) openai-proxy
✔ file decompression completed
创建应用所在的地区
? 地域 us-west-1
? please select credential alias aliyun-key

🏄‍  Thanks for using Serverless-Devs
👉  You could [cd /Users/zhaiyongchao/IdeaProjects/test/openai-proxy] and enjoy your serverless journey!
🧭️  If you need help for this example, you can use [s -h] after you enter folder.
💞  Document ❤ Star: https://github.com/Serverless-Devs/Serverless-Devs
🚀  More applications: https://registry.serverless-devs.com

会有几个选项,一直回车就好,如果想修改也行,自己根据需要选择即可。

第二步:一键部署。进到初始化好的openai-proxy目录下,然后执行命令**s deploy**直接部署到阿里云上。不要怀疑,就是这么丝滑,一键完成!

$ s deploy

📑 Config check:
Online status => Target Status
  routeConfig: [
    0: {
    + qualifier: undefined
    }
  ]

? Domain [auto] was changed, please confirm before deployment:
    * You can also specify to use local configuration through --use-local during deployment)  use local
✔ Generated auto custom domain...
✔ Generated custom domain (3.78s)
⠙ Generated auto custom domain...
注意:当前域名并非阿里云官方域名,由 CNCF Project Serverless Devs 社区提供,仅供测试使用。
Note: The current domain name is not the official domain name of Alibaba Cloud. It is provided by the CNCF Project Serverless Devs community for testing purposes only
✔ Generated domain (23.38s)
✔ Checking Service, Function, Triggers (1.53s)
✔ Creating Service, Function, Triggers (9.57s)
✔ Creating custom domain (1.7s)

Tips for next step
======================
* Display information of the deployed resource: s info
* Display metrics: s metrics
* Display logs: s logs
* Invoke remote function: s invoke
* Remove Service: s remove service
* Remove Function: s remove function
* Remove Trigger: s remove trigger
* Remove CustomDomain: s remove domain


...

在部署完成之后,最后面会有上图这样的一段输出,记住红线部分的域名,这是可以直接访问。你可以尝试访问一下,如果返回如下信息,说明部署成功了。

{
  "error": {
    "message": "Invalid URL (GET /)",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}

同时,我们也可以通过这个链接https://fcnext.console.aliyun.com/us-west-1/services 去阿里云的控制台找到创建的这个函数服务:

应用中心部署

如果你不喜欢命令行的部署方式的话,还可以通过应用中心实现部署,方法更简单!

第一步:点击链接(https://t.aliyun.com/U/nb5Ka1),进入管理“控制台”,开通函数计算FC

访问应用中心:http://www.devsapp.cn/details.html?name=openai-proxy

第二步:点击“一键部署”按钮

第三步:点击“创建并部署默认环境”

接下来就是等着阿里云的精彩表演:

完成部署之后,可以看到如下图的操作列中,有“访问域名”链接,点击后就可以获取到用来代理的域名了。

使用代理访问API

通过简单的五步操作,我们已经完成了一个OpenAI调用的代理搭建,还记得上面最后配置的域名不?接下来就可以随便找一个开源项目来使用一下试试。

比如可以用这个项目来验证一下:https://github.com/ddiu8081/chatgpt-demo

方法很简单,只需要

  1. 拉取代码:git clone git@github.com:ddiu8081/chatgpt-demo.git
  2. 安装依赖:npm install
  3. 复制.env.example文件,命名为.env文件,把申请的OPENAI_API_KEY填上,再把OPENAI_API_BASE_URL填写上面配置好的代理地址,比如:http://openai-proxy.abc123.com

  1. 启动应用:npm start,控制台输出如下信息,代表启动成功
> chatgpt-api-demo@0.0.1 start
> astro dev

  🚀  astro  v2.1.7 started in 209ms
  
  ┃ Local    http://localhost:3000/
  ┃ Network  use --host to expose
  1. 打开浏览器,访问:http://localhost:3000/,可以看到如下页面:

尝试给他设定一个角色,然后发几句话试试吧,如果可以收到AI回复,那就代表已经完成代理。

当然,你也可以选择很多其他的应用来验证和使用,比如下面这些有趣的项目:

总结

通过本文的方法搭建之后,由于已经有一个位于海外的调用来源,所以在本地开发和线上测试的时候,可以都直接用同一个API Key即可,本地日常使用也不需要采用其他特殊手段了,是不是安逸不少呢?

最后,聊聊为什么选择函数计算来部署,主要还是几个方面的考虑:

  1. 轻松部署:可以看到只需要简单几步,就完成了,非常适合这类轻量级的应用部署。
  2. 免运维:几乎不需要运维,大大减少了日常繁琐的精力投入,可以更专注业务开发了。
  3. 省钱利器:函数计算拥有弹性伸缩的能力,最小可以缩为零,也就是如果不调用,都不会产生费用。

进一步思考下,函数计算还是非常适合于开发ChatGPT应用的。由于OpenAPI的API Key是按量计费的,函数计算也是按量计费的,那么这样的按量计费模式可以继续传递到用户侧。如果用户侧的调用实现采用函数计算的方式来部署,那么可以说除了基础控制模块存在固定成本之外,用户侧的成本和收益是强绑定关系。只要架构合理,充分利用函数计算的弹性伸缩能力,那就可以构建出一个低成本运行但却又能自动应对突发大流量的强壮应用。

其实,巧妙的应用函数计算来构建偏向用户侧的应用,不光对于ChatGPT有用。对于一些SaaS应用的场景来说,也可以深入思考和尝试,除了弹性伸缩的能力之外。借助函数计算提供的API能力,还能利用其实现SaaS租户的资源隔离。写着写着似乎又偏题了…

回到ChatGPT的正题,如果你还在纠结,未来ChatGPT是否会淘汰程序员的话,那就一起行动起来吧!与其被ChatGPT取代,不如征服ChatGPT,做它的主人!

参考资料

  1. https://github.com/Ice-Hazymoon/openai-scf-proxy/
  2. https://www.aliyun.com/product/fc
  3. https://github.com/ddiu8081/chatgpt-demo

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

与两条命令搞定 ChatGPT API 的调用问题相似的内容:

两条命令搞定 ChatGPT API 的调用问题

自2022年11月30日 OpenAI 发布 ChatGPT 以来,虽然时有唱衰的声音出现,但在OpenAI不断推陈出新,陆续发布了OpenAPI、GPT-4、ChatGPT Plugins之后,似乎让大家看到了一个聊天机器人往操作系统入口进军的升纬之路。 ChatGPT能被认为是操作系统级别的入口

tcpdump后台不间断抓包

版本1的抓包命令 这两天排查一个小问题,需要在服务器上使用tcpdump24小时不间断抓包,这里简单记录下。 先看下tcpdump的语法: tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] [ -c count ] [ -C fil

OSPF常用配置和常用的查看命令

转载请注明出处: 1.启动OSPF进程,进入OSPF视图。 [Huawei] ospf [ process-id | Router ID Router ID ] 路由器支持OSPF多进程,进程号是本地概念,两台使用不同OSPF进程号设备之间也能够建立邻接关系。 2.创建并进入OSPF区域视图 [Hu

5.8 汇编语言:汇编高效除法运算

通常情况下计算除法会使用`div/idiv`这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高除法运算的效率。

买条新内存给台式机扩容,没想到出现玄学花屏

背景 我目前的配置是i5-8400,16G内存(两条威刚8G 2400) 然后在日常使用中,16G内存已经捉襟见肘了,无论是Android开发还是后端开发,每次编译都卡得很 正好双十一,就想着买条16G内存来扩容,组个32G的双通道。 某东看了一圈,2400的16G内存基本绝迹了,只能选择2666的

[转帖]中国与美国光纤网络连接详解

众所周知,中美刚好在地球的对面,隔着老大老大的太平洋。为了两国人民的“友谊”,网络互通,中美之间的网络、电话等数据传输得通过跨域太平洋的海底光缆来进行。 目前中美之间有两条直达海底光缆,一条是中美直达海底光缆(China-US CableNetwork),网络容量达到了 80Gbps。中国大陆登陆点

[转帖]Intel AVX 系列指令基础介绍

https://zhuanlan.zhihu.com/p/437657452 一、发展背景 1993年,Intel公司推出了奔腾处理器,该类型处理器拥有两条执行流水线,和当时的处理器相比,可以同时执行两条指令,实现超标量性能。1996年,P6系列处理器中的奔腾II处理器引入了英特尔MMX技术,这是是

Socket 如何处理粘包

Socket 如何处理粘包 什么是粘包什么是半包? 粘包: 比如发送了AA BB 两条消息,但是另一方接收到的消息却是AAB,像这种一次性读取了俩条数据的情况就是粘包 半包: 比如发送的消息是ABC时,另一方收到的是AB和C俩条消息,这就是半包 为什么会有这种问题呢? 这是因为 TCP 是面向连接的

让SQL起飞(优化)

最近博主看完了《SQL进阶教程》这本书,看完后给博主打开了SQL世界的新大门,对于 SQL 的理解不在局限于以前的常规用法。借用其他读者的评论, ❝ 读完醍醐灌顶,对SQL做到了知其然更能知其所以然。全书从头到尾强调了 SQL的内在逻辑是基于集合论和谓词逻辑,而着两条主线恰恰在使用SQL起到了至关重

client-go实战之六:时隔两年,刷新版本继续实战

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 时隔两年,《client-go实战》被激活,更多内容将会继续更新 时间过得真快,《client-go实战》系列已是两年前的作品,近期工作中再次用到clie