@isanakamishiro2 さんはいつも週末にも投稿しているなーと読んでいたところ
加えて、いつの間にかAWS東京リージョンにMosaic AI Agent Framework & Evaluationが来ていました!
公式Docに記載されているので間違いないはず。
な、なんだってー!!!
確認します。
本当だ。
AI Playgroundにもエクスポートボタンが。なんのこっちゃと思われるかもしれませんが、このボタンがあることで、AI Playgroundで検証したエージェントをそのまま本番運用まで持っていくことができるのこのボタンなのです。詳しくはこちら。
Mosaic AI Agent Framework & Evaluationとは
日本語で言えば、Mosaic AIエージェントフレームワークおよび評価となりますが、個人的には英語表記が好きです。
RAGを含む生成AIエージェントシステムの開発、運用をシンプルにしてくれるフレームワークです。エージェントシステムの開発には様々な要素が関わるので、このフレームワークがカバーする範囲も以下のように広範です。
- エージェントのプロとタイピングと作成
- エージェントのトレース
- エージェントのサービング
- エージェントの評価
- エージェントの改善
動かしてみる
こちらを少し変えて動かします。
Mosaic AI Vector Searchのベクトル検索インデックスを作成しておきます。
以前はコメントアウトしていた部分を設定します。
# TODO: ベクトル検索インデックスを追加
VECTOR_SEARCH_TOOLS.append(
VectorSearchRetrieverTool(
index_name="takaakiyayoi_catalog.vector_seach.vs_qiita"
)
)
動作確認
ベクトルストアを検索するような質問をします。
AGENT.predict({"messages": [{"role": "user", "content": "DatabricksとJupyter notebookの違いをQiitaの記事から教えてください"}]})
ベクトルストアを検索して回答を返してくれてます!しかも、検索結果もわかりやすく確認できるようになってる。
エージェントの評価
以降のステップを進めていくと、評価用データセットを用いたエージェントの評価も行えます。
import pandas as pd
eval_examples = [
{
"request": {"messages": [{"role": "user", "content": "LLMエージェントとは何ですか?"}]},
"expected_response": None,
}
]
eval_dataset = pd.DataFrame(eval_examples)
display(eval_dataset)
import mlflow
with mlflow.start_run(run_id=logged_agent_info.run_id):
eval_results = mlflow.evaluate(
f"runs:/{logged_agent_info.run_id}/agent",
data=eval_dataset, # 評価データセット
model_type="databricks-agent", # Mosaic AIエージェント評価を有効にする
)
# MLflow UIで評価結果を確認するか、以下でアクセス:
display(eval_results.tables["eval_results"])
以下の結果を見ると、エージェント出現前の記事しか検索されていないので結果としてはいけてないということがわかります。このように評価のステップを含めることで、エージェント改善の糸口を見つけることができます。しかし、この辺のUIも前見た時から改善されてますね。
エージェントの登録
ここまで開発したエージェントは非常に大切なものです。Unity Catalogが提供するモデルレジストリを活用することで、エージェントのバージョン管理、共有、モデルサービングエンドポイントへのデプロイが可能となります。
mlflow.set_registry_uri("databricks-uc")
# TODO: UCモデルのカタログ、スキーマ、およびモデル名を定義する
catalog = "takaakiyayoi_catalog"
schema = "vector_seach"
model_name = "openai_responses_agent"
UC_MODEL_NAME = f"{catalog}.{schema}.{model_name}"
# モデルをUCに登録する
uc_registered_model_info = mlflow.register_model(model_uri=logged_agent_info.model_uri, name=UC_MODEL_NAME)
エージェントのデプロイ
エージェントはユーザーが使ってなんぼです。モデルサービングエンドポイントにエージェントをデプロイすることで、REST API経由でさまざまなインタフェースから利用できるようになります。
以下を実行する際には、ベクトル検索インデックスやエンベディングモデルのサービングエンドポイントのアクセス権を設定するようにしてください。
from databricks import agents
agents.deploy(
UC_MODEL_NAME,
uc_registered_model_info.version,
tags={"endpointSource": "docs"},
environment_vars={
"OPENAI_API_KEY": f"{{{{secrets/{secret_scope_name}/{secret_key_name}}}}}"
},
)
これで、REST API経由でエージェントにアクセスできるようになります。
AI Playgroundでも動作確認できます。
そして、これらのデータやエージェントの関係性はリネージとして管理されます。
エージェント開発に活用ください!
注意
サービングしたエージェントは、ベクトルストアの検索の際にエラーが起きて期待した通りに動作しなかったので後日動作確認します。