0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub ActionsでAI Agent を IBM watsonx Orchestrate に自動デプロイする

Last updated at Posted at 2025-07-12

はじめに

IBM watsonx OrchestrateのエージェントとツールをGitHub Actionsで自動デプロイする方法を試してみました。手動でのデプロイから解放され、コード変更時に自動的にIBM watsonx Orchestrateへデプロイできるようになります。

※ 本記事では簡単のため、CICDのうちデプロイ(CD: Continuous Deployment)のみを実装しています。

image.png

前提条件

  • IBM Cloud アカウント
  • IBM watsonx Orchestrate インスタンス
  • GitHub リポジトリ

プロジェクト構成

.
├── .github/workflows/
│   └── deploy.yml              # GitHub Actions ワークフロー
├── agents/
│   └── hello-agent.yaml        # エージェント定義
├── tools/
│   └── return_hello.py         # ツール実装
└── README.md

手順

1. 認証情報の設定

GitHub リポジトリにSecretsを設定します。

認証情報の取得:

  1. IBM Cloud コンソールにログイン
  2. IBM watsonx Orchestrate インスタンスを選択
  3. 「サービス資格情報」からAPI キーを取得
  4. サービスインスタンスURLを確認(https://api.us-south.watson-orchestrate.cloud.ibm.com/instances/your-instance-idの形式)

設定方法:

  1. GitHubリポジトリの「Settings」タブを開く
  2. 左メニューの「Secrets and variables」→「Actions」を選択
  3. 「New repository secret」をクリック
  4. 以下のSecretsを追加
    • WO_API_KEY: IBM watsonx Orchestrate API キー
    • WO_URL: IBM watsonx Orchestrate インスタンス URL

2. ツールの実装

from ibm_watsonx_orchestrate.agent_builder.tools import tool


@tool
def return_hello(name: str) -> str:
    """
    Returns a greeting with the provided name

    :param name: The name to include in the greeting
    :returns: A greeting string in the format "Hello [name]"
    """

    return "Hi " + name

3. エージェントの定義

spec_version: v1
style: default
name: hello_agent
llm: watsonx/meta-llama/llama-3-2-90b-vision-instruct
description: >
  名前を確認してあいさつを返すエージェント
instructions: >
  あいさつされたら、名前を確認してreturn_helloに名前を渡して、結果を返して。
collaborators: []
tools:
  - return_hello

4. GitHub Actions ワークフロー

name: Deploy watsonx Orchestrate Agent

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install ibm-watsonx-orchestrate

      - name: Configure watsonx Orchestrate environment
        env:
          WO_API_KEY: ${{ secrets.WO_API_KEY }}
          WO_URL: ${{ secrets.WO_URL }}
        run: |
          orchestrate env add -n production -u "$WO_URL"
          orchestrate env activate production --api-key "$WO_API_KEY"

      - name: Import tools
        run: |
          orchestrate tools import -k python -f tools/return_hello.py

      - name: Import agents
        run: |
          orchestrate agents import -f agents/hello-agent.yaml

作成したエージェントの動作

デプロイが完了すると、IBM watsonx Orchestrateでエージェントが利用できるようになります。

image.png

シンプルなhello-agentですが、以下のような動作を確認できます:

  • ユーザーからの挨拶に対してツールを使用した応答

GitHub Actionsの実行確認

mainブランチにプッシュまたはプルリクエストを作成すると、GitHub Actionsが自動的に実行されます。

image.png

自動実行される処理:

  1. Python環境のセットアップ
  2. IBM watsonx Orchestrate ADKのインストール
  3. 環境設定と認証
  4. ツールのデプロイ
  5. エージェントのデプロイ

ローカルでの動作確認

デプロイ前にローカルで動作確認することも可能です。

# IBM watsonx Orchestrate ADKをインストール
pip install ibm-watsonx-orchestrate

# 環境設定
orchestrate env add -n test -u YOUR_URL
orchestrate env activate test --api-key YOUR_API_KEY

# ツールをインポート
orchestrate tools import -k python -f tools/return_hello.py

# エージェントをインポート
orchestrate agents import -f agents/hello-agent.yaml

まとめ

GitHub ActionsとIBM watsonx Orchestrate ADKを組み合わせることで、エージェントとツールの自動デプロイが実現できました。これにより開発効率が大幅に向上し、継続的な改善が可能になります。

コード変更から本番環境への反映までが自動化されるため、開発者はエージェントとツールの作成に集中できるようになります。

参考文献

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?