メイン コンテンツをスキップする 補完的コンテンツへスキップ

OpenAIを使ってユーザーデータベースをクエリー

このタスクについて

このシナリオでは、cLangChainToolsコンポーネントを使い、OpenAIによってユーザーデータベースをクエリーする方法を説明します。
このユースケースを実行するためには、H2データベースエンジンを起動し、以下の[Products] (製品)テーブルが利用可能であることが必要です。

コンポーネントをドロップしてリンク

手順

  1. [Palette] (パレット)からデザインワークスペースに、cLangChainConnectioncSQLConnectioncBeanRegistercTimercSetBodycJavaDSLProcessorcProcessorcSQLcJsonWriter、2つのcLangChainTools、2つのcLogという各コンポーネントをドラッグ&ドロップします。
  2. [Row] (行) > [Route] (ルート)接続を使用して、上記のようにコンポーネントをリンクさせます。

コンポーネントを設定

手順

  1. cLangChainConnectionコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  2. [Language Model] (言語モデル)リストから、OpenAIを選択します。
    [Base URL] (ベースURL)フィールドは、APIサーバーのデフォルトのアドレス(http://127.0.0.1/default)のままにします。
    [API Key] (APIキー)フィールドに、OpenAI にアクセスするための API キーを入力します。
    [Model Name] (モデル名)フィールドに、使用するモデルの名前(このユースケースでは"gpt-4o-mini")を入力します。
    [Timeout(s)] (タイムアウト)フィールドに、コンポーネントが言語モデルへの接続を確立するために3000と入力します。
  3. cSQLConnectionコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  4. H2データベースに接続するためには、以下のようにプロパティを設定します:
    1. [Driver Class] (ドライバークラス)フィールドに、H2データベースのクラス名として"org.h2.Driver"と入力します。
    2. [Driver JAR] (ドライバーJAR)テーブルの下にある[+]ボタンをクリックして行を追加します。
    3. セルを選択し、右側にある[...]ボタンをクリックして[Module] (モジュール)ダイアログボックスを開きます。
    4. [Platform] (プラットフォーム)オプションをクリックし、リストからh2-2.2.220.jarというドライバーJARを選択します。
    5. [OK]をクリックして[Module] (モジュール)ダイアログボックスを閉じます。
    6. [JDBC URL]フィールドに、使用するデータベースのJDBC URL (この例では"jdbc:h2:tcp://localhost/~/test")を入力します。
    7. [Authentication] (認証)チェックボックスをオンにしてデータベースユーザー認証データを入力します。
  5. cBeanRegisterコンポーネントをダブルクリックして、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  6. Idフィールドに、"jacksonJSONDataFormat"と入力します。
    [Customized] (カスタマイズ)オプションを選択し、[Code] (コード)フィールドに次のコードを入力してGsonデータ形式を定義します:
    GsonDataFormat jsonDataFormat = new GsonDataFormat();
    jsonDataFormat.setPrettyPrint(true);
    jsonDataFormat.setSerializeNulls(false);
    beanInstance = jsonDataFormat;
  7. cTimerコンポーネントをダブルクリックして、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  8. [Repeat] (繰り返し回数)フィールドに1と入力すると、メッセージ交換が1回生成されます。その他のオプションはデフォルト設定のままにしておきます。
  9. cSetBodyコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  10. [Language] (言語)リストボックスから[Constant] (定数)を選択し、[Expression] (式)フィールドにメッセージボディとして"Hello, could you show me the information of all pants?"と入力します。
  11. 最初のサブルートでcLangChainToolsコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  12. [Name] (名前)フィールドに"db-tools"と入力し、[Tags] (タグ)フィールドに"store"と入力します。
    [Connection] (接続)リストで、OpenAIに接続するためにcLangChainConnection_1コンポーネントを選択します。
  13. [Advanced settings] (詳細設定)ビューで、[System Message] (システムメッセージ)ボックスに以下のメッセージを入力します。
    "You are an intelligent store assistant. In the store, threre are shirts, dresses, pants and shoes. Users will ask you questions about store products. Your task is to provide accurate and concise answers. 
    If you are unable to access the tools to answer the user's query, tell the user that the requested information is not available at this time and that they can try again later."
  14. 最初のサブルートでcLogコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  15. [Specify output log message] (出力ログメッセージを指定)オプションを選択し、[Message] (メッセージ)フィールドに"${body}"と入力すると、メッセージボディがログに記録されます。
  16. 2番目のサブルートでcLangChainToolsコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  17. [Name] (名前)フィールドに"productsByCategory"と入力し、[Tags] (タグ)フィールドに"store"と入力します。
    [Description] (説明)フィールドに、ツールの説明(この例では"Query_database_products_by_category")を入力します。
    [Connection] (接続)リストで、OpenAIに接続するためにcLangChainConnection_1コンポーネントを選択します。
  18. cJavaDSLProcessorコンポーネントをダブルクリックして、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  19. [Code] (コード)ボックスに.convertHeaderTo("category", String.class)と入力し、ヘッダーのcategoryを文字列に変換します。
  20. 2番目のcLogコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  21. [Specify output log message] (出力ログメッセージを指定)オプションを選択し、[Message] (メッセージ)フィールドに"${header.category}"と入力すると、カテゴリーがログに記録されます。
  22. cProcessorコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  23. [Code] (コード)ボックスに次のコードを入力します:
    String category = (String)exchange.getMessage().getHeader("category");
    if (null != category) {
    	category = category.replaceAll("^\"|\"$", "");
    	exchange.getMessage().setHeader("category", category);
    }
  24. cSQLコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  25. [Datasource] (データソース)リストでcSQLConnection_1を選択し、その中で確立されたデータベースを使用します。[Query] (クエリー)ボックスに以下のコードを入力し、[Products] (製品)テーブルの指定されたカテゴリーのcategoryカラム、sizeカラム、colorカラム、stockカラムにあるデータを選択します:
    "select category, size, color, stock from Products where Lower(category) = Lower(:#category)"
  26. cJsonWriterコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  27. [JSON Library] (JSONライブラリー)リストでGsonを選択し、[Pretty Print] (プリティプリント)チェックボックスをオンにすると、出力されるJSONメッセージが読みやすい形式になります。
  28. Ctrl + Sを押してジョブを保存します。

コードを表示させてルートを実行

手順

  1. デザインワークスペースの下部の[Code] (コード)タブをクリックし、生成されたコードを確認します。

    上記のように、1つのメッセージフローはcLangChainTools_2からcJsonWriter_1にルーティングされ、もう1つはcTimer_1からcLog_1にルーティングされます。

  2. [Run] (実行)ビューをクリックして開き、[Run] (実行)ボタンをクリックしてルートの実行を開始します。F6を押して実行することもできます。
    リクエストされたカテゴリーと、データベーステーブル内のそのカテゴリに属する製品の情報が、実行コンソールに表示されます。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。