10
0

はじめに

本記事ではUiPath製品と下記の生成AIサービスを連携する方法について説明します。

  • OpenAI
  • Azure OpenAI Service
  • Anthropic Claude
  • Amazon Bedrock
  • Amazon SageMaker
  • Google Vertex AI
  • IBM watsonx.ai

それぞれの連携において現時点(2024年7月)で利用可能・利用不可のモデルについてもまとめておりますが、今後のリリースによって変更となる可能性が高いと思われます。最新情報は UiPathドキュメントポータル をご参照ください。

連携パターンの検討

現在利用中のUiPath製品や生成AIサービスによって連携方法が異なります。大まかに下記の3つのパターンあります。

  1. UiPath Automation Cloudにて Integration Service を利用する
  2. UiPath Automation Cloudにて UiPath GenAI アクティビティ を利用する
  3. UiPath Studio単独 でREST APIを直接コールする

01a.png

連携パターンを決定する上で考慮すべきは次の2点です。

  • Automation Cloudが利用可能か?
  • 自前の生成AIサービスが利用可能か?(APIキーなどによるアクセス・モデルのデプロイなど)

02.png

それぞれの連携パターンにおけるメリット・デメリットは次の通りです。最終的にはこれらを考慮して連携パターンを決定します。

連携パターン メリット デメリット
1. Integration Service - ユーザーが自前で準備した環境の生成AIモデルを利用できる
- APIキーなどの生成AIサービスのアカウント情報はIntegration Service側で管理されるためワークフローに保持しなくて良い
- 複数ベンダーのモデルを利用するにはそれぞれ準備が必要
- 利用可能なモデルが限定的
- マルチモーダルの対応が限定的
2. UiPath GenAIアクティビティ - Automation Cloud接続とAIユニット ライセンスがあれば、ユーザーが自ら生成AIサービスを準備しなくても利用可能 (UiPathが管理する UiPath AI Trust Layer 上で動作)
- 複数ベンダーのモデルを使い分けて利用可能
- 利用可能なモデルが限定的
- マルチモーダルは未対応
3. UiPath Studio単独 - REST APIに対応した任意の生成AIサービスと連携可能
- マルチモーダルにも対応可能
- APIコールをHTTP要求アクティビティにて自前で実装する必要あり
- APIキーなどのアカウント情報を保持する方法について考慮が必要

本記事において、マルチモーダル とは入力値として画像とテキストをモデルに渡し、テキストを出力することを指しております。

実装手順

次にそれぞれの連携パターンでの実装手順について説明します。

1. Integration Service

Integration Serviceにて生成AIサービスと連携する手順について説明します。

04.png

  • コネクタの設定には生成AIサービス側でAPIキー発行などの手順が必要となりますので事前に準備しておきます。たとえばAmazon Bedrockと連携するにはAWS IAMにてアクセスキー・シークレットキーを発行する必要です。
  • 詳細はそれぞれの生成AIサービスのWebサイトなどをご参照ください。

05.png

各コネクタの利用可能・利用不可モデルの状況

現時点では各コネクタ(生成AIサービス)で利用可能・利用不可のモデルは次の表の通りです。最新の対応状況は Integration Serviceのリリースノート などをご参照ください。

コネクタ 利用可能 利用不可
OpenAI GPT-3.5, GPT-4, GPT-4V, GPT-4o
Microsoft Azure OpenAI - GPT-3.5, GPT-4, GPT-4o
- 各種Embeddingモデル (text-embedding-ada-002など)
GPT-4V
Anthropic Claude Claude 2.1 Claude 3, Claude 3.5
Amazon Bedrock Claude 2.1, Jurassic-2, Titan Text, Llama 2 Claude 3, Claude 3.5, Llama 3など左記以外
Amazon SageMaker Falcon, Llama 2, カスタムモデルなど
Google Vertex Gemini 1.5 Pro, PaLM 2(bison, unicorn) 左記以外
IBM watsonx.ai Granite, Llama 2 左記以外

各アクティビティの利用

現時点で利用可能なアクティビティは次の表の通りです。最新の対応状況は Integration Serviceのリリースノート などをご参照ください。

コネクタ アクティビティ 注意点
OpenAI チャット補完を生成 マルチモーダル(GPT-4V)も利用可能
OpenAI テキスト補完を生成 GPT-3.5で利用可能。GPT-4では利用不可のため チャット補完を生成 を使用する
Microsoft Azure OpenAI チャット補完を生成 マルチモーダル(GPT-4V)は利用不可
Microsoft Azure OpenAI テキスト補完を生成 GPT-3.5で利用可能。GPT-4では利用不可のため チャット補完を生成 を使用する
Microsoft Azure OpenAI 埋め込みを作成 RAG(検索拡張生成)アーキテクチャにて文章をベクトル化する際に使用 (実装例は こちらの記事 を参照)
Anthropic Claude テキスト補完を生成 マルチモーダルは利用不可
Amazon Bedrock Anthropic を使用してテキスト補完を取得 マルチモーダルは利用不可
Amazon Bedrock AI21 Labs を使用してテキスト補完を取得
Amazon Bedrock Amazon Titan を使用してテキスト補完を取得
Amazon Bedrock Llama2 を使用してテキスト補完を取得
Amazon SageMaker 推論を取得 ContentTypeapplication/x-text, application/x-image, text/csv, audio/wav に対応
Google Vertex Gemini を使用してテキスト補完を生成 マルチモーダル(Gemini Pro Vision)も利用可能
Google Vertex チャット補完を生成
Google Vertex テキスト補完を生成
watsonx.ai テキスト補完を生成
  • 上記の通り現時点ではまだ最新モデルやマルチモーダルには未対応のアクティビティがあります。今後の機能拡張に期待したいと思います。

Azure OpenAI Serviceとの連携手順

Azure OpenAI Serviceとの連携手順の詳細については こちらの記事 を参考にしてください。ここでは要点のみ記載します。

  1. Azureポータル にてAzure OpenAI Serviceのリソースを作成し、リソース名とAPIキーをメモします。
    06.png

    • 最新の gpt-4o モデルは主にUSリージョンで利用可能です。リージョンごとの利用可能なGPTモデルは Azureのサイト をご参照ください。
  2. Azure OpenAI Studio にてモデルをデプロイします。
    07.png

  3. Integration Serviceにて Microsoft Azure OpenAI コネクタを作成します。
    08.png

  4. StudioまたはStudio WebにてMicrosoft Azure OpenAIの チャット補完を生成 アクティビティを使用し、Azure OpenAI Serviceのモデルが利用できることを確認します。
    09.png

2. UiPath GenAI アクティビティ

別の連携パターンとして、UiPath GenAI アクティビティにて生成AIサービスを利用する手順について説明します。

UiPath GenAI アクティビティを利用するにはAIユニットが必要となります。プレビュー段階では無料でご利用いただけていましたが、2024年7月に一般提供(GA)されてからはアクティビティ実行ごとにAIユニットが消費されます。

  • Automation Cloud に管理者アカウントにてサインインし、Integration Serviceメニューをクリックします。
    03.png

  • ワークフローを作成するフォルダーを選択し、UiPath GenAI Activities コネクタを選択して接続します。UiPath GenAI アクティビティ (プレビュー) は別のアクティビティとなり、今後の機能拡張 (Context Groundingなど) で使用されます。

    10a.png

  • 利用可能なアクティビティは次の表の通りです。各アクティビティ共通で利用可能なモデルは gpt-35-turbo-0125 および gpt-4o-2024-05-13 となります。

アクティビティ 概要 注意点
コンテンツ生成 チャット補完モデルを使用して、指定された要求に対するチャット応答を生成 - 利用可能なモデルは gpt-35-turbo-0125, gpt-4o-2024-05-13 に加えて gemini-1.0-pro, gemini-1.0-pro-001
-マルチモーダルは利用不可
テキストを要約 言語モデルによるテキスト要約
PII をフィルター処理 入力テキストに含まれる個人を識別できる情報 (PII) または保護された医療情報 (PHI) を識別してマスキング 詳細は こちらの記事 をご参照ください
翻訳 入力テキストとターゲット言語を指定して翻訳されたテキストを出力
言語を検出 指定したテキストの言語を検出
書き換え 指定した指示に沿ってテキストを書き換え
メールを生成 特定のスタイルに合ったメールの下書きを作成
  • たとえば コンテンツ生成 ではUiPathが管理しているモデルを選択し、入力されたプロンプトに対して応答を返します。ユーザーがモデルをデプロイする必要はなく、すぐに利用が可能です。
    11a.png

  • それぞれの利用方法やパラメーターの詳細などは各アクティビティにリンクされたWebガイドをご参照ください。

3. UiPath Studio単独

UiPath Studio単独で生成AIサービスを利用するには HTTP要求アクティビティ によってそれぞれのサービスのREST APIを直接コールします。このため、まずは利用するサービスのAPIリファレンスを参照します。下記に代表的なサービスのリファレンスを記載します。

Amazon BedrockやSageMakerのAPIをコールするためには認証情報として AWS API リクエストの署名 を生成する必要があります。アルゴリズムが煩雑なため自前で実装するよりも AWS SDK などを利用した方が良いでしょう。

ワークフロー実装手順

大まかな実装の流れは次の通りです。

  1. 生成AIサービス側で認証情報となるAPIキーなどを発行する。
  2. APIリファレンスを参照し、チャット補完など処理内容に応じてエンドポイント・ヘッダー・ボディの仕様を確認する。
  3. 質問内容などをパラメーターで受け取り、ボディとなるJSONを組み立てる。あらかじめテンプレートをテキストファイルとして保存して文字列置換すると実装しやすい。
  4. HTTP要求アクティビティを実行して生成APIサービスのREST APIをコールし、応答を変数に格納する。
  5. ステータスコードを確認し、正常な応答(200 OK)か確認する。
  6. 応答をJSONとして逆シリアル化(デシリアライズ)し、必要なパートのみ取り出す。

ワークフロー実装例

では実際にAzure OpenAI Serviceでの実装例で説明してみます。生成AIサービスの呼び出しではUI操作などは不要なためクロスプラットフォームでの実装も可能です。

  1. Azure OpenAI Serviceのリソースを作成し、リソース名とAPIキーをコピーしてメモします。(Azure OpenAI Service連携手順の1と同じ)

  2. Azure OpenAI Studioを開き、モデルをデプロイし、デプロイ名をメモします。(Azure OpenAI Service連携手順の2と同じ)

  3. Azure OpenAI ServiceのAPIリファレンスのうち、チャット入力候補 を参照します。

    • エンドポイントは次のような形式になっています:
    POST https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
    
    • {your-resource-name}→リソース名、{deployment-id}→デプロイ名、{api-version}2024-05-01-previewに置き換え、ワークフロー内で代入アクティビティを使用して endpoint 変数としてセットします。

    12a.png

    • ヘッダーは次のような形式です。
      • Content-Type: application/json
      • api-key: {YOUR_API_KEY}
    • ボディはさまざまなパラメーターを指定することができます。詳細はAPIリファレンスをご参照ください。今回は次のようなJSON形式のテンプレートを使用します。あらかじめテキストファイル request.json として保存しておきます。
    request.json
    {
        "messages": [
            {
                "role": "system",
                "content": [
                    {
                        "type": "text",
                        "text": "You are an AI assistant that helps people find information."
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": "{{prompt}}"
                    }
                ]
            }
        ],
        "temperature": 0.3,
        "top_p": 0.8,
        "max_tokens": 4000
    }
    

    13a.png

  4. ワークフロー内ではJSON形式のテンプレートを読み込み、 {{prompt}} 部分を入力引数として受け取った質問内容 in_question で置換し、req_body 変数にセットします。
    14.png

  5. HTTP要求アクティビティ を実装します。

    • 要求メソッド: POST を指定
    • エンドポイント: 手順3で組み立てた endpoint 変数を指定
    • ヘッダー: Content-Typeapi-key を指定
    • ボディ: 手順4で組み立てた req_body 変数を指定
    • タイムアウト: 60000 (1分間) に変更
    • 本文形式: application/json に変更
    • 応答コンテンツ: res_content 変数にセット
    • 応答ステータスコード: res_status 変数にセット

    15.png

    ここではAPIキーを直接ヘッダーに保存しましたが、他のユーザーと共有しないようにするためにはOSの環境変数に格納するなど保存場所について考慮が必要です。

  6. 後続の処理は次の通りです。

    • ステータスコード res_status をチェックし、200であれば処理を継続し、200以外であればエラーを返します。
    • 応答のコンテンツ res_content を逆シリアル化してJSONオブジェクト json_content にセットします。
    • json_content("choices")(0)("message")("content").ToString によってJSONオブジェクトから応答メッセージ部分を取り出してString型に変換します。
    • 出力パラメーター out_answer にセットします。
      16.png
  7. デバッグ実行して正常に実行されることを確認します。

おわりに

本記事ではUiPath製品から生成AIサービスを呼び出す方法について連携パターンごとに実装手順を説明しました。ぜひ様々な業務フローの中で生成AIサービスを組み込んで自動化領域の拡大にチャレンジしていただければと思います!

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