UiPath AIエージェント活用ガイド ~ Coded Agents開発 ① UiPath SDKの使い方では、Coded Agentを開発する土台となるUiPath SDKの利用、Orchestratorへのデプロイ、実行方法を紹介しました。
本記事では、UiPath Langchain SDKを使用し、LLMを活用したCoded Agentの開発にフォーカスして解説します。
UiPath LangChain概要
UiPath LangChain SDKは、LangChainフレームワークとUiPathプラットフォームを統合するためのPythonライブラリです。LangChainは、大規模言語モデル(LLM)を活用したアプリケーションを構築するためのフレームワークであり、UiPath LangChain SDKを使うことで、このLangChainのエージェントにUiPathの機能をツールとして組み込むことができます。
これにより、LLMが自然言語でユーザーの意図を理解し、その意図に基づいてUiPathのロボットやプロセスを実行することが可能になります。つまり、LLMが「何をすべきか」を判断し、UiPathが「実際にそれを行う」という役割分担を実現するのです。
前提条件
以下の記事での事前準備を参照して、VS Code/Python/uvをインストールします。
また、Anthropic或はOpenAIのAPI Keyも必要ですので、それぞれのページよりAPI Keyを取得してください。
Code Agentの開発 ~ デプロイ ~ 実行の手順
以下のオフィシャルガイドより実行した手順です。また、詳細な解説はUiPath AIエージェント活用ガイド ~ Coded Agents開発 ① UiPath SDKの使い方をご参照ください。
1. Code Agentの開発
TERMINAL(PowerShell)で実行したコマンド一覧は以下の通りです。
まず UiPath Langchain agentを作成するために、環境準備をします。
# 新しいフォルダー
New-Item -ItemType Directory -Path LangchainUiPathSample
# そのフォルダに移動
Set-Location .\LangchainUiPathSample
# 現在のディレクトリに新しいuvプロジェクトを初期化
uv init . --python 3.11
# 新しい仮想環境を作成
# デフォルトで、uvは.venvというディレクトリに仮想環境を作成します
uv venv
# 仮想環境をアクティブ化
.venv\Scripts\activate
# langchain-anthropicパッケージをインストール
uv add langchain-anthropic
# uipath-langchainパッケージをインストール
uv add uipath-langchain
# uipathのインストールを確認
uipath -lv
次に、初めてのUiPath Langchain Agentを作成します。コマンドuipath new my-agent
を実行します。
(LangchainUiPathSample) PS C:\Users\admin_1\Documents\PythonProject\LangchainUiPathSample> uipath new my-agent
⠋ Creating new agent my-agent in current directory ...
✓ Created 'main.py' file.
✓ Created 'langgraph.json' file.
✓ Created 'pyproject.toml' file.
🔧 Please ensure to define either ANTHROPIC_API_KEY or OPENAI_API_KEY in your .env file.
💡 Initialize project: uipath init
💡 Run agent: uipath run agent '{"topic": "UiPath"}'
作成したmain.py
が以下の通りです。
from langchain_anthropic import ChatAnthropic
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
from langgraph.graph import START, StateGraph, END
from pydantic import BaseModel
import os
class GraphState(BaseModel):
topic: str
class GraphOutput(BaseModel):
report: str
async def generate_report(state: GraphState) -> GraphOutput:
if os.getenv("ANTHROPIC_API_KEY"):
llm_model = ChatAnthropic(model="claude-3-5-sonnet-latest")
elif os.getenv("OPENAI_API_KEY"):
llm_model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
else:
raise Exception("Missing API Key. Please define either ANTHROPIC_API_KEY or OPENAI_API_KEY.")
system_prompt = "レポート生成AIです。指定されたトピックに基づき、簡潔なレポートを作成します。"
output = await llm_model.ainvoke([SystemMessage(system_prompt), HumanMessage(state.topic)])
return GraphOutput(report=output.content)
builder = StateGraph(GraphState, output=GraphOutput)
builder.add_node("generate_report", generate_report)
builder.add_edge(START, "generate_report")
builder.add_edge("generate_report", END)
graph = builder.compile()
main.py
でのsystem_prompt
を日本語に変更しました。
次に、プロジェクトの初期化をします。コマンドuipath init
を実行します。
(LangchainUiPathSample) PS C:\Users\admin_1\Documents\PythonProject\LangchainUiPathSample> uipath init
⠋ Initializing UiPath project ...
✓ Created '.env' file.
✓ Created 'agent.mermaid' file.
✓ Created 'uipath.json' file.
作成した.env
を開いて、以下のAPIキーを追加します。
ANTHROPIC_API_KEY=sk******
2. Code Agentの実行(ローカル)
先に認証をします。コマンドuipath auth
を実行します。
次に、トピックを"UiPath株式会社"にして、Coded Agentをローカルで呼び出します。
uipath run agent '{\"topic\":\"UiPath株式会社\"}'
出力結果は以下の通りです。
(LangchainUiPathSample) PS C:\Users\admin_1\Documents\PythonProject\LangchainUiPathSample> uipath run agent '{\"topic\":\"UiPath株式会社\"}'
Request URL: 'https://northeurope-2.in.applicationinsights.azure.com//v2.1/track'
Request method: 'POST'
Request headers:
'Content-Type': 'application/json'
'Content-Length': '3612'
'Accept': 'application/json'
'x-ms-client-request-id': '034c34c2-7693-11f0-b816-7c1e524bbfc7'
'User-Agent': 'azsdk-python-azuremonitorclient/unknown Python/3.11.5 (Windows-10-10.0.19045-SP0)'
A body is sent with the request
Response status: 200
Response headers:
'Transfer-Encoding': 'chunked'
'Content-Type': 'application/json; charset=utf-8'
'Server': 'Microsoft-HTTPAPI/2.0'
'Strict-Transport-Security': 'REDACTED'
'X-Content-Type-Options': 'REDACTED'
'Date': 'Mon, 11 Aug 2025 09:10:23 GMT'
Transmission succeeded: Item received: 2. Items accepted: 2
[generate_report]
{
"report": "UiPath株式会社に関するレポート\n\n1. 会社概要\n- RPA(ロボティック・プロセス・オートメーション)ソフトウェアの開
発・販売を行うグローバル企業\n- 2005年にルーマニアで創業、現在はニューヨークに本社を置く\n- 日本法人は2017年に設立\n\n2. 主
力製品・サービス\n- UiPath Platform:企業の業務自動化を実現するRPAプラットフォーム\n- UiPath Studio:自動化プロセスの開発環
境\n- UiPath Orchestrator:自動化プロセスの管理・監視ツール\n\n3. 市場ポジション\n- グローバルRPA市場でのリーディングカンパ
ニー\n- 世界10,000社以上の導入実績\n- 日本国内でも高いシェアを維持\n\n4. 最近の動向\n- AIとの統合を強化し、インテリジェント
自動化を推進\n- クラウドサービスの拡充\n- 低コード/ノーコード開発環境の強化\n\n5. 特徴的な取り組み\n- コミュニティ育成に注力
\n- 無料のトレーニングプログラムを提供\n- 学術機関との連携による人材育成\n\n6. 今後の展望\n- AI技術との融合によるサービス拡
充\n- エンドツーエンドの自動化ソリューション提供\n- グローバル市場での更なる成長"
}
✓ Successful execution.
(LangchainUiPathSample) PS C:\Users\admin_1\Documents\PythonProject\LangchainUiPathSample>
jsonファイルのインプット
main.py
と同じフォルダーにて、input.json
というファイルを作成します。
{
"topic": "AI Agent"
}
再度実行してみます。
uipath run agent --file input.json
3. Code Agentのデプロイ
pyproject.toml
にて、author情報を追加します。
authors = [{ name = "Your Name", email = "your.name@example.com" }]
uipath pack
uipath publish
Orchestratorにデプロイしました。
4. Code Agentの実行(Orchestratorから)
普通のプロセスを実行すると同じです。環境変数も[環境の構成]より指定できます。
実行後、Orchestratorでの[ジョブの詳細]ページより確認できます。
また、TERMINALよりも実行可能です。
# 方法①
uipath invoke agent '{\"topic\":\"UiPath株式会社\"}'
# 方法② jsonファイルをinputとして
uipath invoke agent --file input.json
Chat Models
UiPathは、2種類のチャットモデル UiPathAzureChatOpenAI
と UiPathChat
を提供しています。これらはLangGraphと互換性があり、代替モデルとしてそのまま使用できます。OpenAIやAnthropicのトークンを追加する必要はなく、これらのチャットモデルを使用すると、アカウントのAgentユニットが消費されます。
詳細な情報は以下のサイトをご参照ください。
UiPathAzureChatOpenAI
や UiPathChat
を使う場合は、UiPathのTrust Layer内で動作します。
Context Grounding
Context Groundingサービスを利用すると、以下のことが可能になります。
- 自然言語のクエリを使って、インデックス化されたドキュメントを検索する。
- 組織固有の情報に基づいて、LLMの応答の根拠を明確にする(グラウンディング)。
- 様々なアプリケーション向けに、文脈に関連するドキュメントを取得する。
この機能を使用するには、まずContext Groundingでインデックスを作成する必要があります。インデックスを作成するには、組織のOrchestratorから、インデックスを作成したいフォルダへ移動し、「Indexes」 をクリックします。そこで、ドキュメントを追加済みのストレージバケットから、新しいインデックスを作成できます。詳細については、こちらのドキュメントを参照してください。
詳細な情報は以下のサイトをご参照ください。
Human In The Loop
UiPath-Langchainの統合におけるHuman-In-The-Loop(ヒューマン・イン・ザ・ループ)シナリオに関するガイドです。このガイドでは、interrupt(model)
関数に焦点を当て、LangGraphフレームワーク内でエージェントが待機状態に入ることを象徴的に表すその役割を解説します。
詳細な情報は以下のサイトをご参照ください。
事例1: 企業調査のCoded Agentの利用
以下のuipath-langchain-pythonでは、既にいくつかのサンプルのAgentが作成されています。
これから上記のcompany-research-agentをローカルにダウンロードし、Orchestratorへデプロイをします。
事前準備
上記のAgentでは、Anthropic と TavilyのAPI Keyが必要です。以下のサイトより取得してください。
ソースコードの準備
Gitで上記のソースコードをローカルにダウンロードします。
git clone https://github.com/UiPath/uipath-langchain-python.git
次は、該当プロジェクトフォルダへ移動します。
PS C:\Users\admin_1\Documents\uipath-langchain-python> cd .\samples\company-research-agent
Python仮想環境の準備
次のコマンドを実行して、Python仮想環境を作ります。
# Python 3.11 を使用して、カレントディレクトリに '.venv' という名前の仮想環境を作成します。
uv venv -p 3.11 .venv
# 作成した仮想環境をアクティベート(有効化)します。
# これにより、以降の操作はこの仮想環境内で行われます。
.venv\Scripts\activate
# 仮想環境をプロジェクトの依存関係ファイルの内容と同期させます。
uv sync
# UiPath Orchestrator に認証します。
# このコマンドを実行すると、ブラウザが開き、UiPath Cloud Platform へのログインを求められます。
uipath auth
ソースコードの改修
サンプルは英語のプロンプト文でしたが、プロンプトのカスタマイズを効率化するため、日本語に書き換えます。これは必須ではありません。
変更後のgraph.py
が以下の通りです:
from langchain_anthropic import ChatAnthropic
from langchain_community.tools.tavily_search import TavilySearchResults
from langgraph.graph import END, START, MessagesState, StateGraph
from langgraph.prebuilt import create_react_agent
from pydantic import BaseModel
# Set up the Tavily search tool
tavily_tool = TavilySearchResults(max_results=5)
# Define system prompt
system_prompt = """あなたは、企業の調査とアウトリーチ戦略の策定を専門とする高度なAIアシスタントです。主な機能は以下の通りです。
1. **ターゲット企業の調査**: 指定された企業について、沿革、業界での地位、製品・サービス、最近のニュースを含む包括的な情報を収集します。
2. **組織構造の分析**: 企業の内部構造、部門、階層を調査し、概説します。
3. **主要な意思決定者の特定**: 企業内の重要な意思決定者となる可能性のある役員やリーダーに関する情報を見つけ、提供します。
4. **アウトリーチ戦略の策定**: 収集した情報に基づき、企業および主要な担当者との効果的なコミュニケーションとエンゲージメントのための、カスタマイズされた戦略を作成します。
これらのタスクを遂行するため、以下のステップに従ってください。
1. TavilySearchResultsツールを使用して、企業に関する最新かつ関連性の高い情報を見つけます。
2. 収集したデータを分析し、企業の構造、主要な意思決定者、および潜在的なアウトリーチ戦略に関する洞察を形成します。
検索ツールを使用する際は、以下の点に留意してください。
- 各検索の目的を明確に述べます。
- 企業のさまざまな側面に関する特定の情報を見つけるために、効果的な検索クエリを策定します。
- 検索で期待する情報が得られない場合は、クエリを洗練させてみてください。
回答する際は、包括的な分析として出力を構成してください。明確なセクション見出しを使用して情報を整理します。簡潔で実用的な洞察を提供します。分析のいずれかの部分を完了するためにより多くの情報が必要な場合は、どのような追加情報が役立つかを明確に述べてください。
調査と推奨事項において、常にプロフェッショナルで客観的なトーンを維持してください。あなたの目標は、ビジネス上の意思決定やアウトリーチ活動に役立つ、正確で価値のある情報を提供することです。
指示に明記されている通り、数学的な計算は一切行わないでください。
"""
llm = ChatAnthropic(model="claude-3-5-sonnet-latest")
research_agent = create_react_agent(llm, tools=[tavily_tool], prompt=system_prompt)
class GraphState(BaseModel):
company_name: str
class GraphOutput(BaseModel):
response: str
async def research_node(state: GraphState) -> GraphOutput:
# Format the user message with the company name
user_message = f"""企業`{state.company_name}`について、包括的な分析とアウトリーチ戦略を提供します。TavilySearchResultsツールを使用して情報を収集します。会社の背景、組織構造、主要な意思決定者、およびカスタマイズされたアウトリーチ戦略に関する詳細な調査を含めます。以下のセクション見出しを使用して、回答を構成してください。
### 1. 会社概要
### 2. 組織構造
### 3. 主要な意思決定者
### 4. アウトリーチ戦略
### 5. 追加情報が必要な場合(該当する場合)
各セクションは明確にラベル付けし、関連性のある簡潔な情報を含めるようにしてください。分析を強化するために、企業`{state.company_name}`またはその業界に関する追加の特定の情報が必要な場合は、「追加情報が必要な場合」のセクションに質問を含めてください。
"""
new_state = MessagesState(messages=[{"role": "user", "content": user_message}])
result = await research_agent.ainvoke(new_state)
return GraphOutput(response=result["messages"][-1].content)
# Build the state graph
builder = StateGraph(GraphState, output=GraphOutput)
builder.add_node("researcher", research_node)
builder.add_edge(START, "researcher")
builder.add_edge("researcher", END)
# Compile the graph
graph = builder.compile()
pyproject.toml
も適宜に変更します。例えば、
[project]
name = "company-research-agent"
version = "0.2.0"
description = "Tavily Web検索機能を備えた企業調査エージェント"
authors = [{ name = "Jun li", email = "***@uipath.com" }]
...
AgentをOrchestratorへデプロイ
uipath pack
uipath publish
正常にデプロイできました。
OrchestratorでAPI Keyのアセットを作成
Orchestratorのアセットタブで、anthropicとtavilyのAPI Keyのシークレットアセットを作成します。
OrchestratorでAgentの実行
普通のプロセスと同じ方法で実行します。[環境の構成]で、先ほど作成したアセットでのAPI Keyを利用します。
ANTHROPIC_API_KEY=%ASSETS/ANTHROPIC_API_KEY%
TAVILY_API_KEY=%ASSETS/TAVILY_API_KEY%
入力には、調査したい会社名を入力して、プロセスを実行します。
実行後、以下のような出力がされます。
また、該当Agentの実行トレースや構造も確認できます。
ワークフローやMaestroからのCoded Agent呼び出し
作ったCoded AgentはワークフローまたはMaestroより呼び出しも可能です。
ワークフローからのCoded Agent呼び出し
ワークフローからの[エージェントを実行]アクティビティを使用して、Coded Agentを呼び出します。
例えば、入力が調査先をHuawei株式会社
にして、実行後の出力が以下の通りです。
MaestroからのCoded Agent呼び出し
実行中に、エージェントの詳細な動きも確認できます。
実行後、Orchestratorのジョブで詳細な出力なども確認できます。
UiPathでは、他にもサンプルとしてCoded Agentを提供しています。上記の方法でOrchestratorにデプロイすれば、すぐに使用できます。
https://github.com/UiPath/uipath-langchain-python/tree/main/samples
最後に
ここまでは、UiPath Langchain SDKの基本的な使い方と、作成済みCoded Agentの利用方法を紹介しました。
UiPathプラットフォームの最大の特徴は、すべてのエージェントやロボットを、企業レベルのセキュリティが担保された統合プラットフォーム上で集約・管理できる点にあります。これにより、安全性を確保しながら、組織全体でより大きな効果を発揮できます。
次回は、以下の図のとおり、外部エージェントをUiPathのAPIやMaestro経由で活用する方法について解説していきます。どうぞお楽しみください。
参照資料