はじめに
本記事ではUiPath製品と下記の生成AIサービスを連携する方法について説明します。
- OpenAI
- Azure OpenAI Service
- Anthropic Claude
- Amazon Bedrock
- Amazon SageMaker
- Google Vertex AI
- IBM watsonx.ai
それぞれの連携において現時点(2024年7月)で利用可能・利用不可のモデルについてもまとめておりますが、今後のリリースによって変更となる可能性が高いと思われます。最新情報は UiPathドキュメントポータル をご参照ください。
連携パターンの検討
現在利用中のUiPath製品や生成AIサービスによって連携方法が異なります。大まかに下記の3つのパターンあります。
- UiPath Automation Cloudにて Integration Service を利用する
- UiPath Automation Cloudにて UiPath GenAI アクティビティ を利用する
- UiPath Studio単独 でREST APIを直接コールする
連携パターンを決定する上で考慮すべきは次の2点です。
- Automation Cloudが利用可能か?
- 自前の生成AIサービスが利用可能か?(APIキーなどによるアクセス・モデルのデプロイなど)
それぞれの連携パターンにおけるメリット・デメリットは次の通りです。最終的にはこれらを考慮して連携パターンを決定します。
連携パターン | メリット | デメリット |
---|---|---|
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サービスと連携する手順について説明します。
-
Integration Serviceを利用するには Automation Cloud に管理者アカウントにてサインインし、Integration Serviceメニューをクリックします。
-
ワークフローを作成するフォルダーを選択し、連携する生成AIサービスに応じて下記のいずれかのコネクタを選択します。
- コネクタの設定には生成AIサービス側でAPIキー発行などの手順が必要となりますので事前に準備しておきます。たとえばAmazon Bedrockと連携するにはAWS IAMにてアクセスキー・シークレットキーを発行する必要です。
- 詳細はそれぞれの生成AIサービスのWebサイトなどをご参照ください。
各コネクタの利用可能・利用不可モデルの状況
現時点では各コネクタ(生成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 | 推論を取得 |
ContentType は application/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との連携手順の詳細については こちらの記事 を参考にしてください。ここでは要点のみ記載します。
-
Azureポータル にてAzure OpenAI Serviceのリソースを作成し、リソース名とAPIキーをメモします。
- 最新の
gpt-4o
モデルは主にUSリージョンで利用可能です。リージョンごとの利用可能なGPTモデルは Azureのサイト をご参照ください。
- 最新の
-
Azure OpenAI Studio にてモデルをデプロイします。
-
StudioまたはStudio WebにてMicrosoft Azure OpenAIの チャット補完を生成 アクティビティを使用し、Azure OpenAI Serviceのモデルが利用できることを確認します。
2. UiPath GenAI アクティビティ
別の連携パターンとして、UiPath GenAI アクティビティにて生成AIサービスを利用する手順について説明します。
UiPath GenAI アクティビティを利用するにはAIユニットが必要となります。プレビュー段階では無料でご利用いただけていましたが、2024年7月に一般提供(GA)されてからはアクティビティ実行ごとにAIユニットが消費されます。
-
Automation Cloud に管理者アカウントにてサインインし、Integration Serviceメニューをクリックします。
-
ワークフローを作成するフォルダーを選択し、UiPath GenAI Activities コネクタを選択して接続します。UiPath GenAI アクティビティ (プレビュー) は別のアクティビティとなり、今後の機能拡張 (Context Groundingなど) で使用されます。
-
利用可能なアクティビティは次の表の通りです。各アクティビティ共通で利用可能なモデルは
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が管理しているモデルを選択し、入力されたプロンプトに対して応答を返します。ユーザーがモデルをデプロイする必要はなく、すぐに利用が可能です。
-
それぞれの利用方法やパラメーターの詳細などは各アクティビティにリンクされたWebガイドをご参照ください。
3. UiPath Studio単独
UiPath Studio単独で生成AIサービスを利用するには HTTP要求アクティビティ によってそれぞれのサービスのREST APIを直接コールします。このため、まずは利用するサービスのAPIリファレンスを参照します。下記に代表的なサービスのリファレンスを記載します。
Amazon BedrockやSageMakerのAPIをコールするためには認証情報として AWS API リクエストの署名 を生成する必要があります。アルゴリズムが煩雑なため自前で実装するよりも AWS SDK などを利用した方が良いでしょう。
ワークフロー実装手順
大まかな実装の流れは次の通りです。
- 生成AIサービス側で認証情報となるAPIキーなどを発行する。
- APIリファレンスを参照し、チャット補完など処理内容に応じてエンドポイント・ヘッダー・ボディの仕様を確認する。
- 質問内容などをパラメーターで受け取り、ボディとなるJSONを組み立てる。あらかじめテンプレートをテキストファイルとして保存して文字列置換すると実装しやすい。
- HTTP要求アクティビティを実行して生成APIサービスのREST APIをコールし、応答を変数に格納する。
- ステータスコードを確認し、正常な応答(200 OK)か確認する。
- 応答をJSONとして逆シリアル化(デシリアライズ)し、必要なパートのみ取り出す。
ワークフロー実装例
では実際にAzure OpenAI Serviceでの実装例で説明してみます。生成AIサービスの呼び出しではUI操作などは不要なためクロスプラットフォームでの実装も可能です。
-
Azure OpenAI Serviceのリソースを作成し、リソース名とAPIキーをコピーしてメモします。(Azure OpenAI Service連携手順の1と同じ)
-
Azure OpenAI Studioを開き、モデルをデプロイし、デプロイ名をメモします。(Azure OpenAI Service連携手順の2と同じ)
-
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
変数としてセットします。
- ヘッダーは次のような形式です。
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 }
-
ワークフロー内ではJSON形式のテンプレートを読み込み、
{{prompt}}
部分を入力引数として受け取った質問内容in_question
で置換し、req_body
変数にセットします。
-
HTTP要求アクティビティ を実装します。
- 要求メソッド:
POST
を指定 - エンドポイント: 手順3で組み立てた
endpoint
変数を指定 - ヘッダー:
Content-Type
とapi-key
を指定 - ボディ: 手順4で組み立てた
req_body
変数を指定 - タイムアウト:
60000
(1分間) に変更 - 本文形式:
application/json
に変更 - 応答コンテンツ:
res_content
変数にセット - 応答ステータスコード:
res_status
変数にセット
ここではAPIキーを直接ヘッダーに保存しましたが、他のユーザーと共有しないようにするためにはOSの環境変数に格納するなど保存場所について考慮が必要です。
- 要求メソッド:
-
後続の処理は次の通りです。
-
デバッグ実行して正常に実行されることを確認します。
おわりに
本記事ではUiPath製品から生成AIサービスを呼び出す方法について連携パターンごとに実装手順を説明しました。ぜひ様々な業務フローの中で生成AIサービスを組み込んで自動化領域の拡大にチャレンジしていただければと思います!