AI でデータをクエリする
Squid AI の Query with AI 機能を使って、データに関する情報をリアルタイムで取得します。
作成するもの
- 医療データについて質問できるアプリ。
- データはランダムに生成され、Squid の組み込みデータベースに保存されます。
学べること
- Squid の
executeAiQueryメソッドを使って、データについて質問する方法。 - クライアントがバックエンドとやり取りできるようにするためのexecutable functionの設定方法。
TypeScript の経験があることが望ましいです。React の経験があると便利ですが、必須ではありません。
このチュートリアルでご協力いただいたパートナーの Otairo の皆様に多大なる感謝を申し上げます!
環境セットアップ
- 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 を選択します。 -
次に、スキーマのコレクションとフィールドに説明(description)を追加します。これにより Squid AI がデータをよりよく理解でき、質問に対してより正確な回答を提供できるようになります。
health_dataコレクションの鉛筆ボタンをクリックします。コレクション description に以下を追加します。
各ドキュメントには、患者の年齢、患者 ID、および医学的診断に関する情報が含まれます。
ageフィールドの...ボタンをクリックし、ドロップダウンメニューから Edit field を選択します。以下の説明を追加してから Update をクリックします。
患者の年齢
diagnosisフィールドの...ボタンをクリックし、ドロップダウンメニューから Edit field を選択します。以下の説明を追加してから Update をクリックします。
患者の医学的診断
patentIdフィールドの...ボタンをクリックし、ドロップダウンメニューから Edit field を選択します。以下の説明を追加してから Update をクリックします。
患者の ID
-
Save schema をクリックします。これにより、Squid AI に対してスキーマと説明が提供され、データに対するクエリの組み立て方を理解できるようになります。
-
サンプルアプリで、チャットボットにデータについて質問します。Squid AI はプロンプトに基づいてデータベースクエリを自動生成します。例として、以下を試してみてください。
- インフルエンザと診断された人は何人ですか?
- 50 歳以上の人で最も多い診断は何ですか?
- 喘息と診断された患者の平均年齢は何歳ですか?
コードの解説
バックエンドで AI クエリを実行する
Squid backend では、data-ai-service.ts ファイルに @executable デコレータが付いたクラスがあります。Squid の executable は、サーバー上で実行される関数をクライアントに提供します。
Executables はクライアントから直接アクセスでき、バックエンドのリソースや secrets にアクセスするための無制限の権限を持ちます。つまり、認可されたユーザーのみが実行できるようにするため、追加の注意を払う必要があります。
executeAiQuery メソッドは、データベースの connector 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 上で動作するチャットボットを使ってデータに関する質問へ回答する Web アプリの構築と実行に成功しました。次に試せることをいくつか紹介します。
- お気に入りのデータベースで Squid を使ってみる。利用可能な database connectors を確認。
- Squid AI で他に何ができるか確認する。
- このチュートリアルで AI agent を作成し、セキュアにする。
追加メモ
Squid environments
- Squid は 2 つのターゲット environment を提供します: 開発用の
devと、本番用のprod。このチュートリアルではdevenvironment を使用します。詳しくは、Squid のenvironmentsを参照してください。 - Squid developer ID は、プロジェクトをローカルで実行する場合にのみ使用されます。
Squid functionality
- Squid の組み込みデータベースを使用する場合、追加のカスタマイズなしで Squid backend は完全に機能します。また、データベースイベントに応じて動作する Schedulers、Triggers、生の SQL やデータベース固有のクエリを実行するための native queries など、Squid backend に機能を追加することもできます。利用可能なオプションは Backend SDK docs を参照してください。
- 組み込みデータベースはドキュメント指向のため、notes collection はドキュメントの集合(collection)を表します。SQL データベースを使用する場合、collection はテーブルを表し、ドキュメントはテーブルの行(row)に相当します。