Google Drive
Use documents and folders from your Google Drive as context for your Squid AI agent.
Google Drive connectorを使用すると、ユーザーがご自身のGoogle Driveからファイルまたはフォルダを選択し、それをSquid AI agentのコンテキストとしてアップロードできるようになります。これにより、AI agentは選択されたファイルを情報源としてクライアントのプロンプトに応答できます。詳細な情報については、view the AI agent documentation をご覧ください。
Google Drive connectorを使用するには、Google CloudプロジェクトとGoogle Cloudのいくつかの設定手順が必要です。必要な手順は、本ドキュメントに記載されており、関連するGoogleのドキュメントへのリンクも含まれています。
Enable Google Drive APIs
Google Drive connectorを始めるには、まずGoogle Cloudプロジェクトで必要なGoogle APIsを有効にしてください。
-
Google Cloud Console にて、アプリケーション用のプロジェクトを選択するか、新しいプロジェクトを作成してください。
-
Google Cloud documentation の Set up your environment 手順に従い、Google Drive APIを有効にし、必要な認証情報を作成してください。API key、client ID、および client secret が必要になります。
-
Google Cloud Console でGoogle Picker APIを有効にしてください。
Add the connector
-
Squid Console にアクセスし、Connectors タブに移動してください。
-
次の内容を入力してください:
Connector ID: コネクタの一意の識別子。コード内でコネクタの参照として使用してください.
Client ID: Google Cloud Consoleで作成したGoogle OAuth 2.0 Client ID。Client IDは「apps.googleusercontent.com」で終わります。
Redirect URI: Webサーバーからのリクエストに使用します。末尾にスラッシュを含めないでください。
Client Secret: Google OAuth 2.0 Client Secret。バックエンドでOAuthを管理する場合にのみ必要です。Squid Secretsを使用して安全に保存されます。
-
Test Connection をクリックし、接続が成功しているか確認してください。エラーが表示された場合は、Client IDとClient Secretの値を確認してください。
-
接続が成功したら、Add connector をクリックして保存してください。
Using the connector
Squid SDK の personal storage メソッドは、あなたの Squid API key へのアクセスを必要とします。API key は管理者アクセスを有効にするため、personal storage は Squid backend のような安全な管理環境でのみ使用してください。
Initializing the personal storage client
Google Driveへの接続を初期化するには、personalStorage メソッドを使用し、Drive接続用のConnector IDを渡してください:
const driveClient = this.squid.personalStorage('CONNECTOR_ID');
Getting a Google API authorization code
Squid AIにファイルへのアクセスを許可するには、Google API認証コードを提供する必要があります。このコードはOAuth 2.0を使用して生成されます。認証コードの作成に使用するJavaScript APIについては、check out the Google Developers Identity API reference をご確認ください。Google OAuth 2.0の認証と認可の詳細については、Google Developers documentation をご覧ください。
Passing the authorization code to Squid
認証コードを取得したら、Google認証コードとGoogle Drive接続を一意に識別するカスタム文字列を渡し、saveAuthCode メソッドを使用してSquidに提供してください。
const driveClient = this.squid.personalStorage('CONNECTOR_ID');
const response = await driveClient.saveAuthCode(
'GOOGLE_ACCESS_CODE',
'CUSTOM_IDENTIFIER'
);
console.log(response.accessToken); // ya29.a1BcD234e...
この関数は、Google Picker APIで使用するアクセストークンを返すPromiseを解決します。
カスタム識別子はお手元に保存してください。例えば、ユーザーIDなどが有用なカスタム識別子となりえます。この関数はカスタム識別子ごとに1回のみ実行する必要があります。一度実行されると、ユーザーはSquidが管理するアクセストークンを使用してGoogle Pickerにアクセスできます。
Retrieving an access token
saveAuthCode メソッドを使用して認証コードを保存すると、Squidは自動的にアクセストークンの生成を処理します。
const driveClient = this.squid.personalStorage('CONNECTOR_ID');
const response = await driveClient.getAccessToken('CUSTOM_IDENTIFIER');
console.log(response.accessToken); // ya29.a1BcD234e...
Passing the token to the Google Picker API
ユーザーがコンテキストとして保存するファイルを選択できるようにするため、Google Picker API を使用してください。Googleのドキュメントに記載された手順に従い、Google Pickerを読み込み表示し、Squid personal storageインスタンスによって生成されたアクセストークンをaccessTokenの値として渡してください。
const showPicker = () => {
// TODO(developer): Replace with your API key
const picker = new google.picker.PickerBuilder()
.addView(google.picker.ViewId.DOCS)
.setOAuthToken(accessToken) // From Squid
.setDeveloperKey('API_KEY')
.setCallback(pickerCallback)
.setAppId(APP_ID)
.build();
picker.setVisible(true);
};
実装に関する最新情報は、Google Picker documentation を参照してください。
Adding chosen files as context
クライアントがファイルやフォルダをコンテキストとして選択したら、その配列を安全な環境へ渡し、indexDocumentOrFolder メソッドを使用して選択された項目をコンテキストとして追加してください。
Squid backendに情報を安全に渡す最も簡単な方法は、Squid Executables を使用することです。以下のコードは、Squid Executable を使用して、配列をSquid backendに渡す例です:
function pickerCallback(data) {
if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
const docs = data[google.picker.Response.DOCUMENTS];
squid.executeFunction('addToStorage', docs);
}
}
ドキュメントをSquid AI agentに追加するには、Google Pickerから取得したドキュメントのID、ユーザーのpersonal storageのカスタム識別子、およびAI agentのIDを渡して、indexDocumentOrFolder メソッドを使用してください。
以下の例は、Google Pickerから得られた結果をSquid Executable を使用して反復処理し、指定されたAI agentプロファイルにコンテキストとして追加する方法を示しています:
@executable()
async addToStorage(docs: any[]): Promise<string | any> {
try {
docs.map(async (doc) => {
await this.squid
.personalStorage('CONNECTOR_ID')
.indexDocumentOrFolder(
doc.id,
'CUSTOM_IDENTIFIER',
'AGENT_ID',
'ai_agents',
);
})
return 'success';
} catch (error) {
console.error(error);
return error;
}
Next steps
AI agentの実装方法については、AI agent documentation をご覧ください。