1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM watsonx.aiで話題のモデル(GPT-5.1とか)を使ってみよう ~Model Gateway~

1
Last updated at Posted at 2025-11-22

■ はじめに

ChatGPTの登場以降、OpenAIのGPT、GoogleのGemini、またIBMのGraniteなど、さまざまなLLMが次々と出てきています。しかも、これらのモデルは週単位で新モデルが追加されたり性能が改善されたりしており、「特定のベンダーに固定せず、用途に応じてLLMを柔軟に切り替えられること」が、アプリケーションやシステム設計の重要な要件になりつつあります。

こうしたニーズに対して、市場には「モデルをルーティングするレイヤー」を提供するサービスもいくつか登場しています。たとえば、自動で最適なモデルを選んでくれるOpenRouterや、ログ・監査・レート制限などガバナンス/管理機能が充実したLiteLLMなどが代表例として挙げられます。

一方で、この様な複数プロバイダー対応のLLMルーティングを、「セキュアな環境の中で完結させたい」というニーズも多いかと思います。IBMの生成AIプラットフォームであるwatsonx.aiでは、まさにこのエンタープライズ向けルーティングレイヤーとして「Model Gateway」を2025年6月にパブリックプレビューとして公開しました。

・公式の紹介記事

本記事では、この Model Gateway 機能を実際に IBM Cloud 上で有効化・登録するところから、簡単な動作確認まで を一通り触ってみます。そのうえで、「どのような使い方が考えられるのか」活用方法を探っていきたいと思います。

■ watsonx.ai Model Gateway について

この Model Gateway は、IBMのAI開発プラットフォームwatsonx.aiの中のひとつの機能で、ざっくり言うと「いろいろな会社のLLM を、1つの共通インターフェースでまとめて使えるようにする仕組み」です。

アプリ側から見ると、OpenAIやGoogle、IBMなど複数プロバイダーのモデルを同じAPIで扱えるようになり、モデルの切り替えや乗り換えがしやすくなります。また、アクセス制御やAPIキー管理などは watsonx.ai/IBM Cloud 側でまとめて行えるため、企業利用で求められるセキュリティやガバナンスにも配慮された「モデルの入り口」として使えるのが特徴です。
※より詳しい概要や対応プロバイダー・機能一覧などは、公式ドキュメントを参照ください。

2025年11月現在ではプレビュー版で、トロントリージョン(ca-tor)のみで試せます。

■ 事前準備

watsonx.ai のトライアル準備/SecretManagerインスタンスの作成

本記事では、以下の watsonx.ai トライアル登録ページから環境を用意していきます。
※リージョンは トロント(ca-tor) を選択してください。

IBMCloudにアクセスできたら、左上メニューよりリソースリストを選択、以下画像👇の様にWatson Machine Learningなどのサービスのロケーションがトロント(ca-tor)になっているのを確認しましょう。

image.png

次に上画像👆右上の「リソースの作成」から、カタログ画面を出してSecrets Managerと検索します。

Secrets Managerとは?
APIKeyなどの機密情報を管理するため、IBMCloudのサービスの1つです。
https://www.ibm.com/jp-ja/products/secrets-manager

出てきた以下画像👇の様にロケーションをトロント、エンドポイントを「Public and Private」インスタンスを作成します。

image.png

ルーティング対象 LLM プロバイダーの API キー準備

Model Gateway から呼び出したい LLM プロバイダーごとに API キー を事前に用意しておきます。対応しているプロバイダーは、IBM Cloud の watsonx.ai API リファレンス)(Chat Completions / Model Gateway セクション)から確認できます。

当記事では、話題のGPT5.1を呼び出したいと思いますので以下から、OpenAIのアカウント作成、APIキーを作成していきます。

OpenAIのアカウント作成と、APIキー作成は以下が分かりやすいかと思います。

■ IAM の権限と Secrets Manager の設定

アカウントの準備が済んだら、以下の公式ページの手順に沿って、IBMCloudで権限設定とSecrets Managerの設定を行っていきましょう。

具体的には以下の三つをやっていきます。
1. 自分(またはサービス ID)に必要な IAM ロールを付ける
2. Watson Machine Learning から Secrets Manager へのアクセスを許可する
3. リソース・ハブで他社モデルを追加する

1. 自分に必要なIAMロールを付ける

IBM Cloudから、[アクセス(IAM)]➡[ユーザー]➡[アクセス権限の割り当て]とクリックしていきます。👇

image.png

Watson Machine LearningSecrets ManagerにIAMロールを割り当てていきます。
以下画像👇では簡便の為デフォルトで設定していますが、リソース・役割の割り当ては適切に行って頂ければと思います。※Secrets Managerのシークレット・リーダー以上のロールは必須です。

image.png

2. Watson Machine Learning から Secrets Manager へのアクセスを許可する

IBM Cloudから、[アクセス(IAM)]➡[許可]クリックしていき、ソース:Watson Machine Learning、ターゲット:Secrets Managerという形で設定します。

image.png

3. リソース・ハブで他社モデルを追加する

IBM Cloudのリソース・リストから、今度はWatsonMachineLearningにアクセスしましょう。watsonxを起動してホーム画面に入ったら、メニューからリソース・ハブにアクセス。
トロントリージョンであれば、以下画像👇の様にManage modelsという青いボタンがあるので、そこからAdd providerを押していきましょう。
※今回はOpenAIを選択します。

image.png

接続に任意の名前を付け、つなげたSecrets Managerインスタンスを選択、事前準備で取得したOpenAIのAPIKeyを入力すると、Secrets Managerシークレットが作成されるので、Addボタンを押しましょう。

image.png

作成したシークレットはIBM Cloudのリソース・リストよりSecrets Managerにアクセスすれば編集・確認ができます。※以下シークレットについて
https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-what-is-secret&interface=ui

そのまま進んでいくと、以下画像👇の様に選択可能なモデル一覧が表示されます。今回はgpt-5.1gpt-5.1-codexを選んでみたいと思います。

image.png

任意のModelを選んで、以下画像👇の左の様にSubmitを押すと、うまくいけば画像右の様にリソースハブ上に選んだモデル名が出てきます。

image.png

これで設定完了!あとはIBM watsonx.aiのAPI経由でこれらのモデルが利用できます。

■ watsonx.aiのAPIからGPT-5.1を呼び出してみる

さて、早速呼び出してみましょう。とその前に、watsonx.aiのAPI呼び出し準備を整えましょう。

まず、プロジェクトの作成、watsonx.ai Runtimeとの関連付けを行いましょう。以下の記事が参考になります。

その後、watsonx.aiのホーム画面にあるDeveloperAccessから プロジェクトID エンドポイントのURL APIキー を取得しましょう。以下画像を参考にしてください。
※エンドポイントのURLはhttps://ca-tor.ml.cloud.ibm.comです。

ローカル環境の準備

さて今回はPythonでコードを記述して、watsonx.aiのAPIからGPT-5.1を呼び出してみたいと思います。想定環境は(筆者の環境)以下の想定で進めます。

OS     :Mac
IDE    :VSCode
python :3.11

ライブラリ
 - ibm-watsonx-ai>=1.4.7

ModelGateway機能はバージョン1.4.~で追加された機能です。1.3.~だとモジュールが存在しません。

Pythonのバージョン管理、パッケージ管理はuvを使います。
UVの概要やインストール方法などは公式ページをご参照ください。

uvのインストールが終わったら、ターミナルで以下を実行していきましょう。

# プロジェクトフォルダ作成&移動 watsonx-demo の部分はお好きな名前でOKです。
mkdir watsonx-demo 
cd watsonx-demo

# Pythonバージョンの確認・インストール&プロジェクト初期化
uv python list                # 使えるバージョンを確認
# uv python install 3.11      # Ver3.11がなければ実行。
uv init watsonx-demo -p 3.11  # 初期化。-pでpythonのバージョン指定  
uv python pin 3.11            # pythonのバージョンを固定

# 今回使うライブラリを追加
uv add "ibm-watsonx-ai"

# 依存関係のロックとインストール
uv lock                       # 依存を解決。uv.lockファイルが作られる。
uv sync                       # 環境の作成or更新。仮想環境がなければ自動で.venvが作成される。

touch .env                    # API Keyなどを入れる.envファイルを作る
touch app.py                  # これから記述していくPythonプログラムファイルの作成

# ※オプション
source .venv/bin/activate     # 仮想環境を手動でアクティブにする場合
deactivate                    # …作業を終えたら、仮想環境から抜けましょう。

上で作った.envファイルに先程取得した プロジェクトID エンドポイントのURL APIキー を入力していきましょう。変数の名前は後ほど使うので以下で記載する様にしましょう。

.env
WATSONX_APIKEY=**************
WATSONX_URL=https://*******.ibm.com
WATSONX_PROJECT_ID=************

続いて、app.pyファイルに、簡単にGPT-5.1を試してみるコードを書いてみましょう。
当記事ではModel一覧取得と、簡単な会話をしてみたいと思います。
なお、ModelGatewayのリファレンスは以下にあります。

app.py
import os
import json
from dotenv import load_dotenv

from ibm_watsonx_ai import Credentials, APIClient
from ibm_watsonx_ai.gateway import Gateway

load_dotenv()

API_KEY = os.getenv("WATSONX_APIKEY")
URL = os.getenv("WATSONX_URL")
PROJECT_ID = os.getenv("WATSONX_PROJECT_ID")

def main():
    credentials = Credentials(api_key=API_KEY, url=URL)
    client = APIClient(credentials=credentials)
    gateway = Gateway(api_client=client)

    # Model Gateway に登録されているモデルの名前などを一覧で取得
    print("=== Model Gateway models ===")
    try:
        models_df = gateway.models.list()
        print(models_df[["MODEL", "TYPE"]].to_string())
    except Exception as e:
        print("モデル一覧取得でエラー:", e)

    # GPT-5.1 にチャットしてみよう
    messages = [
        {
            "role": "system",
            "content": "You are a helpful assistant that answers in Japanese.",
        },
        {
            "role": "user",
            "content": "テストです。短く自己紹介してください。",
        },
    ]

    response = gateway.chat.completions.create(
        model="gpt-5.1",  # model_id で OK
        messages=messages,
    )

    # AIの回答だけ取り出して表示
    print("\n=== assistant message ===")
    print(response["choices"][0]["message"]["content"])


if __name__ == "__main__":
    main()

実際にターミナルからapp.pyを実行してみましょう。するとAIからの回答は…

=== Model Gateway models ===
           MODEL                  TYPE
0        gpt-5.1  openai:openai-cator
1  gpt-5.1-codex  openai:openai-cator

=== assistant message ===
私は OpenAI の最新モデル GPT-5.1 を使った日本語対応の対話型 AI アシスタントです。
質問への回答、コード作成・修正、文章作成や要約などをサポートできます。

ちゃんと返ってきました!モデルも登録したものがそのまま反映されていますね!

今回はModel Gatewayの設定方法と簡単な実験をしたかっただけなのでこれまでにしますが、使い方次第でいろいろなことができそうということがわかりました!

◾️ まとめ

さて、これまでModel Gatewayの設定方法と、実際に触ってみることで、どのようなことが出来るのかを少しだけみてきました。

登録は少し面倒ですが、今回やったOpenAIのGPTだけでなく、AnthropicのClaudeや、GoogleのGeminiなど自分の登録次第で幅広くwatsonx.ai上で使えるので、状況に応じた使い分けが期待できそうですね。

特にこれからのAIエージェントの時代では、以下に様々なモデルを適材適所で使えるかがとても重要になってくるかと思います。またエンタープライズ利用だと、GPT-5.1のような高性能モデルだけでなくレスポンスが早く価格の安いIBM Graniteのような軽量モデルと組み合わせて利用することは運用を続ける上で必要になってきます。

こうした需要は高まっていくと思いますので、課題解決の一手として期待しつつ、今後のリージョン拡大など正式リリースに向けたアップデートを待ちたいと思います。

◾️ 参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?