メインコンテンツまでスキップ

AIを使ってあなたのデータをクエリする

Squid AIのQuery with AI機能を使って、リアルタイムであなたのデータに関する情報を取得します。

作成するもの

  • ヘルスケアデータについてask questions(質問する)機能を持つアプリ。
  • データはランダムに生成され、Squidのbuilt-in databaseに保存されます。

学ぶこと

  • SquidのexecuteAiQueryメソッドを使って、データに関する質問を行う方法。
  • クライアントがバックエンドと連携できるように、executable functionを設定する方法。

TypeScriptの経験が必要です。Reactの経験は有用ですが、必須ではありません。


Otairo (https://otairo.ai/) のパートナーの皆様に、このチュートリアルでのご協力に大変感謝いたします!

Environment setup

  1. In the Squid Console, switch to the dev environment.

switch environment

  1. 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.

  2. 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

TIP

You can find your environment variables under: 'Application' -> 'Show env vars' as seen below:

switch environment

  1. Open the project in the IDE of your choice.
  2. Start the app locally by running the following command in the project folder:
npm run start
  1. To view the app, navigate to localhost:PORT, where PORT is logged in the terminal. The address will likely be http://localhost:5173.

アプリの機能を確認する

  1. Add mock data ボタンをクリックして、ランダム生成されたデータをデータベースに追加します。データはリアルタイムでクライアントと同期されるため、追加されたことを確認できます。

  2. Squid Consoleで、あなたのアプリのConnectorsタブをクリックします。

  3. built_in_db コネクタ内の...をクリックし、ドロップダウンからSchemaを選択します。

  4. 次に、スキーマのコレクションとフィールドに説明を追加します。これにより、Squid AIはあなたのデータをよりよく理解し、より正確な回答を提供することができます。

    health_dataコレクションの鉛筆ボタンをクリックし、コレクションの説明に以下を追加します:

Each document contains patient information regarding their age, patient ID, and their medical diagnosis.
  1. ageフィールドの...ボタンをクリックし、ドロップダウンメニューからEdit fieldを選択します。以下の説明を追加し、Updateをクリックします。
The age of the patient
  1. diagnosisフィールドの...ボタンをクリックし、ドロップダウンメニューからEdit fieldを選択します。以下の説明を追加し、Updateをクリックします。
The patient's medical diagnosis
  1. patentIdフィールドの...ボタンをクリックし、ドロップダウンメニューからEdit fieldを選択します。以下の説明を追加し、Updateをクリックします。
The patient's ID
  1. Save schemaをクリックします。これにより、Squid AIがあなたのデータに対するクエリを形成するためのスキーマと説明が提供されます。

  2. サンプルアプリで、チャットボットにデータについて質問してみましょう。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は、サーバー上で実行される関数をクライアントに提供します。

Caution

Executablesは、クライアントから直接アクセスされ、バックエンドのリソースやシークレットに無制限の権限でアクセスできます。つまり、認可されたユーザーのみがこれらを実行できるよう、特に注意する必要があります。

executeAiQueryメソッドは、データベースのコネクタIDと質問をパラメータとして受け取り、Squid AIの応答を返すPromiseを返します。詳細はAI queries documentationをご覧ください。

backend/src/data-ai-service.ts
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関数の名前とそのパラメータを指定します。

frontend/src/components/aiDatabot.tsx
squid.executeFunction('askQuestion', question).then((response) => {
// Handle the response
}

これで完了です!

おめでとうございます! Squid AI上で実行されるチャットボットを利用して、データに関する質問に回答するウェブアプリの構築と実行に成功しました。次に試してみると良いこと:

追加情報

Squid environments

  • Squidは、開発用のdevと本番用のprodという2つのターゲット環境を提供します。このチュートリアルではdev環境を使用します。詳しくはSquidのenvironmentsをご覧ください。
  • Squidのdeveloper IDは、プロジェクトをローカルで実行する際にのみ使用されます。

Squidの機能

  • Squid built-in databaseを使用する際、追加のカスタマイズなしでSquidバックエンドは完全に機能します。また、バックエンドにSchedulersTriggers(データベースイベントに応じたもの)、native queries(生SQLやデータベース固有のクエリの実行)などの機能を追加することも可能です。すべてのオプションについてはBackend SDK docsをご確認ください。
  • built-in databaseはドキュメントベースであるため、notesコレクションはドキュメントの集合を表します。SQLデータベースの場合、コレクションはテーブルを表し、ドキュメントはそのテーブルの行になります。