兩條命令搞定 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混亂,稍有不慎就有可能被封號。所以,我們最好還是有一個穩定的位於國外的調用來源,這樣日常開發調試就能更效率一些。

那麼如何快捷方便的來搞定呢?下面就給大家分享一個利用阿里雲函數計算(有大量免費試用額度)來實現的方案。

命令行部署

準備工作

  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 [email protected]: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,控制檯輸出如下信息,代表啓動成功
> [email protected] 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。第一時間瞭解前沿行業消息、分享深度技術乾貨、獲取優質學習資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章