チャットにキーを貼らずに使う、シークレットと環境変数
ほとんどの実際のアプリには、少なくとも1つのシークレットが必要です。決済サービスのキー、メール配信サービスのキー、AI APIのキーなどです。Mythexでは、こうしたキーをプロンプトに貼り付ける必要はありません。エージェントがキーを必要とすると、チャットにシークレットのリクエストカードが表示されます。カードに値を入力すると、アプリが読み取れるプロジェクトのシークレットとして保存されます。キーがチャットの会話に残ることはありません。
何をするのか
Mythexのすべてのプロジェクトには、環境変数を保存できます。環境変数とは、STRIPE_SECRET_KEYのような名前付きの値のことで、アプリは実行時にそれを読み取ります。コードに直接書き込む必要はありません。シークレットは、値を非公開にしておく必要がある環境変数です。
同じ値は次の2か所で利用できます。
- サンドボックス:作業中にエージェントがアプリを構築・実行する場所です。
- 公開済みのデプロイ:訪問者が実際に使うアプリの環境です。
追加方法は3つあります。
- シークレットのリクエストカード:エージェントが作業を完了するためにキーを必要とすると、チャットに表示されます。
- プロジェクト設定 → Secrets:いつでも値を追加・編集できます。
- チャットでの
/secrets:要求に応じてシークレットを追加・更新します。
なぜ役立つのか
AIエージェントにキーを渡す一般的な方法は、メッセージに貼り付けることです。動作はしますが、そのキーはチャット履歴の一部になり、あなたが書いた他の内容と一緒に平文で残ります。
シークレットカードを使うと、値がトランスクリプトに残りません。値はメッセージ欄ではなくカードのフィールドに入力し、プロジェクトのシークレットとして保存されます。エージェントは、そのキーを利用できる状態でサンドボックス上の作業を続けます。
キーをコードではなくプロジェクト設定に置くことには、ほかにも利点があります。
- キーをソース管理に含めずに済みます。 コードはキーを名前で参照し、値はプロジェクト設定に置かれます。
- エージェントと実行中のアプリが同じ設定を見ます。 古くなったコピーが生まれません。
- コードを書き換えずにキーを入れ替えられます。 設定で値を変更するだけで、コードは名前で読み続けます。
環境変数が初めての方は、環境変数とシークレットとは何かのガイドで、この考え方を基礎から説明しています。
シークレットカードの使い方
- 機能を依頼します。たとえば「サインアップしたら歓迎メールを送って」と頼みます。
- エージェントがキーを必要とすると、必要な値を示したシークレットのリクエストカードがチャットに表示されます。
- 値はメッセージ欄ではなく、カードのフィールドに入力します。
- 確定します。 値はプロジェクトのシークレットとして保存されます。
- エージェントが作業を続けます。 キーはサンドボックスで利用できる状態になります。
自分でシークレットを追加する方法
- プロジェクト設定を開き、Secretsを選びます。
STRIPE_SECRET_KEY、OPENAI_API_KEY、または自分のサービスの認証情報などのキーを追加します。- 使用しているフレームワークの標準的な方法で読み取るよう、エージェントに依頼します。たとえばNodeアプリであれば
process.envから読み取ります。 - 公開済みのアプリに新しい値が必要な場合は、再公開します。
チャットで/secretsと入力して、そこから追加や更新を行うこともできます。
公開済みアプリでシークレットを変更する
公開済みのアプリは、公開した時点でシークレットを読み込みます。シークレットを追加・変更したら、もう一度公開して、ライブのデプロイに新しい値を反映させてください。それまでは、訪問者は古い設定のままアプリを使っています。
セキュリティのヒント
- シークレットをリポジトリにコミットしないでください。 プロジェクト設定に保管します。
- 特権的な操作には、サーバー側でのみ使うキーを優先してください。 カード決済やメール送信ができるキーは、訪問者のブラウザがダウンロードするものではなく、サーバー上で動くコードに置きます。
- キーがチャット履歴に現れたら、そのキーを入れ替えてください。 プロバイダーで新しいキーを作成し、古いキーを無効化して、プロジェクト設定の値を更新します。チャットに貼り付けられたキーは、すべて漏えいしたものとして扱ってください。
制限事項
- カードは使ってこそ役立ちます。 メッセージ欄にキーを貼り付けてしまうと、そのキーはトランスクリプトに残ります。プロバイダーでキーを入れ替え、保存されている値を更新してください。
- 公開済みのアプリは、新しいまたは変更されたシークレットを反映するために再公開が必要です。
- キーを安全に保管しても、その使い方が安全になるわけではありません。 キーをどこで使うかは依然として重要です。特権的なキーは、アプリのサーバー側に置いてください。
公開前にアプリを安全にするための詳細は、AIで作ったアプリのセキュリティチェックリストをご覧ください。
詳しくはドキュメントをご覧ください:環境変数とシークレット、チャットでのシークレット。