コードを使用したエージェントワークフロー¶
このノートブックでは、DataRobotにおけるシンプルなエージェントワークフローを紹介し、MLOpsを活用してワークフローの運用、監視、およびガバナンスを行う方法を示しています。
このノートブックを実行すると、基本的な演算も確実に実行できるシンプルなエージェントの DataRobot MLOpsデプロイが作成されます。また、この例では、エージェントが使用する電卓ツールのデプロイも別途作成します。
コードアセットの概要¶
このワークフローでは、以下のコードベースのアセットが使用されます。これらはすべてこちらからダウンロードできます。
calculator/custom.py:LLMが簡単な算術演算を確実に実行できるようにする「電卓」ツールのカスタムデプロイロジック。agent/custom.py:ユーザープロンプトに直接回答するか、または最初に電卓ツールに任せるエージェントのカスタムデプロイロジック。agent/requirements.txt:エージェントのカスタムデプロイのためのPythonの依存関係。agent/model-metadata.yaml:Azure OpenAIの資格情報と電卓デプロイの識別子を指定するエージェントデプロイの構成ファイル。create_deployments.ipynb:このノートブックファイル。デプロイを作成してテストするためのコードが含まれています。
ワークフローの概要¶
- 電卓のデプロイを作成
- Update model-metadata.yaml and requirements.txt
- エージェントのデプロイを作成
- エージェントのデプロイを使用して予測のテストと実行
1. 電卓のデプロイを作成¶
以下のセルはcalculatorディレクトリ(calculator/custom.py)内のファイルをデプロイします。DataRobotパッケージをインポートし、DataRobot MLOpsのデプロイ作成方法を使って、カスタムモデルのデプロイを作成します。このモデルは電卓として機能します。デプロイに2つの数値と数学演算子を取り込むと、モデルは答えを返します。
import datarobot as dr
default_prediction_server_id = '<YOUR_PREDICTION_SERVER_ID>' # Specify your prediction server here
execution_environment_id = "5e8c889607389fe0f466c72d"
cm_calc = dr.CustomInferenceModel.create(name='Calculator',
target_name='result',
target_type='TextGeneration')
cmv_calc = dr.CustomModelVersion.create_clean(cm_calc.id,
base_environment_id=execution_environment_id,
folder_path='./calculator')
rmv_calc = dr.RegisteredModelVersion.create_for_custom_model_version(cmv_calc.id)
d_calc = dr.Deployment.create_from_registered_model_version(rmv_calc.id,
'Calculator',
default_prediction_server_id=default_prediction_server_id)
2. 資格情報の指定¶
In your text editor of choice, update agent/model-metadata.yaml with your Azure Open AI credentials and the calculator deployment ID from step 1 (d_calc.id). In production you should use the DataRobot credential store to expose secrets in the deployment.
Update package versions in agent/requirements.txt to the following:
openai==1.55.3
pydantic==2.5.2
datarobot-predict==1.13.5
datarobot==3.4.0
3. エージェントのデプロイを作成¶
以下のコードを使用して、エージェントのデプロイを作成します。
cm_agent = dr.CustomInferenceModel.create(name='Agent',
target_name='completion',
target_type='TextGeneration')
cmv_agent = dr.CustomModelVersion.create_clean(cm_agent.id,
base_environment_id=execution_environment_id,
folder_path='./agent')
dr.CustomModelVersionDependencyBuild.start_build(cm_agent.id, cmv_agent.id)
rmv_agent = dr.RegisteredModelVersion.create_for_custom_model_version(cmv_agent.id)
d_agent = dr.Deployment.create_from_registered_model_version(rmv_agent.id,
'Agent',
default_prediction_server_id=default_prediction_server_id)
4. デプロイのテスト¶
以下のセルは、電卓モデルに算数の問題(What is 4 x 752)を出し、エージェントが取得した回答を受け取ることで、デプロイとやり取りします。
from datarobot_predict.deployment import predict
import pandas as pd
import json
messages = [
{'role': 'user',
'content': 'what is 4*752',}
]
df, _ = predict(d_agent, pd.DataFrame([{'messages': json.dumps(messages)}]))
df
messages = [
{'role': 'user',
'content': 'hello',}
]
df, _ = predict(d_agent, pd.DataFrame([{'messages': json.dumps(messages)}]))
df