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

AI でデータをクエリする

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

作成するもの

学べること

  • Squid の executeAiQuery メソッドを使って、データについて質問する方法。
  • クライアントがバックエンドとやり取りできるようにするためのexecutable functionの設定方法。

TypeScript の経験があることが望ましいです。React の経験があると便利ですが、必須ではありません。


このチュートリアルでご協力いただいたパートナーの Otairo の皆様に多大なる感謝を申し上げます!

環境セットアップ

  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. 次に、スキーマのコレクションとフィールドに説明(description)を追加します。これにより Squid AI がデータをよりよく理解でき、質問に対してより正確な回答を提供できるようになります。

    health_data コレクションの鉛筆ボタンをクリックします。コレクション description に以下を追加します。

各ドキュメントには、患者の年齢、患者 ID、および医学的診断に関する情報が含まれます。
  1. age フィールドの ... ボタンをクリックし、ドロップダウンメニューから Edit field を選択します。以下の説明を追加してから Update をクリックします。
患者の年齢
  1. diagnosis フィールドの ... ボタンをクリックし、ドロップダウンメニューから Edit field を選択します。以下の説明を追加してから Update をクリックします。
患者の医学的診断
  1. patentId フィールドの ... ボタンをクリックし、ドロップダウンメニューから Edit field を選択します。以下の説明を追加してから Update をクリックします。
患者の ID
  1. Save schema をクリックします。これにより、Squid AI に対してスキーマと説明が提供され、データに対するクエリの組み立て方を理解できるようになります。

  2. サンプルアプリで、チャットボットにデータについて質問します。Squid AI はプロンプトに基づいてデータベースクエリを自動生成します。例として、以下を試してみてください。

  • インフルエンザと診断された人は何人ですか?
  • 50 歳以上の人で最も多い診断は何ですか?
  • 喘息と診断された患者の平均年齢は何歳ですか?

コードの解説

バックエンドで AI クエリを実行する

Squid backend では、data-ai-service.ts ファイルに @executable デコレータが付いたクラスがあります。Squid の executable は、サーバー上で実行される関数をクライアントに提供します。

Caution

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

executeAiQuery メソッドは、データベースの connector 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 上で動作するチャットボットを使ってデータに関する質問へ回答する Web アプリの構築と実行に成功しました。次に試せることをいくつか紹介します。

追加メモ

Squid environments

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

Squid functionality

  • Squid の組み込みデータベースを使用する場合、追加のカスタマイズなしで Squid backend は完全に機能します。また、データベースイベントに応じて動作する SchedulersTriggers、生の SQL やデータベース固有のクエリを実行するための native queries など、Squid backend に機能を追加することもできます。利用可能なオプションは Backend SDK docs を参照してください。
  • 組み込みデータベースはドキュメント指向のため、notes collection はドキュメントの集合(collection)を表します。SQL データベースを使用する場合、collection はテーブルを表し、ドキュメントはテーブルの行(row)に相当します。