播放獲取
PlayFetch 可以快速、輕鬆地將大型語言模型功能新增至您的應用程式。
背景
法學碩士改變了產品團隊的工作方式。現在越來越多的應用程式是用自然語言建構的。通常有非工程團隊成員參與此過程 - 關心生成文字的語氣和交付的內容策略師,為生成的內容帶來高度專業知識的領域專家,以及對生成的內容有深入了解的設計師和產品經理。他們的產品需求。隨著這些新的團隊成員與工程團隊一起參與原型設計、開發和維護應用程式的關鍵部分,出現了許多新的互動。
工程師和團隊其他成員之間的這些新互動需要新的工具。工程師不希望純文字分佈在他們的程式碼庫中,不斷要求更新,結果卻發現新版本其實不更好。提示或鏈的貢獻者不希望必須等待工程師整合他們的更新才發現它們沒有按預期執行。 PlayFetch 解決了我們在採用這種方式的公司中觀察到的這些問題以及許多其他痛點。
什麼是 PlayFetch?
- 一個直覺的提示遊樂場,圍繞著評論、註釋、標籤和評級的協作而構建。
- 任何團隊成員都可以透明地使用的非破壞性版本控制系統。
- 具有資料匯入和匯出、測量鍊和自動聊天機器人測試的測試環境。
- 一個 LLM 平台,可與原始碼控制、專案管理和向量儲存工具無縫整合。
- 與模型無關的託管解決方案,具有簡單的統一 API,支援簡單的呼叫、聊天和手動中斷。
- 專注於 LLM 功能需求的分析和監控解決方案。
在 Google Cloud 部署 PlayFetch
PlayFetch 已針對在 Google Cloud Platform 上運行進行了最佳化。請按照以下說明啟動並執行您自己的實例。我們假設您已經在 https://github.com/yello-xyz/playfetch 上分叉了官方 PlayFetch 儲存庫(這樣您就可以設定持續整合)。如果您打算更改程式碼,則可以多次執行這些說明來為開發、暫存和生產設定單獨的實例。
配置新項目
- 在 https://cloud.google.com/ 上設定您的 Google Cloud Platform 帳戶。
- 透過 https://console.cloud.google.com 造訪 Cloud Console。
- 導覽至IAM 和管理→管理資源,然後按一下建立專案。
- 選擇一個唯一的名稱(以後無法變更)並按一下「建立」 。
- 導航到計費,然後在帳戶管理下,確保為新項目啟用計費。
配置API
- 導覽至API 和服務→啟用的 API 和服務。
- 確保在頂部的項目選擇器中選擇新建立的項目。
- 點選啟用 API 和服務。
- 搜尋App Engine Admin API並點選ENABLE 。
- 搜尋Cloud Build API並點選ENABLE 。
- 搜尋Cloud Datastore API並點擊啟用。
- 搜尋Cloud Scheduler API並點擊啟用。
- 搜尋Google App Engine 彈性環境並點選啟用。
- 搜尋身分和存取管理 (IAM) API並按一下啟用。
- 搜尋Vertex AI API並點擊啟用。
配置 App Engine 應用程式
- 導航至App Engine →儀表板,然後按一下建立應用程式。
- 選擇一個位置(以後無法變更)。
- 將服務帳戶選項保持開啟(我們將使用預設值),然後按一下「下一步」 。
- 忽略部署面板(點擊“我稍後再做”)。
配置資料儲存
- 導航到資料儲存。
- 如果您沒有看到(預設)資料存儲,請稍等片刻並刷新。
- 選擇(預設)資料儲存。
- 在側邊欄中選擇生存時間 (TTL),然後按一下建立策略。
- 將Kind設為_nextauth_token並將Timestamp 屬性設為expires並按一下CREATE 。
- 建立另一個具有 kind快取和屬性expiresAt的策略。
配置儲存桶
- 導航至Cloud Storage →儲存桶並選擇儲存桶[project-name] .appspot.com 。
- 在「權限」下,按一下「授予存取權限」 。
- 新增主體allUsers並指派角色Storage Object Viewer 。
- 點擊儲存並允許公開存取(此儲存桶將用於儲存頭像)。
建立建置服務帳戶
- 導覽至IAM 和管理→服務帳戶,然後按一下建立服務帳戶。
- 選擇一個唯一的名稱,然後按一下「建立並繼續」 。
- 選擇角色服務帳戶 使用者。
- 按一下「新增另一個角色」並選擇「App Engine 部署者」 。
- 點擊新增另一個角色並選擇App Engine 靈活環境服務代理程式。
- 按一下新增另一個角色並選擇App Engine 服務管理員。
- 按一下新增另一個角色並選擇Cloud Build Service Account 。
- 點擊新增另一個角色並選擇Cloud Datastore Index Admin 。
- 點擊新增另一個角色並選擇Cloud Scheduler Admin 。
- 按一下「繼續」和「完成」 。
[選用]配置自訂域
- 導航至App Engine →設定。
- 在「自訂網域」下,按一下「新增自訂網域」 。
- 輸入您要使用的自訂網域和子網域(按照說明驗證所有權)。
- 按一下「繼續」和「完成」 。
- 將顯示的記錄新增至自訂網域提供者的 DNS 配置中。
[可選但建議]配置 Google OAuth 用戶身份驗證
- 導覽至API 和服務→ OAuth 同意畫面。
- 根據您的用例選擇內部或外部使用者類型,然後按一下建立。
- 填寫必填字段,按一下「儲存並繼續」 ,然後按一下「新增或刪除範圍」 。
- 檢查範圍.../auth/userinfo.profile和.../auth/userinfo.email ,然後按一下UPDATE並SAVE AND CONTINUE 。
- 如果您在上面選擇了外部使用者類型,則可以新增一些測試帳戶(在將應用程式發佈到生產環境之前)。確保包含您要用於第一個管理員使用者的電子郵件地址。請注意,您仍然需要在 PlayFetch 中授予這些使用者存取權限。
- 按一下儲存並繼續,然後返回儀表板。
- 在側邊欄中選擇Credentials ,然後按一下CREATE CREDENTIALS和OAuth client ID 。
- 選擇Web 應用程式作為應用程式類型並選擇名稱。
- 在Authorized JavaScript origins下,新增https:// [project-name] .appspot.com (以及自訂網域,如果有的話)。如果您還想在本機執行應用程式時使用 Google 驗證,請同時新增http://localhost:3000 。
- 在授權重新導向 URI下,新增https:// [project-name] .appspot.com/api/auth/callback/google (以及任何自訂網域的類似 URL)。如果您還想在本機執行應用程式時使用 Google 驗證,請同時新增http://localhost:3000/api/auth/callback/google 。
- 點擊“建立”並複製生成的客戶端 ID 和客戶端金鑰以在下面的建置觸發器設定中使用。
配置建置
- 導覽至Cloud Build →觸發器,然後按一下CONNECT REPOSITORY 。
- 選擇來源GitHub(雲端建置 GitHub 應用程式) ,然後按一下繼續以驗證您分叉儲存庫的 GitHub 帳戶(在彈出視窗中)。
- 選擇分叉儲存庫,選取下面的方塊,然後按一下CONNECT 。
- 點擊建立觸發器。
- 為您的建置選擇一個名稱。
- 在Configuration下,選擇Cloud Build 設定檔(yaml 或 json) 。
- 對於最低設置,您需要透過點擊ADD VARIABLE將以下替換變數新增至建置觸發器(在「進階」部分):
- _ENCRYPTION_KEY :64 個十六進位數字的隨機字串。
- _NEXTAUTH_SECRET :至少 32 個字元的隨機字串。
- _NEXTAUTH_URL :您的實例的面向公眾的 URL,如果您有一個自訂網域,則可以是自訂網域,也可以是https:// [project-name] .appspot.com 。
- _GCLOUD_STORAGE_BUCKET :您允許公開存取的 Cloud Storage 儲存桶的名稱,例如[project-name] .appspot.com 。
- _NOREPLY_EMAIL_USER和_NOREPLY_EMAIL_PASSWORD :用於傳送交易電子郵件的 Gmail 帳戶。可以是 Google Workspace 中的專用帳戶(使用常規密碼),也可以是單獨的 Gmail 帳戶(使用應用程式密碼)。如果您需要使用其他電子郵件提供者,請參閱下面的說明。
- 如果您在上面配置了 Google 身份驗證,您還應該添加以下變數:
- _GOOGLE_CLIENT_ID和_GOOGLE_CLIENT_SECRET :產生 OAuth 憑證後在上面複製的值。
- 在服務帳戶下,選擇您在上面建立的服務帳戶。
- 按一下「建立」 。
- 按一下新建立的觸發器旁的「執行」 ,然後按一下「執行觸發器」。
- 選擇側邊欄中的「歷史記錄」 ,然後等待驗證建置是否成功完成(可能需要 10-15 分鐘)。
初始化您的 PlayFetch 環境
- 選擇將用作初始管理員使用者登入名稱的電子郵件地址。
- 開啟瀏覽器並導覽至https:// [project-name] .appspot.com/api/admin/init?admin= [[email protected]] (確保在查詢中指定正確的電子郵件地址)。
- 該端點將執行一個腳本來初始化資料儲存(可能需要一分鐘),但您只能執行一次(除非您重新建立資料儲存)。
- 腳本完成後,複製回應中顯示的_PLAYFETCH_API_KEY和_PLAYFETCH_ENDPOINT_URL的值。
- 導航至Cloud Build → Triggers ,按一下您建立的觸發器,新增上述步驟中的兩個附加Substitution 變量,然後按一下SAVE 。
- 使用新增的變數再次執行建置觸發器。此建置可能需要產生遺失的資料儲存索引,因此最好等到它再次完成。
現在您應該能夠導航至https:// [project-name] .appspot.com並使用您為第一位管理員使用者指定的電子郵件地址登入。您可以使用 Google 驗證(如果已配置)或電子郵件連結(前提是_NOREPLY_EMAIL變數設定正確)。可以在管理面板中授予其他使用者存取權限。
本地運行 PlayFetch
如果您想為 PlayFetch 做出貢獻或偵錯問題,可以按照以下說明使其在本機上運行。
安裝節點和npm
安裝最新版本的Node和npm最簡單的方法是執行最新的安裝程式。
克隆儲存庫
使用 GitHub Desktop 開啟並複製到本機目錄,或使用 SSH 連線到 GitHub 並執行git clone [email protected]:yello-xyz/playfetch.git
。如果您已經分叉了儲存庫,則可以複製該儲存庫。
配置環境
為了在本地運行應用程序,您需要將一些相同的變數添加到本地.env.local檔案中(原始程式碼管理會忽略該檔案以避免洩漏密鑰)。這些值可以與您在 Google Cloud 建置觸發器中為開發實例指定的值相同(假設您正在執行單獨的生產實例,因為您不想冒洩露這些金鑰的風險),但_NEXTAUTH_URL除外,應在其中指定值http://localhost:3000。
您可以從本機電腦存取Google Cloud 中的資料儲存(再次假設您正在執行單獨的開發實例,這樣就不會意外損壞或洩漏生產資料),方法是安裝Google Cloud CLI 並按照此處的說明進行初始化(您可以跳過其他步驟)。執行以下命令使用您的 Google 帳戶登入:
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
建置並運行
您現在應該能夠執行以下命令:
-
npm install
-
npm run build
-
npm run start
或者,在開發過程中,您只需執行以下命令即可執行快速刷新的偵錯建置:
npm run dev
運行所有測試一次:
npm run test
若要觀察變更並自動重新執行相關測試套件:
npm run watch
選用功能
為了擴展最低設置,您可以配置以下環境變數(在 GCP 建置觸發器中或在本機 .env.local 檔案中)以啟用一些附加功能。
整合
- _GITHUB_CLIENT_ID 、 _GITHUB_CLIENT_SECRET :可用於設定 GitHub OAuth 驗證(類似 Google)。需要設定 GitHub OAuth 應用程式。
- _GITHUB_APP_CLIENT_ID 、 _GITHUB_APP_CLIENT_SECRET 、 _GITHUB_APP_ID 、 _GITHUB_APP_PRIVATE_KEY 、 _NEXT_PUBLIC_GITHUB_APP_INSTALL_LINK :可用來設定原始碼管理。需要設定 GitHub 應用程式。
- _LINEAR_APP_CLIENT_ID 、 _LINEAR_APP_CLIENT_SECRET 、 _LINEAR_APP_WEBHOOK_SECRET :可用來設定任務管理整合。還需要設定 Linear 應用程式。
- _NOTION_TOKEN、_NOTION_ONBOARDING_PAGE_ID、_NOTION_WAITLIST_PAGE_ID :可用於自動同步 Notion 的候補名單註冊和入職調查回應。需要設定一個 Notion 應用程式。
分析
- _GOOGLE_ANALYTICS_API_SECRET 、 _GOOGLE_ANALYTICS_MEASUREMENT_ID :可用來設定伺服器端分析 (GA4)。
- _NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID 、 _NEXT_PUBLIC_COOKIE_DOMAIN 、 _NEXT_PUBLIC_COOKIE_NAME :可用來設定 cookie 與用戶端分析(Google 追蹤程式碼管理器)。
環境
- _GOOGLE_ANALYTICS_DASHBOARD_URL 、 _GOOGLE_ANALYTICS_REPORTS_URL 、 _GOOGLE_SEARCH_CONSOLE_URL 、 _INTEGRATION_TEST_URL 、 _SERVER_LOGS_URL :可用於在管理面板中添加各種診斷。
- _NEXT_PUBLIC_DOCS_URL 、 _NEXT_PUBLIC_SUPPORT_EMAIL :可用於產生工作區和專案側邊欄中文件和支援的連結。
- _NOREPLY_EMAIL_HOST 、 _NOREPLY_EMAIL_PORT :可用於為外寄交易電子郵件設定備用電子郵件提供者。
- _API_URL :可用於分割網站和 api 之間的流量,例如,如果您有單獨的子網域指向您的執行個體。
執照
PlayFetch 是在 MIT 許可下開源的。
請注意,PlayFetch 使用 CodeMirror 作為相依性。如果您在商業上使用 CodeMirror,社會(但沒有法律)期望您幫助資助其維護。
貢獻
PlayFetch 正在 GitHub 上開發。歡迎貢獻。在修復錯誤或新增功能時,請隨意提出問題或提出拉取要求。為了幫助您入門,可以在 TODO.md 中找到一些靈感。