鑒於本篇為第一篇文章,趁此機會說明下文章主要方向,我主要會過一遍官方範例,看看是否有沒有說明清楚的地方或不能使用的地方並調整,所以除了實踐的目標架構會為了說明清楚而挪用官網的說法外,在實踐階段,我會說明官網沒有說到或說明不清的部分。
本次來實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端,官方練習網頁如下,就讓我們來看看實踐結果如何。 https://aws.amazon.com/cn/campaigns/build-your-own-chatgpt/
一. 整體架構
這次會用到4種AWS服務,首先是Lambda負責3個行為:登入、驗證、與API溝通,並使用API Gateway 來管控所有的呼叫,再來建置DynamoDB存放登入用帳密,建置S3容器來託管靜態網頁,另外還有一個外部的 OpenAI API 提供對話功能,整體架構如下圖。
二. 實踐流程
本次實踐有幾點第一次接觸可能會遇到的問題 :
1. 在login功能中,需要對其增加對DynamoDB的存取權,原話為
"此函数将调用 DynamoDB 的 API 来验证用户名和密码,因此我们需要附加
AmazonDynamoDBReadOnlyAccess 策略或为此函数的执行角色创建访问
DynamoDB 的内联策略。"
在這段若是不熟悉的人會找不太到該如何增加這個策略,此時需要點擊執行角
色名稱會跳轉到執行角色頁面,此時便會看到新增選項
2. 因這幾個月 OpenAI API 有更新,官網提供的程式包內內置的api版本較舊,如果
單純照範例做的話,會出現500、429、404等錯誤,主要需要修改server中
lambda_chat中定義的openai api 版本以及index中相關因 API 升級的函式用法差
異,我將修改後的代碼放置於我的Github 。
3. 再來若需要使用OpenAI API , 需要提升 OpenAI 帳戶至付費方案(並非每月20
鎂的Plus會員,而是需要進行支付方式綁定,並預先付一點,這樣產生出來的Key才
能正常使用,不然會一直反饋超流量等錯誤)。
三. 結語
本次實踐了整個過程,主要還是卡在API的版本升級,或許這篇的內容在幾個月後也會失效也不一定,但那不重要,主要是前半段的部分,包含S3靜態網頁託管,Lambda及Gateway的建立與使用,這些都是很常使用且擴展性很高的作法,至於串接的API本來就會因API的不同有這不同的溝通方式,我想我會先保留這些已建置好的資源,或許後續的實踐中能逐漸加入更多的功能。