通过阿里云函数计算解决ChatGPT API的调用问题

news2024/11/27 5:26:55

ChatGPT系列文章


与其被ChatGPT取代,不如征服ChatGPT,做它的主人!

文章目录

  • ChatGPT系列文章
  • 前言
  • 命令行部署
    • 准备工作
  • 两行命令实现部署
  • 应用中心部署
  • 使用代理访问API
  • 总结


前言

自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混乱,稍有不慎就有可能被封号。所以,我们最好还是有一个稳定的位于国外的调用来源,这样日常开发调试就能更效率一些。

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


命令行部署

准备工作

点击这里,进入管理“控制台”,开通函数计算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 去阿里云的控制台找到创建的这个函数服务:
在这里插入图片描述

应用中心部署

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

第一步:点击这里,进入管理“控制台”,开通函数计算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

2、打开浏览器,访问:http://localhost:3000/,可以看到如下页面:
在这里插入图片描述
尝试给他设定一个角色,然后发几句话试试吧,如果可以收到AI回复,那就代表已经完成代理。

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

https://github.com/mckaywrigley/chatbot-ui
https://github.com/logspace-ai/langflow

总结

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

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

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

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

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

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

参考资料
https://github.com/Ice-Hazymoon/openai-scf-proxy/
https://www.aliyun.com/product/fc
https://github.com/ddiu8081/chatgpt-demo

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

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

相关文章

最新版本VSCode配置Python、PyQt5、QtDesigner环境并创建一个ui界面测试

参考链接:最新版本VSCode配置Python、PyQt5、QtDesigner环境并创建一个ui界面测试 一、安装Python3 PyQt5所支持的python版本是从3.5开始的,因此安装的Python3版本必须大于3.5。 我安装的位置是C:\Python\Python38。 参见真小白入门Pyhton的安装 二、安…

图-文多模态,大模型,预训练

参考老师的无敌课程 多模态任务是指需要同时处理两种或多种不同类型的数据(如图像、文本、音频等)的任务。例如,图像描述(image captioning)就是一种典型的多模态任务,它需要根据给定的图像生成相应的文本描…

XO08R2 1SBP260109R1001接地系统能够为dcs提供屏蔽层,消除电子噪声干扰

​ XO08R2 1SBP260109R1001接地系统能够为dcs提供屏蔽层,消除电子噪声干扰 dcs合理、可靠的系统接地,是dcs系统非常重要的内容。为了保证dcs系统的监测控制精度和安全、可靠运行,必须对系统接地方式、接地要求、信号屏蔽、接地线截面选择、接…

【C++学习】map和set的封装

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! map和set的封装🍉map和set中的红黑树🍌set中的键值和map中的键值&#x1f349…

CTF杂项提纲

CTF的杂项是涉及编码,图片隐写,音频隐写,压缩包分析的方向,本文对MISC的知识点做了一个简单列举 常见编码 ASCII 0-9,48-57 A-Z 65-90 a-z 97-122 URL url编码又叫百分号编码,是统一资源定位的编码方式 base16/…

ModStartCMS v6.2.0 VIP权益配置功能,界面UI优化升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

【初识数据库】数据库简介及MySQL安装

目录 数据库基本概念: 主流的关系型数据库: 下载并安装数据库 我们选择的是:MySQL Community Server 8.0.26 卸载老版本MySQL 数据库基本概念: 数据库:是数据的仓库,存储数据的地方 数据库管理系统&am…

RK3568平台开发系列讲解(调试篇)debugfs 分析手段

🚀返回专栏总目录 文章目录 一、enable debugfs二、debugfs API三、使用示例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux 上有一些典型的问题分析手段,从这些基本的分析方法入手,你可以一步步判断出问题根因。这些分析手段,可以简单地归纳为下图: 从这…

进程虚拟地址空间的划分

进程虚拟地址空间划分是操作系统中的一个核心概念,它决定了进程可以访问的内存范围和方式。在本文中,我们将介绍进程虚拟地址空间的划分方法和各个部分的作用。 进程虚拟地址空间的划分方法 在操作系统中,每个进程都有自己的虚拟地址空间&am…

到底还是留不住!库克“中国行”后火速变脸,3000亿产能转向印度?

以国家的层面来制衡一家科技企业,这种事或许只有老美干得出来。当看到华为即将崛起之时,美一意孤行,修改了大量关乎芯片和商贸的政策。层层围堵之下,华为如今的市场份额大幅缩水,腾出来的高端市场基本被苹果占据。相关…

2023年数据挖掘与知识发现国际会议(DMKD 2023) | IOP JPCS独立出版

会议简介 Brief Introduction 2023年数据挖掘与知识发现国际会议(DMKD 2023) 会议时间:2023年6月24日-26日 召开地点:中国重庆 大会官网:DMKD 2023-2023 International Conference on Data Mining and Knowledge Discovery 由重庆邮电大学、重…

找工作吗?50道Python面试题集锦【附答案】

嗨害大家好鸭!我是爱摸鱼的芝士~ 希望能够帮助你在今年的求职面试中脱颖而出, 找到一份高薪工作~ 这些面试题涉及Python基础知识、Python编程、数据分析以及Python函数库等多个方面。 提前预祝给这篇文章点赞收藏的友友们~ 拿到心中最满意的那一份OF…

PHP快速入门13-MySQL数据库与Redis操作

文章目录前言一、PHP连接MySQL1.1 建立数据库链接1.2 插入数据1.3 更新数据1.4 删除数据1.5 查询数据并输出结果1.6 查询数据并返回结果1.7 获取查询结果的行数1.8 获取查询结果的列数1.9 获取查询结果的字段名1.10 获取查询结果的字段类型1.11 获取上一次操作影响的行数1.12 开…

PsExec流量分析

PsExec远程连接服务器 psexec是sysinternals提供的众多windows工具中的一个,这款工具的初衷是帮助管理员管理大量的机器的,后来被攻击者用来做横向渗透。 下载地址: https://docs.microsoft.com/en-us/sysinternals/downloads/psexec使用Ps…

d2l 里面GRU与Lstm实现

此二者的本质都是对rnn进行改良:关注当前多还是关注之前多。 在此详细讲一下。 目录 1.GRU门循环控制单元 1.1理论: 1.2初始化参数 1.3定义网络 1.4训练命令行 1.5简洁实现 2.Lstm长短期记忆网络 2.1理论 2.2加载参数 2.3定义lstm计算 2.4定义…

iTOP4412开发板Qt程序打包和部署

因为我们要把写好的程序发给用户来用,写好的源码也不方便给别人看,所以要把程序进行打包部署。 步骤一:点击左下角的电脑图标将 Debug 模式切换到 Release 模式。 release 模式:发布版本,不对源代码进行调试&#xff…

微信小程序:表格中更改输入框的值,实时获取表格全部数据,点击按钮更改数据库指定项数据

样例: 样式展示 数据库中原始第一条数据 修改表格第一行的数量: 数据库结果 核心代码 wxml ①wx:for:执行循环将数组数据展示出来 ②在某一单元格加上input样式 ③在input中绑定:文本框改变事件,并且绑定data-index便于知道…

网络编程,IO流

网络编程 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 1.网络通信的要素 通信…

程序环境和预处理(下)——“C”

各位CSDN的uu们你们好呀,今天小雅兰的内容是程序环境和预处理的下篇知识点,那么,这篇博客写完后,C语言的知识点就到这里就结束啦,后续会专注于刷题和读书,也是关于C语言的,会写一些数据结构和C的…

本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录

文章目录前言1. 安装宝塔2. 安装cpolar内网穿透3. 远程访问宝塔4. 固定http地址5. 配置二级子域名6. 测试访问二级子域名转发自CSDN远程穿透的文章:Linux安装宝塔,并实现公网远程登录宝塔面板【内网穿透】 前言 宝塔面板作为建站运维工具,它…