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

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 connector の ... をクリックし、ドロップダウンから Schema を選択します。

  4. 次に、schema のコレクションとフィールドに説明を追加します。これにより、Squid AI がデータをより正確に理解し、質問に対してより適切な回答を提供できるようになります。

    health_data collection の鉛筆ボタンをクリックします。collection description に次の内容を追加してください。

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

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

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

コード解説

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

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

注意

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

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 つの異なるターゲット環境があります。開発用の dev と本番用の prod です。このチュートリアルでは dev 環境を使用します。詳細は Squid の environments を参照してください。
  • Squid developer ID は、プロジェクトをローカルで実行する場合にのみ使用されます。

Squid functionality

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