IBM- watsonx -ai-cli による AI サービスのコーディングと展開

ibm-watsonx-ai-cli Python パッケージを使用して、ローカル環境からAIサービスをダウンロード、編集、テスト、デプロイします。

ibm-watsonx-ai-cli を使用することで、ニーズに応じて、以下のことができる:

  • ローカル環境にダウンロードしたテンプレートに引数を渡して、AIサービスをデプロイせずにローカルでテストする。
  • watsonx.ai、AIサービスをデプロイし、デプロイしたサービスに引数を渡してローカルでテストする。
  • AIサービスに基づくアプリをダウンロード、デプロイ、テストする。

前提条件:

  • Python 3.11
  • パッケージングおよび依存関係管理ツール( Poetry )がローカル環境にインストールされている必要がある。 Poetry をインストールするには、 詩のインストールページの指示に従ってください。

ローカル環境でAIサービステンプレートを使い始めるには、まず ibm-watsonx-ai-cli をインストールする必要があります。 ibm-watsonx-ai-cli をインストールするには、ローカルマシンで次のコマンドを入力します: pip install -U ibm-watsonx-ai-cli.

重要:
  • テンプレートによっては、正しく準備された設定ファイル(config.toml)が必要です。ダウンロードしたテンプレートにプレースホルダ付きの config.toml が含まれている場合は、その説明をよく読み、必要なフィールドを埋めてください。
  • セキュリティ上の理由から、APIキーやその他の秘密をスクリプトや config.toml ファイルに直接ハードコードしないことをお勧めします。 その代わりに、環境変数として設定し、コードからその変数にアクセスする。 例: WATSONX_APIKEY = os.environ.get("WATSONX_APIKEY", "")
  • ibm-watsonx-ai-cli のバージョン 0.2.0 以降、 IBM watsonx.ai で認証に必要なAPIキーやその他のシークレットを渡すには、 .env ファイルを使用することを推奨する。 .env ファイルは、cliコマンドを呼び出すパスになければならない。
  • パッケージ拡張資産準備されると、テンプレートのソースコード配布を含む dist フォルダがローカルに作成されます。 ibm-watsonx-ai-cli のバージョン 0.3.0 以降、AI サービスのコンテンツが正常にデプロイされると、このフォルダは自動的に削除されます。

AIサービス導入フロー例

ibm-watsonx-ai-cli を使用してAIサービス・テンプレートを展開するには、このフロー例を参照してください:

  1. IDEでテンプレートを作成する:

    watsonx-ai template new
    

    利用可能なテンプレートのリストが画面に表示されます。 作業したいテンプレートに関連付けられている番号を入力する。 次に、作成するフォルダの名前を入力する。

  2. テンプレート・ディレクトリに移動する:

    cd <template directory>
    cp config.toml.example config.toml
    
  3. テンプレートコードをカスタマイズして編集します config.toml プレースホルダー valuesFor を更新するファイルです。必要な変数の一部に簡単にアクセスするには、 開発者アクセス ページを参照してください。

  4. テンプレートコードをテストする:

    watsonx-ai template invoke "<your query>"
    
  5. サービスを作る:

    watsonx-ai service new
    

    サービスがデプロイされると、 ibm-watsonx-ai-cli 、 デプロイメント IDが返される。 この ID を、デプロイされたサービスを呼び出すときのデフォルトのデプロイメント ID にする場合は、 config.toml ファイルに deployment_id として貼り付けます。 これを行わないと、デプロイ サービスを呼び出すたびにデプロイメント ID を指定する必要があります。

  6. サービスのテスト

    watsonx-ai service invoke "<your query>"
    
注:

グラフィカル・ユーザー・インターフェースを使用してローカルでサービスをテストしたい場合は、React UI Appをインストールしてください。 詳しくは、 watsonx.ai AIサービスUIアプリをご覧ください

AIサービステンプレートに基づくアプリ作成のフロー例

ibm-watsonx-ai-cli、AIサービス・テンプレートに基づくアプリを作成するには、このフロー例を参照してください:

  1. IDEでアプリを作成する:

    watsonx-ai app new
    

    利用可能なアプリのリストが画面に表示されます。 作業したいアプリに関連付けられている番号を入力します。 次に、作成するフォルダの名前を入力する。

  2. appディレクトリに移動し、環境変数ファイルをコピーする:

    cd <created folder with the app>
    cp template.env .env
    
  3. .env ファイルを編集してプレースホルダーの値を更新する。 必要な変数のいくつかに簡単にアクセスするには、 開発者アクセスページをご覧ください。 WATSONX_BASE_DEPLOYMENT_URL の場合、デプロイされたサービスのエンドポイントに URL を使用する。

  4. アプリケーションを開始します。

    watsonx-ai app run
    

    あるいは、アプリの実行中にアプリのソースコードに変更を加えたい場合は、アプリを開発モードで起動する:

    watsonx-ai app run --dev
    

    アプリが開発モードで実行されている場合、変更を保存するたびにアプリはリロードされます。

eval コマンドの実行フロー例

eval コマンドを使用して、エージェントが特定のデータセットでどのように動作するかを確認する。 1つの eval コマンドに複数のベンチマークファイルを含めることができます。 結果はファイルごとに別々に計算される。

eval コマンドは、エージェントのパフォーマンスを評価するために同時に使用できるいくつかのメトリック提供します。 利用可能なメトリック詳細については、以下を実行してください:

watsonx-ai template eval --help

answer_similarityanswer_relevance メトリック、LLMを審査員として使うことができる。 モデルのIDを指定するか(モデルはクラウド環境で利用可能でなければなりません)、 llm_as_judge キーワードを使用します(この場合、2つの定義済みモデルのうちの1つが使用されます)。

以下はevalコマンドの使用例である:

watsonx-ai template eval --tests test1.jsonl,test2.jsonl --metrics answer_similarity,answer_relevance --evaluator llm_as_judge

以下は、1つのメトリック結果である:

{
  "name": "answer_similarity",
  "method": "llm_as_judge",
  "provider": "unitxt",
  "value": 0.6333333333333333,
  "errors": null,
  "additional_info": null,
  "group": "answer_quality",
  "thresholds": [
    {
      "type": "lower_limit",
      "value": 0.7
    }
  ],
  "min": 0.0,
  "max": 1.0,
  "mean": 0.6333333333333333,
  "total_records": 3,
  "record_level_metrics": [
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 1.0,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "c6ffedaa-b2b1-4ece-bbe6-0d680a470a12",
      "record_timestamp": null
    },
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 0.9,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "f5c15bfc-80a8-4095-a2c3-54ae1c21dc23",
      "record_timestamp": null
    },
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 0.0,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "f7dda69a-fd54-4b80-a966-2198c44109d8",
      "record_timestamp": null
    }
  ]
}

詳細情報

詳しくは