2023年11月

17

【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)

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

Part1はご覧いただけましたでしょうか。
watsonx.ai にご興味をもっていただければ幸いです。

Part2(本記事)は応用編ということで、watsonx.ai を利用した Retrieval-Augmented Generation(以下 RAG)検証をやってみた感想をご紹介します。

RAGとは?

生成AIの分野で「RAG」が話題となっていることはご存じでしょうか。
RAG とは、言語モデルが学習していない社内情報や最新情報などのデータ(以下 外部データ)から情報を補完し、言語モデルが生成する回答の品質を向上するフレームワークです。

例えば言語モデルのみを利用した QA の場合、図1の様にユーザが質問をすると、生成AI は質問に対して的確に答えることもあれば、学習データに含まれたいい加減な情報を吐き出すこともあります。
言語モデルのチューニングにより回答精度を調整することも可能ですが、都度アップデートされる情報をモデルに学習させることは労力が必要です。

言語モデルのみを利用した場合の情報検索
図1. 言語モデルのみを利用した場合の情報検索

そこで考えられたのが、RAG というフレームワークです。

図2のように、外部データをデータベースに保存しその検索結果に基づいて言語モデルに回答を生成させることで、より正確な情報を得ることが可能です。

RAGを利用した情報検索
図2. RAGを利用した情報検索

RAGのメリット

RAG は、検索と生成AI を統合することでより正確な関連性の高い回答を提供します。
以下は、RAG を利用することで得られるメリットです。

  • より正確な情報を得られる:
    初めに外部の知識ベースで検索を実行するため、生成AI だけを使った回答よりもより専門的で正確な回答を提供します。
  • 質問の文脈を踏まえた回答を得られる:
    検索と生成AI を組み合わせることで多くの情報源から情報を収集し、人間のような新しい回答を生成することができます。
  • モデル学習に必要なデータ準備と作業労力を削減:
    言語モデルの訓練には大量のデータが必要ですが、RAG は外部データを利用するためモデルへ学習データを取り込むた必要がなく、チューニングにかかる労力も削減できます。

RAGの活用シーン

RAG は様々な業種での活用が考えられます。以下に具体例を挙げます。

  • 顧客サポート:
    コールセンターや保守業務において、顧客の問い合わせに対して専門的かつ正確な回答を提供します。
    RAG を利用することにより迅速な回答提供や効率的な運用が可能となり、顧客満足度を向上します。
  • バックオフィス業務サポート:
    社内情報の検索において、自己調査が容易になり対応時間を短縮することが可能です。
  • オペレーション業務サポート:
    例えば現場作業員の機器操作手順など、RAG を利用することにより効率的に解決することが可能です。

watsonx.aiを使ってRAGを検証してみた

watsonx.ai の言語モデルを利用し、自分の端末から PDF の内容を QA をする RAG を作ります。
利用するコンポーネントは以下の4つです。

  • watsonx.ai:
    回答を生成する生成AI。言語モデルは llama-2-70b-chat を利用します。
  • ベクターストア:
    今回はオープンソースのベクターストアである ChromaDB を利用します。
    ベクターストアとはデータを文字列ではなくベクトル形式で保管するデータベースです。PDF の内容を質問するため、LangChain により PDFデータをテキストとチャンクに分け、変換し、ベクターストアに取り込みます。
  • LangChain:
    言語モデルを活用したサービス開発する際に利用するオープンソースライブラリです。
    PDF をベクターストアに保存する際にチャンクデータとして分割したり、ベクターストア内を検索し結果を watsonx.ai へ渡します。
  • PythonSDKの実行環境 –Jupyter Notebook–:
    LangChain は Python と JavaScript の2つの言語プログラミング言語に対応していますが、今回は Python の LangChain を利用します。
    PythonSDK の実行環境として作業端末に Anaconda をインストールし、Jupyter Notebook からスクリプトを実行します。

QA処理の流れは以下の通りです。

  1. LangCain経由で質問
  2. LangChainからベクターストアへ情報検索
  3. 検索結果をLangChainへ渡す
  4. 検索結果をwatsonx.aiの言語モデルへ渡す
  5. watsonx.aiが回答を生成し、回答

それではさっそく RAG を作って検証してみましょう。

watsonx.aiプロビジョニング、プロジェクト作成

事前に watsonx.aiプロビジョニング、プロジェクト作成が必要です。
※作成方法は part1 をご参照ください

APIキー、プロジェクトIDの取得

watsonx.ai の言語モデルに接続するためには、APIキーとプロジェクトID の取得が必要です。

  • APIキーの取得は IBM Cloud画面「管理」⇒「アクセス(IAM)」をクリックし、「APIキー」をクリックします。

watsonx.aiプロビジョニング、プロジェクト作成-1

  • 「作成+」をクリックし、任意の名前と説明を入力しキーを作成します。

watsonx.aiプロビジョニング、プロジェクト作成-2

  • APIキーが作成されたので、コピーして手元にメモしておきます。

watsonx.aiプロビジョニング、プロジェクト作成-3

次に、watsonx.ai のプロジェクトIDを取得します。

  • watsonx.ai のプロジェクトをクリックします。

watsonx.aiプロビジョニング、プロジェクト作成-4

  • 「管理」タブから「一般」をクリックするとプロジェクトID が表示されるので、コピーして手元にメモします。

watsonx.aiプロビジョニング、プロジェクト作成-5

PythonSDKの実行環境準備

  • 以下の URL から Anaconda のイメージをダウンロードし、作業端末にインストールし、インストールが完了したら Jupyter Notebook を起動します。
    https://www.anaconda.com/download

PythonSDKの実行環境準備-1

  • 事前に作成したスクリプトをクリックして開きます。

PythonSDKの実行環境準備-2

認証設定、モジュールのインポート

はじめに、必要な Pythonライブラリをインストールします。

  • 「Run」ボタンをクリックすると、セル内のプログラムが実行されます。

認証設定、モジュールのインポート-1

  • セルの左箇所が [*] から [1] になると完了です。
    特にエラーが出力されていないことを確認します。

認証設定、モジュールのインポート-2

認証情報をセットします。

  • 先ほど取得した APIキーとプロジェクトID、エンドポイントの URL を指定します。
    今回はダラスの Watson Machine learning を使用しているので、ダラスのエンドポイントを指定します。
    ※エンドポイントの URL は「IBM Cloud API Docs」から確認できます

認証設定、モジュールのインポート-3

  • LangChain で使う Watson Machine learning のモジュールを複数インポートします。

認証設定、モジュールのインポート-4

一旦 LangChain 無しで watsonx.ai の言語モデルに質問をしてみたいと思います。

  • まず、使用する言語モデルのパラメータを設定します。
    以下に各パラメータの説明を記載します。
パラメータ名 値の範囲例 内容
MAX_NEW_TOKENS 1~1000の整数値 一度に生成されるトークンの最大数を制御する。
TEMPERATURE 0.00~2.00 生成されるテキストの創造性を制御する。値が低いと予測可能なテキスト、値が高いと創造的なテキストを生成する。
TOP_K 1~100の整数値 各ステップで考慮されるトークンの数を制御する。 モデルは、トークンの確率分布から上位K個のトークンのみを考慮し、残りは無視する。
TOP_P 0.01~1.00 累積確率の閾値を設定する。モデルは累積確率がこの閾値を超えるまでのトークンのみを考慮しま

認証設定、モジュールのインポート-5

  • 質問する言語モデルをセットします。

認証設定、モジュールのインポート-6

  • 質問をしてみたところ、正常に回答が返ってきました。

認証設定、モジュールのインポート-7

LangChainの作成

それでは、LangChain を作成していきます。

  • LangChain に必要なモジュールをインポートします。

LangChainの作成-1

  • pdfsフォルダにある PDF を読み込み、ベクターストアへ取り込みます。
    ベクターストアへ取り込むみする際は LangChain で提供される intfloat/multilingual-e5-largeモデルを使用します。

LangChainの作成-2

  • 言語モデルは Llama2 を使用します。
    先程と同様にモデルの設定とパラメータを定義します。
    Llama2 は回答指示を渡すことが推奨されているため以下の様に指示文を追加します。

LangChainの作成-3

RAGを使って質問する

  • PDF の内容を質問したところ、PDF から該当箇所を検索し回答が生成されました。

RAGを使って質問する-1

  • ChatUI を起動して質問します。
    また、PDF のどの箇所を参考にしたか出力するよう指示します。
    (補足:ChatUIはPythonライブラリのGradioを使用)

RAGを使って質問する-2

  • ChatUI で質問してみました。
    実用化したときのイメージが湧きますね。

RAGを使って質問する-3

  • PDF のどの箇所を検索したのか、参考箇所も出力されています。

RAGを使って質問する-4

以上が、watsonx.ai の言語モデルを利用した RAG検証です。

今回は1つの PDF で検証しましたが、回答まで30秒ほどかかりました。
複数の PDF を検索する場合はもう少し時間がかかりそうなので、実用するには調整が必要かもしれません。

さいごに

いかがでしょうか。
言語モデルに更新情報や専門的な情報をチューニングするのは手間がかかりますが、RAG を使えば、情報をベクターストアに格納して簡単に検索できます。

今回は PDF の内容を検索するものでしたが、テキストの内容や URL の情報も検索可能です。
また Google Colab を使えば、Googleドライブ上のフォルダ内の情報も検索できることが確認できています。

今回の検証で費用が発生した製品は watsonx.ai のみで、LangChain やベクターストアはオープンソースを利用しています。
それほどコストをかけずに実装できるため、社内の検索システムとして導入するなど取り掛かり易い点が魅力的だと思います。

本ブログを読んでいる方々の社内共有プラットフォームにも、RAG を用いた検索システムを導入できるかもしれません。ぜひ試してみてください。

“音声から情報を検索して回答を生成する” など、より高機能なシステムを検討している場合は、watsonx Assistant や Watson Discovery と連携することで実現可能です。
ソリューションの詳細は個別にご説明いたしますので、お問い合わせください。

2024年2月頃、日本語で訓練された言語モデル「Granite」の提供が予定されています。
Llama2 などの言語モデルも日本語の回答は可能ですが、日本語の精度は保証されていません。そのため、新たな「Granite」モデルの提供により、日本国内で watsonx.ai の実用化が進むことを期待しています。

お問い合わせ

この記事に関するご質問は下記までご連絡ください。

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

 

その他の記事

2025年09月03日

レノボのファンレス常温水冷サーバーって?

公開日:2025-09-03 こんにちは。ソリューション企画部 柳澤です。 みなさま「水冷サーバー」と一言聞いて、何を思い浮かべますか? オフィスに置いてあるドリンク用ウォーターサーバーを思い浮かべる方もいらっしゃいますでしょうか? 弊社のお客様のみなさまはIT業界の皆様ですので、水冷サーバーというとサーバーを特殊な液体のタンクで冷やす「液浸」を思い浮かべる方も多いかと思います。 しかし、この液浸は、タンク設置場所の確保やサーバーを重ねられないといった課題があり、大規模な投資や、床面積の拡大を避けられませんでした。 そこで、液体をサーバー内部の管に通して冷却する「直接液冷」が近年注目されています。 今日のサーバーはかつてないほどの計算能力を要求されており、人工知能(AI)、機械学習(ML)、高性能コンピューティング(HPC)といったワークロードの台頭は、より強力なサーバーと、それに伴うより高度な冷却ソリューションの必要性を浮き彫りにしています。 この状況を受け、各メーカーは水冷サーバーに注力し始めており、今後のサーバー選択において冷却効率が新しい基準として加わることになりそうです。 本日ご紹介するレノボのファンレスの常温水冷サーバーは、革新的な水冷技術を搭載しており、その冷却効率が注目されています。 目次 レノボのファンレス常温水冷サーバーとは 水冷サーバーの導入を検討するお客様の例 関連情報 お問い合わせ レノボのファンレス常温水冷サーバーとは レノボの水冷は「直接液体冷却」技術を採用しています。これらのソリューションは、GPUやCPUのような発熱量の多いコンポーネントを直接冷却しています。 サーバートレイ、シャーシにはファンがない設計なので、とても静かなサーバーです。またファンがないことで電力消費量を削減することにも役立っています。 採用されている液体は99%の純水で、ほぼサラサラの液体となり、環境にもやさしい設計です。 また、この液体が常温から45度の温水でも排熱効果を発揮するので、液体を氷のように冷たくはしなくても効果を発揮する設計になっています。 主な製品と特徴 レノボの水冷サーバーのシリーズのLenovo Neptune™ は、HPC、ミッションクリティカルサーバーはもちろんのこと、従来のラック型サーバーに加え、エッジコンピューティングなどの筐体でも構成できる柔軟な構成オプションが準備されています。 そのためお客様の特定のニーズに合わせてカスタマイズや拡張ができます。 水冷サーバーの導入を検討するお客様の例 Lenovo Neptune™ は、以下のようなお客様にご利用いただくことで特に大きな価値を発揮します。 高性能コンピューティング(HPC):科学研究、シミュレーション、モデリングなど、膨大な計算能力を必要とするHPC環境では、水冷が不可欠です。 人工知能(AI)と機械学習(ML):AIトレーニングや推論は、GPUに大きな負荷をかけるため、効率的な冷却はパフォーマンスを維持するために重要です。 高密度データセンター :限られたスペースに多くのサーバーを詰め込む必要がある場合、水冷は高密度化を可能にします。 エネルギー効率の重視 :持続可能性と運用コストの削減を重視する企業にとって、水冷は魅力的な選択肢です。 エッジコンピューティング :コンパクトで効率的な冷却ソリューションが必要なエッジ環境でも、水冷の利点は大きいです。 どうでしょうか。レノボの水冷サーバーのイメージが変わりましたでしょうか。 ここまでざっと簡単にレノボの水冷サーバー製品をご紹介させていただきましたが、もっと詳しく知りたい、などのご興味ございましたら、ぜひ弊社へお問い合わせいただければと思います。 関連情報 Lenovo サーバー/ストレージ 製品(NI+C Pサイト) 【参加レポート】Lenovo TechDay @ Interop Tokyo 2025(NI+C Pサイト) 第6世代のLenovo Neptune液体冷却が AI 時代を牽引(Lenovoサイト) 【AI電力消費40%削減事例も】レノボの「直接水冷」Lenovo Neptune™(YouTube) お問い合わせ エヌアイシー・パートナーズ株式会社E-mail:voice_partners@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月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; }

back to top