2024年04月

08

【てくさぽBLOG】watsonx Assistant + Watson Discovery + watsonx.aiを連携してみた

こんにちは。
てくさぽBLOGメンバーの高村です。

ビジネスへの生成AI の取り込みに注目が集まっている今日、watsonx.ai をどう活用すればいいのか、多くのお客様からお問い合わせ頂いています。
そこで前回の「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)」では、watsonx.ai のユースケースとして Retrieval-Augmented Generation(以下 RAG)をご紹介しました。

今回は、RAG の仕組みを利用し AIチャットボットを提供する「watsonx Assistant(以下 Assistant)」と検索エンジン機能を提供する「Watson Discovery(以下 Discovery)」、「watsonx.ai」を組み合わせた連携ソリューションをご紹介します。

AssistantとDiscoveryの連携

本来なら各製品を一つのブログで詳しくご説明したいところですが、今回は連携した結果についてのご紹介となりますので、Assistant と Discovery については今後のブログであらためてご紹介したいと思います。

Assistant は watsonx の大規模言語モデルが搭載され、自然言語の問い合わせを理解し、適切な回答を返すことができるチャットボット機能を提供する製品です。
一方 Discovery はドキュメントから適切な情報を検索する検索エンジン機能、パターンや傾向を読み取る分析エンジンとしての機能を備えた製品です。

Assistant と Discovery を組合わせたユースケースでは Assistant にあらかじめ回答を用意してルールベースで回答させ、答えることが難しい問い合わせに対しては Discovery の検索結果を利用して回答します。

Assistant と Discovery を組合わせたユースケース

watsonx.aiを取り入れた連携

上記の連携では Discovery の検索結果がユーザーに表示される仕組みとなっていますが、watsonx.ai を介して回答を提供することでDiscovery が得た検索結果をさらに整理し、より理解しやすい形での返答が実現できます。

watsonx.aiを取り入れた連携

Assistant + Discovery + watsonx.aiを連携してみた

Assistant、Discovery、watsonx.ai を連携してみます。

事前準備

利用環境

今回は IBM Cloud で提供される SaaS を利用して検証します。
なお、Assistant と Discovery の Plusプランは30日間無償期間が付属されていますので、是非ご活用ください。

  • watsonx Assistant:Plusプラン(30日間無償期間あり、以降は有償)
  • Watson Discovery:Plusプラン(30日間無償期間あり、以降は有償)
  • watsonx.ai:Essentialプラン(有償)

検証の目的

検証では構築手順の他、以下の点を確認します。

  • 「Assistant + Discovery + watsonx.ai」と「Assistant + Discovery」の連携による回答の違いを比較
  • 言語モデルを変えて問い合わせを行い、回答の違いの比較

実施手順

以下の流れで検証を実施します。

  1. Assistantのプロビジョニング
  2. Discoveryのプロビジョニング、検索対象とするデータの取り込み
    ※取り込むデータは「IBM Power S1014 データシート」のS1014のPDF
  3. watsonx.aiのプロビジョニング
  4. Assistantの初期設定
  5. Assistantのカスタム拡張機能からDiscoveryを繋げる
  6. Assistantのカスタム拡張機能からwatsonx.aiを繋げる
  7. Assistantアクションの作成、問い合わせの検証
  8. 言語モデルを変えて問い合わせの検証

検証実施

1. Assistantのプロビジョニング

はじめに Assistant のプロビジョニングを行います。

  • IBM Cloud にログインし、カタログ画面から “Assistant” を選択します。

1-1

  • ロケーションとプランを選択し「作成」をクリックします。

1-2

  • しばらくすると以下の画面の様に、Assistant がプロビジョニングされます。

1-3

2. Discoveryのプロビジョニング

次に Discovery をプロビジョニングします。

  • カタログ画面から “Discovery” を選択します。

2-1

  • ロケーションとプランを選択し「作成」をクリックします。

2-2

  • しばらくすると以下の画面の様に、Discovery がプロビジョニングされます。
    ※ここで、資格情報内にある「API鍵」と「URL」をメモに控えます

2-3

  • 「Watson Discoveryの起動」をクリックし「New Project +」をクリックします。

2-4

  • Project name に任意の名前を入力、Project type では「Conversational Serch」を選択し「Next」をクリックします。

2-5

  • 作成されたプロジェクトをクリックします。

2-6

  • 「Integration Deploy」をクリックします。

2-7

  • 「API Information」タブをクリックし「Project ID」をメモに控えます。

2-8

次に検索対象の PDF を Discovery に取り込みます。

  • 「Manage collections」から「New collection +」をクリックし、「Collection name」に任意の名前を入力、「Select language」を「Japanese」に設定します。
  • Upload files の領域に PDF をドラッグアンドドロップして「Finish」をクリックします。

2-9

アップロードが完了しました。
次に、Smart Document Understanding機能(以下 SDU)を利用して PDF内のヘッダーやテキストなどのフィールドを定義します。

SDU は、PDFをはじめとする非構造化データの文書構造を理解して検索や分析の精度を向上させる機能です。
例えばタイトルと定義した箇所を検索キーとしたり、検索対象をテキストと定義した箇所のみとするなど可能になります。

  • 「Identify Field」タブをクリックします。
  • 取り込んだ PDF が表示されるので右側の Field labels からヘッダー箇所やタイトル箇所などをドラッグアンドドロップして指定していきます。
  • ページの定義が終わったら「Submit page」をクリックして次の頁を定義していきます。

SDU では数ページ指定すると自動的にヘッダー箇所やテキスト箇所を認識してくれるので、何ページもあるドキュメントには便利な機能です。

今回は SDU を使って PDF の文書構造を定義しました。
SDU以外の Discovery の機能については、また別の機会にご紹介したいと思います。

3. watsonx.aiのプロビジョニング

※watsonx.ai のプロビジョニング方法は「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part1)」をご参照ください。

4. Assistantの初期設定

Assistant の初期設定を行います。

  • Assistant を起動します。
  • 起動後、以下の項目を入力します。
    • Assistant name:任意の名前を入力
    • Assistant Language:「English」を選択
      ※日本語を選択することが可能ですが、Assistant のスターターキットは英語での利用を想定しているため今回はEinglishを選択します

4-1

  • Assistant の公開先を「web」に設定します。
    ※”Tell us about your self” 以降はご自身の情報を入力ください
  • 入力後「Next」をクリックします。

4-2

  • デフォルトのチャットUI を利用するため「Next」をクリックします。

4-3

  • プレビュー画面が表示されるので「Create」をクリックします。
    (以下の画面は「Create」が隠れてしまっています)

4-4

「Congratulations!」と表示されたら初期設定は完了です。

4-5

5. Assistantのカスタム拡張機能からDiscoveryを繋げる

「Githubのassistant-toolkit」から “watson-discovery-query-openapi.jsonファイル” をダウンロードします。

  • Assistant のメニューから「Integration」をクリックします。

5-1

  • 下にスクロールし「Build custom extension」をクリックします。

5-2

  • 以下の画面が表示されるので「Next」をクリックします。

5-3

  • 「Extension name」に任意の名前を入力し「Next」をクリックします。

5-4

  • 先程ダウンロードした watson-discovery-query-openapi.jsonファイルをドラッグアンドドロップでアップロードします。

5-5

  • 以下の画面が表示されるので「Finish」をクリックします。

5-6

  • 追加した Extension の「Add +」をクリックします。

5-7

  • 以下の画面が表示されるので「Next」をクリックします。

5-8

  • 以下の画面が表示されるので、選択および入力します。
    • Authentication type:「Basic auth」を選択
    • Username:「apikey」と入力
    • Password:メモに控えたWatson DiscoveryのAPI鍵
    • discovery_url:メモに控えたWatson DiscoveryのURLから”http://”を除いた値

※以下の画面ショットは discovery_url入力箇所が切れてしまっていますが、実際は「Servers」の下に discovery_url の項目があります

5-9

  • 以下の画面が表示されるので「Finish」をクリックします。

5-10

  • Extension が「Open」となっていることを確認します。

これで watsonx Assistant と Watson Discovery が連携できました。

5-11

6. Assistantのカスタム拡張機能からwatsonx.aiを繋げる

次に、Assistant のカスタム拡張機能から watsonx.ai を利用できるように設定します。

設定には IBM Cloud の APIキーと watsonx.ai のプロジェクトID が必要です。
取得方法は「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)」をご参照ください。
なお、今回は東京リージョンで watsonx.ai をプロビジョニングします。

  • Github の「assistant-toolkit」から “watsonx-openapi.json” をダウンロードします。
  • Visual Studio Code などで東京リージョンの URL に編集し保存します。

6-1

  • Discovery の連携と同様に、Assistant のメニューから「Integration」「Build custom extension」をクリックします。
  • 以下の画面が表示されるので、任意の Extension name を入力して「Next」をクリックします。

6-2

  • 編集した watson-discovery-query-openapi.jsonファイルをドラッグアンドドロップでアップロードして「Next」をクリックします。

6-3

  • 以下の画面が表示されるので「Finish」をクリックします。

6-5

  • 追加した Extension の「Add +」をクリックします。

6-6

  • 以下の画面が表示されるので、選択および入力します。
    • Authentication type:「Oauth 2.0」を選択
    • Grant type:「Custom apikey」を入力
    • apikey:取得済みのIBM CloudのAPIキー
    • Client authentication:「Send as Body」を選択
    • Header prefix:Bearer(デフォルト)
    • Servers:https://jp-tok.ml.cloud.ibm.com(自動入力)

6-7

  • 以下の画面が表示されるので「Finish」をクリックします。

6-8

  • Extension が「Open」となっていることを確認します。

これで Assistant と watsonx.ai が連携できました。

6-9

7. Assistantアクションの作成、問い合わせの検証

Github の「assistant-toolkit」から “discovery-watsonx-actions.json” をダウンロードします。

  • Assistant の「Actions」から「Global Setting」をクリックします。

7-1

  • 「Upload/Download」タブをクリックし、Uploadスペースに discovery-watsonx-actions.json をドラッグアンドドロップしてアップロードします。

7-2

  • 以下の画面が表示されるので「Upload and replace」をクリックします。

7-3

  • 以下の画面の通り、3つのアクションが作成されます。

7-4

  • メニューから「Variables」「Created by you」をクリックします。
  • 「discovery_project_id」の値をメモに控えていた Discovery のプロジェクトID を入力し「Save」をクリックします。

7-5

  • 「watsonx_project_id」の値をメモに控えて置いた watsonx.ai のプロジェクトID を入力し「Save」をクリックします。

7-6

  • 「model_id」の値で watsonx.ai で使用する言語モデルを指定します。
    2024年2月29日に GA された日本語で訓練された Granite-japaneseモデルを使用するため、「ibm/granite-8b-japanese」を入力し「Save」をクリックします。
    (その他変数はデフォルト値とします)

7-7

  • 「Actions」から「Generate Answer」を選択し、「model_input」の値を以下の例の様に日本語に変更します。
例:
(“<s>[INST] <<SYS>>\nあなたは親切で、礼儀正しく、誠実なアシスタントです。常に安全を保ちながら、できるだけ役立つように答えてください。答えは簡潔に日本語で回答してください。回答には、有害、非倫理的、人種差別的、性差別的、有毒、危険、または違法なコンテンツを含めてはいけません。回答が社会的に偏見がなく、本質的に前向きであることを確認してください。\n\n質問が意味をなさない場合、または事実に一貫性がない場合は、正しくないことに答えるのではなく、その理由を説明してください。質問の答えがわからない場合は、誤った情報を共有しないでください。\n<</SYS>>\n\n質問に答えることで、次のエージェントの応答を生成します。タイトルが付いたいくつかの文書が提供されます。答えが異なる文書から得られた場合は、あらゆる可能性について言及し、文書のタイトルを使用してトピックまたは領域を区切ってください。与えられた文書に基づいて回答できない場合は、回答がない旨を記載してください。\n\n”).concat(passages).concat(“\n\n[question]: “).concat(query_text).concat(“[/INST]”)

7-8

以上で設定は完了です。

さっそく Assistant から問い合わせをしてみます。

  • 右下の「Preview」をクリックします。

7-9

  • チャットから S1014 の特徴について問い合わせしてみます。
    約18秒後に以下の回答が返ってきました。

7-10

  • 「Inspect」をクリックすると、Discovery の検索結果が以下の通り watsonx.ai に渡されていることがわかります。
<s>[INST] <<SYS>> あなたは親切で、礼儀正しく、誠実なアシスタントです。常に安全を保ちながら、できるだけ役立つように答えてください。答えは簡潔に日本語で回答してください。回答には、有害、非倫理的、人種差別的、性差別的、有毒、危険、または違法なコンテンツを含めてはいけません。回答が社会的に偏見がなく、本質的に前向きであることを確認してください。 質問が意味をなさない場合、または事実に一貫性がない場合は、正しくないことに答えるのではなく、その理由を説明してください。質問の答えがわからない場合は、誤った情報を共有しないでください。
<</SYS>> 質問に答えることで、次のエージェントの応答を生成します。タイトルが付いたいくつかの文書が提供されます。答えが異なる文書から得られた場合は、あらゆる可能性について言及し、文書のタイトルを使用してトピックまたは領域を区切ってください。与えられた文書に基づいて回答できない場合は、回答がない旨を記載してください。[title]: IBM Power S1014 柔軟かつセキュアなハイブリッドクラウド・インフ ラストラクチャーで俊敏性を実現[document]: 1 コ ア 当 た り 4 つ の M a t r i x Math Acceleratorによる迅速 なAI推論のために洞察と自動 化を合理化 業界標準のDIMMより2倍優 れたメモリーの信頼性と可用 性を提供 IBM® Power® S1014 は、1ソケット、4U Power10プロセッサーをベースにしたサー バーで、IBM AIX®、IBM iまたは Linux®上のビジネス・クリティカルなワークロード 向けに設計されています。Power S1014を使用することで、ワークロードはより 少数のサーバーに統合され、ソフトウェア・ライセンスの数、電力と冷却のコスト を削減します。Power S1014サーバーは、プロセッサー上でのメモリー暗号化を 使用してエンドツーエンドからデータを安全に保護し、ラック型またはタワーフォー ム・ファクターで購入できます。 プロセッサー・レベルでのメモリー暗号化と、POWER9 と比較してすべてのコア で4倍の暗号化エンジンによりコアからクラウドまでのデータを保護 ますます高度に分散した環境に存在するデータには、もはや境界線を設定すること は不可能です。 [question]: S1014の特徴は?[/INST]

Assistant と Discovery のみの連携で検索した結果は以下の通りです。
watsonx.ai を使用した方がより簡潔で分かりやすい回答を得られることが分かります。

7-11

8. 言語モデルを変えて問い合わせの検証

言語モデルを “llama-2-70b” にして同様の問い合わせをしたところ、約24秒後に回答が返ってきました。
箇条書きで丁寧な印象です。

8-1

言語モデルを “elyza-japanese” にした際は10秒ほどで回答がありました。
主語として「S1014の特徴は」とあることで、問いに対する回答が分かりやすくなっています。

8-2

言語モデルを変えて試した結果、llama-2-70B は箇条書きで回答し丁寧な印象を受けましたが、回答が得られるまでに24秒かかりました。
一方 Granite-japanese や elyza-japanese はシンプルな回答を生成し、Granite-japanese は18秒、elyza-japanese は10秒というより短い時間で回答を得られました。

Watson Discovery の検索結果に基づき watsonx.ai で回答を生成するので、ある程度時間がかかると予想していましたが、elyza-japanese は速い回答で主語を添えてわかりやすく回答してくれました。

また、llama-2-70B は汎用的で使いやすいモデルですが、プロントで「日本語で回答して」と指示をしても問い合わせ内容によっては英語で回答することがありました。
日本語の回答精度を求める場合は、Granite-japanese や elyza-japanese を使用した方が精度の高い回答を得ることができます。

モデルを変えて問い合わせてみると、モデルごとに得意なタスクが異なることがわかりました。
数百億のパラメータで訓練された大規模言語モデルを一概に選択するのではなく、言語やタスクの特性に合わせて最適なモデルを選定することが重要になりそうですね。

さいごに

いかがでしたでしょうか。
Github から提供されているスターターキットを使って Assistant、Discovery、watsonx.ai を繋げてみましたが、ほどんど躓くことなく UI から簡単に設定することができました。

接続自体に高度な難しさは感じませんでしたが、問い合わせに対して正確な情報を得るためには Assistant の検索設定を調整する必要があります。
今回は1つの PDFファイルの検索を行いましたが、複数の PDFファイルから情報を引き出す際には Assistant で query を設定することで特定の PDFファイルからの検索が可能です。

このように PDF などの非構造化データを検索対象として精度の高い回答を得るには、Discovery において文書の構造を明確に定義し、Assistant の検索設定を調整することが必要です。

実際にヘルプデスクなどの Webチャットで利用する場合は、Assistant にあらかじめ用意した回答をルールベースで回答させ、それでも解決できない問い合わせについては Discovery を通じて検索を行い、watsonx.ai を用いて回答を生成するという流れが効果的です。

ただし、生成AI によって生成される回答は常に”100%正確な回答”ではないので、より高い精度の回答を追求するためにはプロンプトの調整などチューニングを施すことが必要です。
その結果、より使いやすい Webチャットの実現が期待できます。

お問い合わせ

エヌアイシー・パートナーズ株式会社
E-Mail:nicp_support@NIandC.co.jp

 

その他の記事

2025年08月21日

【イベントレポート】watsonx Orchestrate テクニカルワークショップ第一回 開催しました

公開日:2025-08-21 こんにちは。てくさぽブログメンバーの佐野です。 2025年7月17日に「watsonx Orchestrate テクニカルワークショップ」第一回を開催しました。 2024年12月にもwatsonx Orchestrate(以下wxO)のハンズオンセミナーを開催しておりますが、6月にwxOの大幅なアップデートが入り使い方・作り方が大きく変更になったため、最新情報と基本的な使い方をいち早くお届けするべく企画・開催しました。 また、ハンズオンだけでなくワークショップの時間を設け、wxOがどのように使えるのかを参加者同士でディスカッションし、最後に各チーム毎に発表・共有をすることでwxOの理解を進めるとともに参加者同士のコミュニケーションを図りました。 本ブログではこのテクニカルワークショップについて簡単ですがご紹介します。 目次 watsonx Orchestrate概要 watsonx Orchestrateハンズオン ワークショップ まとめ お問い合わせ watsonx Orchestrate概要 旧wxOと比べて新wxOはAgentの開発方法が変わっています。画面が変わったのはもちろんのこと、エージェントで実行部分を示す用語も「Skill」から「Tool」へ変更となっています。他に大きく変わったのは以下の点になります。 新しく「Knowledge」機能が追加され、Agent内にファイルを添付することができ、簡易的なRAGの構成をNo-Codeで実現 Agent内で定義しているToolを呼び出す際に、LLMが自動でチャットに入力されたテキストから必要な情報を抜き出し、Toolへ渡す Agentから他のAgentを呼び出せる(wxO以外のAgentも呼び出せる)Multi-Agent Orchestration機能 「Behavior」に日本語で返答させたりAgentの挙動を定義 人事業務や購買業務、営業業務といった特定業務向けの事前定義Agentを提供 AgentやToolをPythonで実装するためのAgent Development Kit (ADK)および開発者向けのDeveloper Editionを提供 モニタリング機能でAgent処理履歴のトレース情報を参照可能 自社で開発したエージェントを提供する”Agent Connect”というAIエージェントのエコシステム上でマーケットプレイス環境 wxOの各エディション内の機能の変更と課金対象の変更 このように大きな機能追加や使い方の変更が入ったことをご紹介し、理解頂きました。 watsonx OrchestrateでAgentを作成する時の主な設定項目は以下のようなものがあります。 watsonx Orchestrateハンズオン 概要でお伝えしたように、用語も変わった上に画面も新しくなっています。 そのため、AI Agentを動作させるための以下の基本的な操作をハンズオンで体験頂きました。 wxO環境の説明や基本的な操作 Agentの新規作成 Toolの作成・利用 Knowledgeを利用した簡易的なRAG Agent Tool Builderを利用しFlowやCodeblockの作成 Agentから他のAgentを呼び出し これらのハンズオンはCodeblockを除きNo-CodeでWebブラウザ上の操作で実行できるため、プログラミングやシステム開発の知識・経験が無くてもAI Agentを動かすことができます。Codeblock機能はAgentの動作・処理順を定義する”Flow”の中でPythonを使ってデータを操作するための機能であり、簡易的なETLを実現するものです。 今回のハンズオンでは、サンプルとその手順をご用意したので、参加者の方々が一通りのことを体験頂くことができました。実際にハンズオンで体験頂いた内容のサンプルをいくつかご紹介します。 Agentのサンプル1:都市名からお天気情報を返答するAgent APIで他サービスを呼び出し、都市名を入力すると天気と気温を回答してくれます。 複数の都市名を入力し、表形式で回答してもらうこともできます。 Agentのサンプル2:簡易的なRAG Agent ファイルを添付し、そのファイルの内容から回答をしてくれる機能です。 ハンズオンではIBMの2024年度の年次レポートを添付し、その内容を元に財務パフォーマンスのサマリーを回答させました。 ファイルの該当箇所が参照できるので、根拠を確認できるのがよいところです。 ファイルは事前にAgentに添付しておくこともできますし、ユーザー自身がファイルを添付する使い方もできます。 ワークショップ 今回、ハンズオンだけでなくwxOを自社または自社のお客様がどのように利用すると効率化できるか?という観点でチームに分かれてワークショップを行いました。 1チーム4人の合計3チームに分かれてNI+C Pメンバーがファシリテートしながらアイディア出し・ディスカッションを行いました。 最後に各チームのディスカッション結果を発表いただき、「こんなことできたらいいな」というアイディアを全員で共有し合いました。 ワークショップで上がった意見の中からいくつかピックアップします。 市役所の窓口業務を実施するAI Agent チャットだけでなく音声対応もできる 個別業務を処理するTool/Agentと情報参照のRAGを併用してユーザーへの問い合わせへ回答 ブログを書いてくれるAI Agent 過去のブログを参考にして文体や言い回しを自分流に ドラフト書くAgent、推敲Agent、ファクトチェックAgentなど組み合わせ 薬局の在庫予測や自動発注にAI Agentを活用 まとめ 新しくなったwxOのハンズオンを1か月とちょっとで実施するというチャレンジングなワークショップでしたが、無事終えることができてホッとしています。 ご参加頂いた方々からのアンケートで「最新情報を知り、その環境で動作させられたのがよかった」とご意見を頂いており、準備した甲斐があったと嬉しく思っております。 wxOテクニカルワークショップの第二回も企画しておりますし、他の製品についても企画中ですので、この記事をご覧の皆様のお役に立てるよう、今後も企画・実現していきます。 「こんなことやって欲しい」というご意見ありましたら是非ご意見お願いいたします。 お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社技術企画本部E-mail:nicp_support@NIandC.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年08月04日

【てくさぽBLOG】IBM watsonx OrchestrateのADKを使ってみた

こんにちは。 てくさぽBLOGメンバーの高村です。 早速ですが、今年5月に開催されたIBMの年次イベント「Think2025」で、watsonx Orchestrateの新機能が発表されました!その中の一つとして、開発者向けの「Agent Development Kit(以下、ADK)」があります。今回はこのADKを活用し、watsonx Orchestrate環境への接続やエージェントの追加といった操作を行い、その使用感をご紹介します。  なお、watsonx Orchestrateについては、今年2月、3月に公開した「watsonx OrchestrateやってみたBLOG」でご紹介しておりますので、是非こちらもご一読ください。 【てくさぽBLOG】IBM watsonx Orchestrateを使ってみた(Part1) 【てくさぽBLOG】IBM watsonx Orchestrateを使ってみた(Part2) 目次 はじめに ADKとは? ADK使ってみた さいごに お問い合わせ はじめに Think2025で発表された新機能は、6月に環境へ追加されました。それ以前の環境とは、メニュー構成や操作方法、機能名称に変更があります。 例えばこれまで「Skill」と呼ばれていたものが「Tool」へと名称変更されています。 アップデート後の環境につきましては、別ブログにて改めて詳しくご紹介させていただく予定ですので、ぜひご期待ください! ADKとは? まずはADKについてご紹介します。ADKとは開発者向けにwatsonx OrchestrateのAgentやToolをスクラッチ開発するための開発キットになります。ローカル端末などに導入し、pythonベースで開発を行うことができます。 また、ADKとは別に、watsonx Orchestrate Developer Editionをローカル端末に導入することで、ADKで開発したAgentやToolのテストが可能になります。なお、watsonx Orchestrate Developer EditionはDockerコンテナ上で動作し、現時点のハードウェア要件はCPUは最小8コア、メモリは最小16GBが必要です。詳細はInstalling the watsonx Orchestrate Developer Editionをご確認ください。   ADKとwatsonx Orchestrate Developer Editionを利用することで、コードの迅速な作成・修正や柔軟なカスタマイズに加え、環境へのデプロイ前にローカルでテスト・修正が可能となり、作業効率の向上が期待できます。 ADK使ってみた 前述ではADKでAgent開発し、watsonx Orchestrate Developer Editionで動作確認、SaaS watsonx Orchestrateへインポートする構築の流れをお話しましたが、今回の検証における動作確認は検証環境として利用しているIBM Cloud 上のwatsonx Orchestrate利用します。よって前述したwatsonx Orchestrate Developer Editionは利用せず、ADKからwatsonx Orchestrate検証環境へAgentとToolを直接インポートし、動作確認を行いたいと思います。また、ADKのインストール先は自分の端末ではなく、IBM Cloud上に構築したUbuntuのVirtual Server Instance(以下、VSI)を使用します。検証環境の構成イメージは下記の図の通りです。 尚、ADKのインストール要件はPython 3.11以上、Pip、そして仮想環境(以下venv)が必要です。詳細については、Getting started with the ADKをご確認ください。 それでは早速使ってみましょう! VSIのプロビジョニング まずはADKをインストールするVSIをプロビジョニングします。本ブログではプロビジョニング方法について詳しく記載いたしませんが、手順は「【てくさぽBLOG】IBM Power Virtual ServerのAIX環境とIBM Cloud Object Storageを接続してみた(Part1)」のVSI for VPCの作成をご参考ください。 OSはUbuntu 22.04 LTS Jammy Jellyfish Minimal Install、リソースは2vCPU,4GB RAMで作成しました。VSI作成時にSSH鍵が必要なるので作成を忘れないようにしてください。 作成すると数分で起動します。端末からSSHログインするため浮動IPが必要になります。赤枠で囲った浮動IPを作成しインスタンスに紐づけします。以上でVSIの作成は完了です。 Ubuntuの設定 ターミナルを開きsshでUbuntuにログインします。私はWindowsのコマンドプロンプトを使用しました。Ubuntuユーザでログイン後、rootパスワードを設定し、スイッチできるようにします。 ubuntu@nicptestvsi:~$ sudo passwd root New password: Retype new password: passwd: password updated successfully ubuntu@nicptestvsi:~$ su - pythonのバージョンを確認したところ3.10.12でした。ADKの要件は3.11以上ですので、バージョンアップが必要になります。最初は3.13にバージョンアップしてみたのですが、後続作業と最新バージョンではパッケージが合わなかったのかうまく動かず…仕切り直して3.11を利用することにしました! root@nicptestvsi:~# apt install python3.11 バージョンアップ後、デフォルトバージョンとして3.11を指定します。 root@nicptestvsi:~# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2 sudo update-alternatives --config python3 update-alternatives: using /usr/bin/python3.10 to provide /usr/bin/python3 (python3) in auto mode update-alternatives: using /usr/bin/python3.11 to provide /usr/bin/python3 (python3) in auto mode There are 2 choices for the alternative python3 (providing /usr/bin/python3).Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/python3.11 2 auto mode 1 /usr/bin/python3.10 1 manual mode 2 /usr/bin/python3.11 2 manual modePress <enter> to keep the current choice[*], or type selection number: 2 root@nicptestvsi:~# root@nicptestvsi:~# python3 --version Python 3.11.13 次に下記コマンドを実行して任意のvenvを作成します。 python3 -m venv /path/to/nicpse/project/your-venv-adktest <環境のパスを指定 venvを活性化してログインします。下記コマンド結果のようにvenvに入れましたらUbuntuの設定は完了です。 root@nicptestvsi:~# source /path/to/nicpse/project/your-venv-adktest/bin/activate (your-venv-adktest) root@nicptestvsi:~# ADKのインストール 以下コマンドを実行してADKをインストールします。ADKは6月時点で1.5.1が最新バージョンです。 (your-venv-adktest) root@nicptestvsi:~# pip install ibm-watsonx-orchestrate Collecting ibm-watsonx-orchestrate Downloading ibm_watsonx_orchestrate-1.5.1-py3-none-any.whl.metadata (1.4 kB) Collecting certifi>=2024.8.30 (from ibm-watsonx-orchestrate) Downloading certifi-2025.6.15-py3-none-any.whl.metadata (2.4 kB) Collecting click<8.2.0,>=8.0.0 (from ibm-watsonx-orchestrate) Downloading click-8.1.8-py3-none-any.whl.metadata (2.3 kB) Collecting docstring-parser<1.0,>=0.16 (from ibm-watsonx-orchestrate) Downloading docstring_parser-0.16-py3-none-any.whl.metadata (3.0 kB) Collecting httpx<1.0.0,>=0.28.1 (from ibm-watsonx-orchestrate) Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB) ----中略---- (your-venv-adktest) root@nicptestvsi:~# orchestrate --version ADK Version: 1.5.1 ADKの環境設定 次にADKの環境設定を行います。watsonx OrchestrateのインスタンスIDが必要になるため、watsonx OrchestrateのSetting画面に入り確認します。下記画面をご参考にしてください。 環境設定コマンドはこちらになります。-nの後はvenv名を指定し、-uの後はインスタンスIDを指定します。 (your-venv-adktest) root@nicptestvsi:~# orchestrate env add -n <仮想環境名> -u <環境のインスタンスID> [INFO] - Environment 'my-name' has been created [INFO] - Existing environment with name 'nicpse' found. Would you like to update the environment 'nicpse'? (Y/n)y [INFO] - Environment 'nicpse' has been created 以下コマンドを実行して、IBM Cloud上のwatsonx Orchestrateと認証設定をします。APIキーの取得方法は「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)」のAPIキーの取得をご確認ください。尚、リモート環境に対する認証は2時間ごとに期限切れになります。期限が切れた場合は再度認証する必要があります。 (your-venv-adktest) root@nicptestvsi:~# orchestrate env activate nicpse --apikey <APIキー> [INFO] - Environment 'my-ibmcloud-saas-account' is now active [INFO] - Environment 'nicpse' is now active 下記コマンドを実行してCLIから利用できる環境のリストを表示します。IBM Cloud上のwatsonx Orchestrateがactiveとなっていました! (your-venv-adktest) root@nicptestvsi:~# orchestrate env list nicpse https://api.us-south.watson-orchestrate.cloud.ibm.com/instances/XXXXXXXX (active) local http://localhost:XXXX Toolとagentのインポート 次にToolとAgentのインポートを行います。ToolとはAgentがタスクを実行する際に利用する機能です。今回は、IBM様より共有いただいたyfinanceを活用したToolおよびAgentのコードを、ADKを用いてインポートします。なお、yfinanceはヤフーファイナンスから株価などの金融データを取得するためのPythonライブラリです。 最初にToolのインポートを行います。下記の様に、scpなどでToolファイルとrequirements.txtをディレクトリにアップロードしておきます。requirementsファイルは他のモジュールと依存関係がある場合使用します。 (your-venv-adktest) root@nicptestvsi:~/orchestrate_tool/py/source_02# ls -l total 12 -rw-r--r-- 1 root root 0 Jun 24 04:42 __init__.py drwxr-xr-x 2 root root 4096 Jun 24 04:38 __pycache__ -rw-rw-r-- 1 ubuntu ubuntu 8 Jun 24 03:02 requirements.txt -rw-rw-r-- 1 ubuntu ubuntu 1778 Jun 24 02:46 yfinance_agent.py 下記コマンドを実行してToolファイルとrequirementsファイルをインポートします。企業情報を取得するstock_infoと株価を取得するstock_quoteの2つのToolがインポートされました。 (your-venv-adktest) root@nicptestvsi:~/orchestrate_tool/py/source_02# orchestrate tools import -k python -f "./yfinance_agent.py" -r "./requirements.txt" [INFO] - Using requirement file: "./requirements.txt" [INFO] - Tool 'stock_info' imported successfully [INFO] - Tool 'stock_quote' imported successfully listコマンドを実行するとインポートされたToolを確認できます。 (your-venv-adktest) root@nicptestvsi:# orchestrate tools list ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━┳ ┃ Name ┃ Description ┃ Permission ┃ Type ┃ Toolkit ┃ App ID ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━╇ │───────────┼────────────┼── │ send_mail_brevo │ send a meil using Brevo. │ write_only │ python │ │ │ │ │ │ │ │ │ │ ├─────────────────────────────────┼──── │ stock_quote │ 企業のTickerSymbolを用いて株価… │ read_only │ python │ │ │ ├─────────────────────────────────┼──── │ Untitled_6160RC │ No description │ read_only │ openapi │ │ │ ├─────────────────────────────────┼──── │ stock_info │ 企業のTickerSymbolを用いて企業… │ read_only │ python │ │ │ └─────────────────────────────────┴──── 次にAgentをインポートします。下記コマンドを実行します。 (your-venv-adktest) root@nicptestvsi:~/orchestrate_tool/py/source_02# orchestrate agents import -f ./yfinance_agent.yaml agent listコマンドでインポート済みのAgentを確認できました。Agentが使用するToolも表示されています。 (your-venv-adktest) # orchestrate agents list ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━ ┃ Name ┃ Description ┃ LLM ┃ Style ┃ Collaborators ┃ Tools ┃ Knowledge Base ┃  ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━ │ yfinance_age… │ 企業の会社情… │ watsonx/meta- │ react │ │ stock_info, │ │ │ │ │ llama/llama-3 │ │ │ stock_quote │ │ ││ │ │ -2-90b-vision ││ │ -instruct │ │  IBM Cloud上のwatsonx Orchestrateで動作確認 インポートしたAgentとToolをIBM Cloud上のwatsonx Orchestrateで確認します。 watsonx Orchestrateへログインし、BuildからAgent Builderを選択します。 yfinanceエージェントが表示されているので、クリックします。 クリックすると、Agent作成画面に入ります。UIから基盤モデルを変更したり、Agentの振る舞いなど変更することができます。 スクロールして、Toolsetを確認するとADKからインポートしたToolが登録されています。 右のPreviewからAgentの動きを確認することができます。今回はDeployせずPreviewで確認します。入力欄には「IBMの株価は?」と質問してみます。しばらくすると本日の株価が回答されました。Show Reasoningを開くと推論過程を確認することができます。株価を取得するTool「stock_quote」を使用し、AIがユーザの入力から自動的にTicker symbolを入力していることがわかります。 次に「IBMの企業情報」と質問をします。しばらくするとAIがユーザの入力からTicker symbolを入力し、Tool「stock_info」を利用して企業情報を取得、回答されました。ユーザの入力内容からAgentが使用するToolを選択し、実行していることがわかります。   さいごに ADKのご紹介とADKを使ってToolとAgentのインポートを行いました。 ADKのインストールおよび設定について、Pythonバージョンの設定やvenvの作成でつまずく部分はありましたが、venvが作成できればその後の設定はスムーズに進められました。 今回はVSI上のUbuntuサーバにADKをインストールしましたが、ご自身の端末に導入することで、より気軽にAgent開発を行えるかと思います。なお、今回は検証対象外でしたが、watsonx Orchestrate Developer Editionを利用する場合は、インストール要件としてやや高めのスペックが必要になる点にご注意ください。 検証時のADKのバージョンは1.5.1でしたが、7月末では1.8.0が最新バージョンとなっています。比較的頻繁にアップデートされますので適宜Release Notesをご確認ください。バージョンアップでコマンドオプションも変更される場合があるため、マニュアルを確認するかコマンドに`--help`を付与してパラメータを確認することをおすすめします。   お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社 技術企画本部 E-mail:nicp_support@NIandC.co.jp   .anchor{ display: block; margin-top:-20px; padding-top:40px; }

2025年07月11日

【参加レポート】Domino Hub 2025

公開日:2025-07-11 みなさまこんにちは。ソリューション企画部 松田です。 2025年6月19日・20日と2日間に渡って開催された「Domino Hub 2025」に参加しました。これは HCL Ambassador有志が企画・実行する Dominoコミュニティイベントです。去年に続き、今回が3回目の開催となります。 昨年同様、今回もエヌアイシー・パートナーズはスポンサーとしてご支援させていただき、両日参加いたしました。そのレポートをお送りします。 目次 イベント概要 セッション内容 - Domino 14.5 リリース 特徴的機能とライセンス改定 -ロードマップ -お客様事例:曽根田工業様 最後に 関連情報 お問い合わせ イベント概要 「Domino Hub」は、HCL Ambassadorが主宰となり、Dominoの利用者、開発者、ソリューションベンダーが一堂に会するコミュニティイベントです。今回は1日目がオンライン、2日目はオンサイトのみの開催でした。 特に2日目は参加率が非常に高かったとのことで、会場も大変盛況でした。結婚式場としても使われている今回の会場は、中庭から陽の光が差し込み、解放感があるラグジュアリーな空間で、一般的なビジネスミーティングよりも上質な雰囲気が感じられました。 併せて展示ブースも設置され、Dominoアプリケーションがスマートフォンやブラウザで使えるようになる「HCL Nomad」などのHCL製品とともに、様々なビジネスパートナー様の多彩な関連製品が数多く展示・紹介されていました。 セッション内容 2日間で全22セッションが行われました。セッションはHCLをはじめ、HCL Ambassadorから、様々な開発ベンダー、製品ベンダー、エンドユーザーからの事例紹介などのセッション、そしてパネルディスカッションがありました。まずHCLからのセッション内でのトピックをお伝えします。機能のみならずライセンスまわりで大きなニュースもありました。 Domino 14.5 リリース 特徴的機能とライセンス改定 Domino Hubの2日前、2025年6月17日にリリースされました。 Domino IQ 特徴的な機能で最も注目すべき、今回もご説明に時間を割かれていたのが「Domino IQ」です。 一言で言えば「Domino内にローカルでLLMを持たせ、蓄積されてきたDominoアプリ内の情報も取り込み、セキュアな環境で生成AIを用いた業務を実現する」ものです。 企業内業務で生成AIをどのように実装し利用していくかは今、皆様の大きな関心事項であられると思います。自社のDomino環境内で、Dominoアプリケーションを用い、Notesクライアントからそれが実現できることになります。 (画像クリックで拡大) Nomad for Web COM対応 またNomad for WebがCOMに対応したことにより、これまではNotesクライアントだけでしかできなかったExcelやPowerPointを埋め込んだDiminoアプリもブラウザから利用できるようになりました。 ライセンスダッシュボード:DLAUの統合 これまでGitHubからダウンロードしてセットアップしていたDomino License Analysis Utility (DLAU)がDomino内にデフォルトで統合され、The Domino License Administration (DLA) となりました。 (画像クリックで拡大) ライセンス改定 そしてライセンスにも大きなベネフィットが付加されました。CCB Termライセンスにはこれまで「Domino Leapで5アプリケーションまで開発・利用が可能」という権利が含まれていましたが、2025年7月1日からその制限がなくなりました。すなわち「2025年7月1日以後有効なCCB Termライセンスをお持ちのお客様は、Domino Leapのフル機能が利用できる」となります。 同時に、Domino Leapライセンスの利用範囲であるHCL Enterprise Integrator(HEI)の利用権利も含まれます。これでCCB Termライセンスのみで、追加費用なく「ブラウザによるノーコード/ローコード開発」「基幹業務とDominoアプリケーションの連携」が可能になります。 さらにCCB Termで利用できるSametime Chatで添付ファイルと画像添付も可能になりました。 ロードマップ Domino、Notes、Verse、Nomadなど各ソリューションについてのロードマップも紹介されました。先々の計画は出てこないものですが、このようにHCLから明確に提示されることにより、Dominoをお使いのお客様はこれからも安心して利用を継続していただけると思います。 Dominoのロードマップ(画像クリックで拡大) Notesのロードマップ(画像クリックで拡大) Nomad, VerseといったエンドユーザーのUI部分が短期間でバージョンアップされていく。(画像クリックで拡大) お客様事例:曽根田工業 様 Dominoユーザーの有限会社曽根田工業 代表取締役 曽根田 直樹 様より、Domino事例のご講演がありました。曽根田様は2001年に静岡県磐田市で個人で起業され、切削機械の刃物を製造されています。曽根田様のお話で非常に興味深かった部分を抜粋致します。 "独立・起業するにあたり、前職で使っていたNotes/Dominoを自社でも使うことにした。現在は大手メーカーからの発注依頼や過去に作った品番の再発注など数多く受けており、当時のCAD/CAMのデータや販売管理データなどをDominoに入れて運用している。 オンプレミス環境のリスクやセキュリティ、IT技術のトレンドに合わせてクラウド化を検討した場合、Dominoからは離れたほうがいいのではないか?と思い、他社SaaS製品も検討しトライアルで利用登録をした。 しばらく触れずにいたところ、アカウント情報に登録していた支払い口座から利用料の引き落としがされていなかったためアカウントが凍結、さらに保存していたデータも突然消去されてしまっていた。支払いが滞っただけで中身まで削除されてしまうようなシステムには会社の大事な資産であるデータを載せられないので、「Dominoを『やめることを止める』判断」をした。" Dominoから他製品への移行を検討され断念されるお客様は多く、その理由は「Dominoの業務アプリケーションを、サービス内容を落とさずに別プラットフォームに移行することがはなはだ困難である」ということをよくお聞きしますが、この点にも意外な理由が潜んでいました。 最後に 初の2年連続開催となった今年のDominoHubは、コミュニティの力を象徴するかのような盛り上がりを見せました。14.5のリリース、生成AIの実装、ライセンス強化など、今後のDominoの発展を確信させる要素が数多く披露されたほか、実際のユーザー事例も非常に示唆に富むものでした。加えてロードマップの提示による未来への安心感も得られました。 DominoHubは単なる情報共有の場に留まらず、技術、コミュニティ、そしてビジネスの未来を交差させる特別な場となっています。これからもこのような取り組みが継続していき、多くのDominoユーザー、デベロッパー、そして販売パートナーが更なる価値を引き出していけることを楽しみにしています。これからもDominoと私たちの未来を築いていきましょう。 関連情報 「Domino Hub」大阪開催 Domino Hubは、2025年9月18日に大阪でのオンサイト開催が決定致しました。詳細およびお申し込みについては、こちらのリンクからご確認ください。 お問い合わせ エヌアイシー・パートナーズ株式会社E-mail:voice_partners@niandc.co.jp   .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .bigger { font-size: larger; } figcaption { color: #7c7f78; font-size: smaller; }

back to top