プレイフェッチ
PlayFetch を使用すると、大規模言語モデル機能をアプリにすばやく簡単に追加できます。
背景
LLM は製品チームの作業方法を変えました。アプリケーションの大部分が自然言語で構築されるようになりました。多くの場合、このプロセスにはエンジニアリング以外のチーム メンバーが関与しています。生成されるテキストのトーンと配信に気を配るコンテンツ ストラテジスト、生成されるコンテンツに高度な専門知識をもたらすドメイン エキスパート、および彼らの製品ニーズ。これらの新しいチーム メンバーは、エンジニアリング チームとともにプロトタイピング、アプリケーションの重要な部分の開発、保守に携わっており、多くの新しい交流が生まれています。
エンジニアとチームの他のメンバーとの間のこうした新しいやり取りには、新しいツールが必要です。エンジニアは、コード ベース全体にプレーン テキストが配布され、新しいバージョンが実際には優れていないことが判明するだけで更新を絶えず要求されることを望んでいません。プロンプトやチェーンの作成者は、エンジニアが更新を統合するまで待ってから、期待どおりに動作しないことに気づくことを望んでいません。 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 コンソールにアクセスします。
- 「IAM と管理」 → 「リソースの管理」に移動し、 「プロジェクトの作成」をクリックします。
- 一意の名前を選択し (後で変更することはできません)、 [作成]をクリックします。
- [請求]に移動し、 [アカウント管理]で、新しいプロジェクトに対して請求が有効になっていることを確認します。
APIの構成
- [API とサービス] → [有効な API とサービス]に移動します。
- 新しく作成したプロジェクトが上部のプロジェクト セレクターで選択されていることを確認します。
- 「API とサービスを有効にする」をクリックします。
- 「App Engine Admin API」を検索し、 「有効にする」をクリックします。
- 「Cloud Build API」を検索し、 「有効にする」をクリックします。
- 「Cloud Datastore API」を検索し、 「有効にする」をクリックします。
- 「Cloud Scheduler API」を検索し、 「ENABLE」をクリックします。
- 「Google App Engine フレキシブル環境」を検索し、 「有効にする」をクリックします。
- 「Identity and Access Management (IAM) API」を検索し、 「ENABLE」をクリックします。
- Vertex AI APIを検索し、 [有効にする]をクリックします。
App Engine アプリケーションを構成する
- [App Engine] → [ダッシュボード]に移動し、 [アプリケーションの作成]をクリックします。
- 場所を選択します (後で変更することはできません)。
- サービス アカウント オプションを開いたままにして (デフォルトを使用します)、 [次へ]をクリックします。
- デプロイパネルを無視します ( [後でこれを行う]をクリックします)。
データストアを構成する
- データストアに移動します。
- (デフォルト)データストアが表示されない場合は、少し待ってから更新してください。
- (デフォルト)データストアを選択します。
- サイドバーで「Time to Live (TTL)」を選択し、 「CREATE POLICY」をクリックします。
- [種類] を_nextauth_tokenに設定し、 [タイムスタンプ] プロパティを[期限切れ]に設定して、 [作成]をクリックします。
- 種類キャッシュとプロパティexpiresAtを使用して別のポリシーを作成します。
ストレージバケットを構成する
- 「Cloud Storage」 → 「バケット」に移動し、バケット[プロジェクト名] .appspot.com を選択します。
- [権限]で[アクセスの許可]をクリックします。
- プリンシパルallUsersを追加し、ロールStorage Object Viewerを割り当てます。
- 「保存」をクリックしてパブリックアクセスを許可します(このバケットはアバターの保存に使用されます)。
ビルドサービスアカウントを作成する
- 「IAM と管理」 → 「サービス アカウント」に移動し、 「サービス アカウントの作成」をクリックします。
- 一意の名前を選択し、 [作成して続行]をクリックします。
- ロールサービス アカウント ユーザー を選択します。
- 「別のロールを追加」をクリックし、 「App Engine Deployer」を選択します。
- 「別のロールを追加」をクリックし、 「App Engine フレキシブル環境サービス エージェント」を選択します。
- [別のロールを追加]をクリックし、 [App Engine サービス管理者]を選択します。
- [別のロールを追加]をクリックし、 [Cloud Build サービス アカウント]を選択します。
- [別のロールを追加]をクリックし、 [Cloud Datastore Index Admin]を選択します。
- 「別のロールを追加」をクリックし、 「Cloud Scheduler Admin」を選択します。
- [続行]をクリックして[完了] をクリックします。
[オプション]カスタム ドメインの構成
- [App Engine] → [設定]に移動します。
- [カスタム ドメイン] で、 [カスタム ドメインの追加]をクリックします。
- 使用するカスタム ドメインとサブドメインを入力します (所有権を確認するための指示に従います)。
- [続行]をクリックして[完了] をクリックします。
- 表示されているレコードをカスタム ドメイン プロバイダーの DNS 構成に追加します。
[オプションですが推奨] Google OAuth ユーザー認証を構成します
- 「API とサービス」 → 「OAuth 同意画面」に移動します。
- ユースケースに応じて内部ユーザー タイプまたは外部ユーザー タイプを選択し、 [作成]をクリックします。
- 必須フィールドに入力し、 「保存して続行」をクリックし、 「スコープの追加または削除」をクリックします。
- スコープ.../auth/userinfo.profileおよび.../auth/userinfo.emailを確認し、 [更新]をクリックして、 [保存して続行] をクリックします。
- 上記で外部ユーザー タイプを選択した場合は、(アプリを運用環境に公開する前に) いくつかのテスト アカウントを追加できます。最初の管理者ユーザーとして使用する電子メール アドレスを必ず含めてください。 PlayFetch でもこれらのユーザーにアクセスを許可する必要があることに注意してください。
- 「保存して続行」をクリックし、 「ダッシュボードに戻る」をクリックします。
- サイドバーで「資格情報」を選択し、「資格情報とOAuthクライアントIDの作成」をクリックします。
- アプリケーションの種類としてWeb アプリケーションを選択し、名前を選択します。
- [承認された JavaScript オリジン]で、 https:// [プロジェクト名] .appspot.com (カスタム ドメインがある場合はカスタム ドメイン) を追加します。アプリをローカルで実行するときに Google 認証も使用する場合は、 http://localhost:3000も追加します。
- [承認されたリダイレクト URI]で、 https:// [プロジェクト名] .appspot.com/api/auth/callback/google (およびカスタム ドメインの同様の URL) を追加します。アプリをローカルで実行するときに Google 認証も使用する場合は、 http://localhost:3000/api/auth/callback/googleも追加します。
- [作成]をクリックし、生成されたクライアント ID とクライアント シークレットをコピーして、以下のビルド トリガー設定で使用します。
ビルドを構成する
- 「Cloud Build」 → 「トリガー」に移動し、 「CONNECT REPOSITORY」をクリックします。
- ソースGitHub (Cloud Build GitHub アプリ)を選択し、 [続行]をクリックして、(ポップアップ ウィンドウで) リポジトリをフォークした GitHub アカウントを認証します。
- フォークされたリポジトリを選択し、その下のボックスにチェックを入れて、 「接続」をクリックします。
- 「トリガーの作成」をクリックします。
- ビルドの名前を選択します。
- [構成]で、 [Cloud Build 構成ファイル (yaml または json)]を選択します。
- 最小限のセットアップでは、 [変数を追加] をクリックして、次の置換変数をビルド トリガー ( [詳細]セクション) に追加する必要があります。
- _ENCRYPTION_KEY : 64 桁の16 進数のランダムな文字列。
- _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]]に移動します (クエリには正しい電子メール アドレスを指定してください)。
- このエンドポイントは、データストアを初期化するスクリプトを実行します (これには 1 分かかる場合があります)。ただし、実行できるのは 1 回だけです (データストアを再作成しない限り)。
- スクリプトが完了したら、応答に表示される_PLAYFETCH_API_KEYと_PLAYFETCH_ENDPOINT_URLの値をコピーします。
- [Cloud Build] → [トリガー]に移動し、作成したトリガーをクリックし、上記の手順で作成した 2 つの追加の置換変数を追加して、 [保存]をクリックします。
- 追加した変数を使用してビルド トリガーを再度実行します。このビルドでは、不足しているデータストア インデックスを生成する必要がある場合があるため、再度完了するまで待つことをお勧めします。
これで、 https:// [project-name] .appspot.comに移動し、最初の管理者ユーザーに指定した電子メール アドレスでログインできるようになります。 Google 認証 (構成されている場合) または電子メール リンク ( _NOREPLY_EMAIL変数が正しく設定されている場合) のいずれかを使用できます。管理パネルで追加のユーザーにアクセスを許可できます。
PlayFetchをローカルで実行する
PlayFetch に貢献したり、問題をデバッグしたりする場合は、以下の手順に従ってローカル マシンで実行できます。
ノードとnpmをインストールする
最新バージョンのノードとnpm をインストールする最も簡単な方法は、最新のインストーラーを実行することです。
リポジトリのクローンを作成する
GitHub Desktop で開いてローカル ディレクトリにクローンを作成するか、SSH で GitHub に接続してgit clone [email protected]:yello-xyz/playfetch.git
実行します。すでにリポジトリをフォークしている場合は、代わりにそのリポジトリのクローンを作成できます。
環境を構成する
アプリをローカルで実行するには、同じ変数をローカルの.env.localファイルに追加する必要があります (このファイルはキーの漏洩を避けるためにソース管理によって無視されます)。これらは、開発インスタンスの Google Cloud ビルドトリガーで指定した値と同じ値にすることができます(これらのキーが漏洩するリスクを避け、本番用に別のインスタンスを実行していると仮定します)。ただし、 _NEXTAUTH_URLを除きます。値http://localhost:3000。
Google Cloud CLI をインストールし、ここで説明されているように初期化することで、ローカルマシンから Google Cloud のデータストアにアクセスできます(ここでも、本番データを誤って破損したり漏洩したりしないように別の開発インスタンスを実行していると仮定します)。他の手順)。次のコマンドを実行して、Google アカウントでログインします。
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
構築して実行する
これで、次のコマンドを実行できるようになります。
-
npm install
-
npm run build
-
npm run start
あるいは、開発中に次のコマンドを実行して、高速更新でデバッグ ビルドを実行することもできます。
npm run dev
すべてのテストを 1 回実行するには:
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 でインスピレーションを得ることができます。