AIを使ってあなたのデータをクエリする
Squid AIのQuery with AI機能を使って、リアルタイムであなたのデータに関する情報を取得します。
作成するもの
- ヘルスケアデータについてask questions(質問する)機能を持つアプリ。
- データはランダムに生成され、Squidのbuilt-in databaseに保存されます。
学ぶこと
- SquidのexecuteAiQueryメソッドを使って、データに関する質問を行う方法。
- クライアントがバックエンドと連携できるように、executable functionを設定する方法。
TypeScriptの経験が必要です。Reactの経験は有用ですが、必須ではありません。
Otairo (https://otairo.ai/) のパートナーの皆様に、このチュートリアルでのご協力に大変感謝いたします!
Environment setup
- In the Squid Console, switch to the devenvironment.

- Download the ai-for-data code sample using the following command. Replace the placeholders with the values from your Squid application as shown in the console. 
npx @squidcloud/cli init-sample ai-for-data --template ai-for-data --appId YOUR_SQUID_APP_ID --apiKey YOUR_SQUID_API_KEY --environmentId dev --squidDeveloperId YOUR_SQUID_DEVELOPER_ID --region YOUR_REGION
You can find your environment variables under: 'Application' -> 'Show env vars' as seen below:

- Open the project in the IDE of your choice.
- Start the app locally by running the following command in the project folder:
npm run start
- To view the app, navigate to localhost:PORT, where PORT is logged in the terminal. The address will likely be http://localhost:5173.
アプリの機能を確認する
- 
Add mock data ボタンをクリックして、ランダム生成されたデータをデータベースに追加します。データはリアルタイムでクライアントと同期されるため、追加されたことを確認できます。 
- 
Squid Consoleで、あなたのアプリのConnectorsタブをクリックします。 
- 
built_in_db コネクタ内の ...をクリックし、ドロップダウンからSchemaを選択します。
- 
次に、スキーマのコレクションとフィールドに説明を追加します。これにより、Squid AIはあなたのデータをよりよく理解し、より正確な回答を提供することができます。 health_dataコレクションの鉛筆ボタンをクリックし、コレクションの説明に以下を追加します:
Each document contains patient information regarding their age, patient ID, and their medical diagnosis.
- ageフィールドの- ...ボタンをクリックし、ドロップダウンメニューからEdit fieldを選択します。以下の説明を追加し、Updateをクリックします。
The age of the patient
- diagnosisフィールドの- ...ボタンをクリックし、ドロップダウンメニューからEdit fieldを選択します。以下の説明を追加し、Updateをクリックします。
The patient's medical diagnosis
- patentIdフィールドの- ...ボタンをクリックし、ドロップダウンメニューからEdit fieldを選択します。以下の説明を追加し、Updateをクリックします。
The patient's ID
- 
Save schemaをクリックします。これにより、Squid AIがあなたのデータに対するクエリを形成するためのスキーマと説明が提供されます。 
- 
サンプルアプリで、チャットボットにデータについて質問してみましょう。Squid AIは、あなたのプロンプトに基づいて自動的にデータベースクエリを生成します。以下は例です: 
- How many people were diagnosed with the flu?
- What is the most common diagnosis among people over 50 years old?
- What is the average age of patients diagnosed with asthma?
Code breakdown
バックエンドでAIクエリを実行する
Squidのバックエンドでは、data-ai-service.tsファイルに@executableデコレーターが付与されたクラスがあります。Squidのexecutableは、サーバー上で実行される関数をクライアントに提供します。
Executablesは、クライアントから直接アクセスされ、バックエンドのリソースやシークレットに無制限の権限でアクセスできます。つまり、認可されたユーザーのみがこれらを実行できるよう、特に注意する必要があります。
executeAiQueryメソッドは、データベースのコネクタIDと質問をパラメータとして受け取り、Squid AIの応答を返すPromiseを返します。詳細はAI queries documentationをご覧ください。
export class SquidAiDataService extends SquidService {
  @executable()
  async askQuestion(question: string): Promise<AiResponse> {
    const aiResponse = await this.squid
      .ai()
      .executeAiQuery('built_in_db', question);
    return {
      author: 'ai',
      answer: aiResponse.answer,
      executedQuery: aiResponse.executedQuery,
      explanation: aiResponse.explanation,
    };
  }
}
クライアントで質問を実行する
フロントエンドでは、クライアントが自分の質問をexecuteFunctionメソッドを使ってバックエンドに渡し、executable関数の名前とそのパラメータを指定します。
squid.executeFunction('askQuestion', question).then((response) => {
    // Handle the response
}
これで完了です!
おめでとうございます! Squid AI上で実行されるチャットボットを利用して、データに関する質問に回答するウェブアプリの構築と実行に成功しました。次に試してみると良いこと:
- お気に入りのデータベースでSquidを使ってみてください。View available database connectorsをご覧ください。
- Squid AIで他に何ができるか確認してみましょう!
- このチュートリアルでAIエージェントを作成し、セキュアに設定してみましょう。
追加情報
Squid environments
- Squidは、開発用のdevと本番用のprodという2つのターゲット環境を提供します。このチュートリアルではdev環境を使用します。詳しくはSquidのenvironmentsをご覧ください。
- Squidのdeveloper IDは、プロジェクトをローカルで実行する際にのみ使用されます。
Squidの機能
- Squid built-in databaseを使用する際、追加のカスタマイズなしでSquidバックエンドは完全に機能します。また、バックエンドにSchedulers、Triggers(データベースイベントに応じたもの)、native queries(生SQLやデータベース固有のクエリの実行)などの機能を追加することも可能です。すべてのオプションについてはBackend SDK docsをご確認ください。
- built-in databaseはドキュメントベースであるため、notesコレクションはドキュメントの集合を表します。SQLデータベースの場合、コレクションはテーブルを表し、ドキュメントはそのテーブルの行になります。