こちらのノートブックをウォークスルーします。
GenieのAPIが公開されたことで、Genieをエージェントとしたマルチエージェントシステムなどを構築できるようになりました。
注意
ウォークスルーするノートブックでは、後半でMosaic AI Agent Frameworkを使っています。お使いのリージョンで利用できるかどうかをご確認ください。執筆時点では日本リージョンではMosaic AI Agent Frameworkはサポートされていませんが、エージェントをデプロイする以外の部分は動作します。
準備
このノートブックでは以下の準備が必要となります。
- ワークスペースのパーソナルアクセストークン
- GPT-4oなどをサービングするモデルサービングエンドポイント
- Genieスペース
パーソナルアクセストークン
ワークスペースでパーソナルアクセストークンを取得してシークレットに保存します。
以下はローカルのシェルから実行しています。
databricks auth login --host https://<ワークスペースのホスト名>
databricks secrets put-secret demo-token-takaaki.yayoi pat -p e2-demo-tokyo
Genieスペース
COVID-19感染者数の分析を行うGenieスペースを使います。GENIE_SPACE_ID
が必要となるので、URLからコピーしておきます。
https://xxxx.databricks.com/genie/rooms/01ef54b0f9cb142f9e63ccc57395c808?v=conversations&o=xxxx
この例では01ef54b0f9cb142f9e63ccc57395c808
がスペースIDとなります。
モデルサービングエンドポイント
gpt-4-o-mini
を使ってます。
Mosaic AIエージェントフレームワーク: Genieを使用してマルチエージェントシステムを作成およびデプロイ
このノートブックでは、Mosaic AIエージェントフレームワークとLangGraphを使用してマルチエージェントシステムを構築する方法を示します。ここでGenieはエージェントの1つです。
このノートブックでは、以下を行います:
- LangGraphを使用してマルチエージェントシステムを作成します。
- LangGraphエージェントをMLflowの
ChatAgent
でラップし、Databricksの機能との互換性を確保します。 - マルチエージェントシステムの出力を手動でテストします。
- マルチエージェントシステムをログおよびデプロイします。
この例はLangGraphドキュメント - マルチエージェントスーパーバイザーの例に基づいています。
なぜGenieエージェントを使用するのか?
マルチエージェントシステムは、各エージェントが専門的な能力を持ち、協力して動作する複数のAIエージェントで構成されています。そのエージェントの1つとして、Genieはユーザーが自然言語を使用して構造化データと対話することを可能にします。
事前定義されたクエリのみを実行できるSQL関数とは異なり、Genieはユーザーの質問に答えるために新しいクエリを作成する柔軟性を持っています。
前提条件
%pip install -U -qqq mlflow langgraph==0.3.4 databricks-langchain databricks-agents uv
dbutils.library.restartPython()
%md
マルチエージェントシステムの定義
LangGraphでスーパーバイザーエージェントノードが以下のエージェントノードを指示するマルチエージェントシステムを作成します:
- GenieAgent: 構造化データをクエリし、推論するGenieエージェント。
- ツール呼び出しエージェント: Unity Catalog関数ツールを呼び出すエージェント。
この例では、ツール呼び出しエージェントは組み込みのUnity Catalog関数system.ai.python_exec
を使用してPythonコードを実行します。
エージェントに追加できる他のツールの例については、Databricksのドキュメントを参照してください (AWS | Azure)。
ChatAgent
インターフェースを使用してLangGraphエージェントをラップする
Databricksは、Databricks AI機能との互換性を確保し、オープンソース標準を使用してマルチターン会話エージェントを簡単に作成するためにChatAgent
を使用することを推奨しています。
LangGraphChatAgent
クラスは、LangGraphエージェントをラップするためにChatAgent
インターフェースを実装しています。
MLflowのChatAgentドキュメントを参照してください。
エージェントコードをファイルに書き込む
エージェントコードを以下の単一セルで定義します。これにより、%%writefile
マジックコマンドを使用してエージェントコードをローカルPythonファイルに書き込み、その後のログ記録とデプロイメントに使用できます。
これがエージェントの実装になります。以下のセルでGenieスペースのIDを指定します。
%%writefile agent.py
import functools
import os
from typing import Any, Generator, Literal, Optional
import mlflow
from databricks.sdk import WorkspaceClient
from databricks_langchain import (
ChatDatabricks,
DatabricksFunctionClient,
UCFunctionToolkit,
set_uc_function_client,
)
from databricks_langchain.genie import GenieAgent
from langchain_core.runnables import RunnableLambda
from langgraph.graph import END, StateGraph
from langgraph.graph.state import CompiledStateGraph
from langgraph.prebuilt import create_react_agent
from mlflow.langchain.chat_agent_langgraph import ChatAgentState
from mlflow.pyfunc import ChatAgent
from mlflow.types.agent import (
ChatAgentChunk,
ChatAgentMessage,
ChatAgentResponse,
ChatContext,
)
from pydantic import BaseModel
mlflow.langchain.autolog()
###################################################
## Genie SpaceにアクセスできるGenieAgentを作成する
###################################################
# TODO GENIE_SPACE_IDとこのスペースの説明を追加する
GENIE_SPACE_ID = "01ef54b0f9cb142f9e63ccc57395c808"
genie_agent_description = "このエージェントは質問に答えることができます..."
genie_agent = GenieAgent(
genie_space_id=GENIE_SPACE_ID,
genie_agent_name="Genie",
description=genie_agent_description,
# DB_MODEL_SERVING_HOST_URLはエージェントエンドポイントで設定されますが、ノートブックには存在しません
client=WorkspaceClient(
host=os.getenv("DATABRICKS_HOST") or os.getenv("DB_MODEL_SERVING_HOST_URL"),
token=os.getenv("DATABRICKS_GENIE_PAT"),
),
)
############################################
# LLMエンドポイントとシステムプロンプトを定義する
############################################
# TODO: モデルサービングエンドポイントに置き換える。マルチエージェントGenieはGPT 4oおよびGPT o1モデルで最適に動作します。
LLM_ENDPOINT_NAME = "taka-gpt-4o-mini"
assert LLM_ENDPOINT_NAME is not None
llm = ChatDatabricks(endpoint=LLM_ENDPOINT_NAME)
############################################################
# コードエージェントを作成する
# 追加のツールにアクセスできるエージェントも作成できます
############################################################
client = DatabricksFunctionClient()
set_uc_function_client(client)
tools = []
# TODO 必要に応じて、追加のツールを追加し、このエージェントの説明を更新する
uc_tool_names = ["system.ai.*"]
uc_toolkit = UCFunctionToolkit(function_names=uc_tool_names)
tools.extend(uc_toolkit.tools)
code_agent_description = (
"Coderエージェントは、プログラミングの課題を解決し、コードスニペットを生成し、問題をデバッグし、複雑なコーディングの概念を説明することに特化しています。",
)
code_agent = create_react_agent(llm, tools=tools)
#############################
# スーパーバイザーエージェントを定義する
#############################
worker_descriptions = {
"Genie": genie_agent_description,
"Coder": code_agent_description,
}
formatted_descriptions = "\n".join(
f"- {name}: {desc}" for name, desc in worker_descriptions.items()
)
system_prompt = f"次のワーカーの間でルーティングを決定するか、回答が提供された場合は会話を終了します。 \n{formatted_descriptions}"
options = ["FINISH"] + list(worker_descriptions.keys())
def supervisor_agent(state):
class nextNode(BaseModel):
next_node: Literal[tuple(options)]
preprocessor = RunnableLambda(
lambda state: [{"role": "system", "content": system_prompt}] + state["messages"]
)
supervisor_chain = preprocessor | llm.with_structured_output(nextNode)
return supervisor_chain.invoke(state)
#######################################
# マルチエージェントのグラフ構造を定義する
#######################################
def agent_node(state, agent, name):
result = agent.invoke(state)
return {
"messages": [
{
"role": "assistant",
"content": result["messages"][-1].content,
"name": name,
}
]
}
def final_answer(state):
system_prompt = "メッセージの内容のみを使用して、他のエージェントが提供した回答を使用してユーザーの質問に答えてください。"
preprocessor = RunnableLambda(
lambda state: [{"role": "system", "content": system_prompt}] + state["messages"]
)
final_answer_chain = preprocessor | llm
return {"messages": [final_answer_chain.invoke(state)]}
class AgentState(ChatAgentState):
next_node: str
code_node = functools.partial(agent_node, agent=code_agent, name="Coder")
genie_node = functools.partial(agent_node, agent=genie_agent, name="Genie")
workflow = StateGraph(AgentState)
workflow.add_node("Genie", genie_node)
workflow.add_node("Coder", code_node)
workflow.add_node("supervisor", supervisor_agent)
workflow.add_node("final_answer", final_answer)
workflow.set_entry_point("supervisor")
# ワーカーが終了したときに必ずスーパーバイザーに「報告」するようにします
for worker in worker_descriptions.keys():
workflow.add_edge(worker, "supervisor")
# スーパーバイザーが次のノードを決定するようにします
workflow.add_conditional_edges(
"supervisor",
lambda x: x["next_node"],
{**{k: k for k in worker_descriptions.keys()}, "FINISH": "final_answer"},
)
workflow.add_edge("final_answer", END)
multi_agent = workflow.compile()
###################################
# マルチエージェントをChatAgentにラップする
###################################
class LangGraphChatAgent(ChatAgent):
def __init__(self, agent: CompiledStateGraph):
self.agent = agent
def predict(
self,
messages: list[ChatAgentMessage],
context: Optional[ChatContext] = None,
custom_inputs: Optional[dict[str, Any]] = None,
) -> ChatAgentResponse:
request = {
"messages": [m.model_dump_compat(exclude_none=True) for m in messages]
}
messages = []
for event in self.agent.stream(request, stream_mode="updates"):
for node_data in event.values():
messages.extend(
ChatAgentMessage(**msg) for msg in node_data.get("messages", [])
)
return ChatAgentResponse(messages=messages)
def predict_stream(
self,
messages: list[ChatAgentMessage],
context: Optional[ChatContext] = None,
custom_inputs: Optional[dict[str, Any]] = None,
) -> Generator[ChatAgentChunk, None, None]:
request = {
"messages": [m.model_dump_compat(exclude_none=True) for m in messages]
}
for event in self.agent.stream(request, stream_mode="updates"):
for node_data in event.values():
yield from (
ChatAgentChunk(**{"delta": msg})
for msg in node_data.get("messages", [])
)
# エージェントオブジェクトを作成し、mlflow.models.set_model()を介して推論のためにエージェントオブジェクトをロードする際に使用するエージェントオブジェクトとして指定します
AGENT = LangGraphChatAgent(multi_agent)
mlflow.models.set_model(AGENT)
Databricksシークレットとしてパーソナルアクセストークン(PAT)を作成する
Genieスペースおよびその基盤となるリソースにアクセスするために、PATを作成する必要があります。
- これはあなた自身のPATまたはシステムプリンシパルのPAT(AWS | Azure)のいずれかです。トークンの有効期限が切れた場合は、自分でローテーションさせる必要があります。
- モデルサービングエンドポイントにシークレットベースの環境変数を追加します(AWS | Azure)。
- 各リソースの適切な権限レベルについては、デプロイドキュメントの表を参照してください(AWS | Azure)。
- Genieスペースに対する
CAN RUN
権限 - Genieスペースで使うSQLウェアハウスに対する
CAN USE
権限 - 背後にあるUnity Catalogテーブルに対して
SELECT
権限 - 背後にあるUnity Catalog関数に対して
EXECUTE
権限
- Genieスペースに対する
準備したシークレットスコープとシークレットキーを指定します。
import os
# TODO: シークレットスコープ名とシークレットキー名を設定して、PATにアクセスします
secret_scope_name = "demo-token-takaaki.yayoi"
secret_key_name = "pat"
os.environ["DATABRICKS_GENIE_PAT"] = dbutils.secrets.get(
scope=secret_scope_name, key=secret_key_name
)
assert os.environ["DATABRICKS_GENIE_PAT"] is not None, (
"The DATABRICKS_GENIE_PAT was not properly set to the PAT secret"
)
エージェントのテスト
エージェントと対話してその出力をテストします。このノートブックでは mlflow.langchain.autolog()
を呼び出しているため、エージェントが実行する各ステップのトレースを確認できます。
TODO: このプレースホルダー input_example
をエージェント用のドメイン固有のプロンプトに置き換えてください。
dbutils.library.restartPython()
上で保存したagent.py
をインポートしてエージェントを初期化し、動作確認します。
# agent.pyからAGENTをimport
from agent import AGENT
input_example = {
"messages": [
{
"role": "user",
"content": "東京の感染者数の傾向",
}
]
}
AGENT.predict(input_example)
ChatAgentResponse(messages=[ChatAgentMessage(role='assistant', content='| | Prefecture | Cases | date_timestamp |\n|----:|:-------------|--------:|:-----------------|\n| 0 | Tokyo | 78 | 2022-01-01 |\n| 1 | Tokyo | 82 | 2022-01-02 |\n| 2 | Tokyo | 103 | 2022-01-03 |\n| 3 | Tokyo | 151 | 2022-01-04 |\n| 4 | Tokyo | 388 | 2022-01-05 |\n| 5 | Tokyo | 640 | 2022-01-06 |\n| 6 | Tokyo | 920 | 2022-01-07 |\n| 7 | Tokyo | 1223 | 2022-01-08 |\n| 8 | Tokyo | 1223 | 2022-01-09 |\n| 9 | Tokyo | 871 | 2022-01-10 |\n| 10 | Tokyo | 959 | 2022-01-11 |\n| 11 | Tokyo | 2196 | 2022-01-12 |\n| 12 | Tokyo | 3121 | 2022-01-13 |\n| 13 | Tokyo | 4055 | 2022-01-14 |\n| 14 | Tokyo | 4559 | 2022-01-15 |\n| 15 | Tokyo | 4166 | 2022-01-16 |\n| 16 | Tokyo | 3713 | 2022-01-17 |\n| 17 | Tokyo | 5181 | 2022-01-18 |\n| 18 | Tokyo | 7366 | 2022-01-19 |\n| 19 | Tokyo | 8634 | 2022-01-20 |\n| 20 | Tokyo | 9695 | 2022-01-21 |\n| 21 | Tokyo | 11217 | 2022-01-22 |\n| 22 | Tokyo | 9460 | 2022-01-23 |\n| 23 | Tokyo | 8493 | 2022-01-24 |\n| 24 | Tokyo | 12797 | 2022-01-25 |\n| 25 | Tokyo | 14077 | 2022-01-26 |\n| 26 | Tokyo | 16525 | 2022-01-27 |\n| 27 | Tokyo | 17610 | 2022-01-28 |\n| 28 | Tokyo | 17424 | 2022-01-29 |\n| 29 | Tokyo | 15893 | 2022-01-30 |\n| 30 | Tokyo | 11743 | 2022-01-31 |\n| 31 | Tokyo | 14432 | 2022-02-01 |\n| 32 | Tokyo | 21562 | 2022-02-02 |\n| 33 | Tokyo | 20663 | 2022-02-03 |\n| 34 | Tokyo | 19788 | 2022-02-04 |\n| 35 | Tokyo | 21110 | 2022-02-05 |\n| 36 | Tokyo | 17519 | 2022-02-06 |\n| 37 | Tokyo | 12194 | 2022-02-07 |\n| 38 | Tokyo | 17100 | 2022-02-08 |\n| 39 | Tokyo | 18275 | 2022-02-09 |\n| 40 | Tokyo | 18888 | 2022-02-10 |\n| 41 | Tokyo | 18648 | 2022-02-11 |\n| 42 | Tokyo | 11755 | 2022-02-12 |\n| 43 | Tokyo | 13061 | 2022-02-13 |\n| 44 | Tokyo | 10330 | 2022-02-14 |\n| 45 | Tokyo | 15515 | 2022-02-15 |\n| 46 | Tokyo | 17325 | 2022-02-16 |\n| 47 | Tokyo | 17856 | 2022-02-17 |\n| 48 | Tokyo | 16122 | 2022-02-18 |\n| 49 | Tokyo | 13509 | 2022-02-19 |\n| 50 | Tokyo | 12933 | 2022-02-20 |\n| 51 | Tokyo | 8801 | 2022-02-21 |\n| 52 | Tokyo | 11439 | 2022-02-22 |\n| 53 | Tokyo | 14559 | 2022-02-23 |\n| 54 | Tokyo | 10163 | 2022-02-24 |\n| 55 | Tokyo | 11123 | 2022-02-25 |\n| 56 | Tokyo | 11558 | 2022-02-26 |\n| 57 | Tokyo | 10314 | 2022-02-27 |\n| 58 | Tokyo | 9629 | 2022-02-28 |\n| 59 | Tokyo | 11802 | 2022-03-01 |\n| 60 | Tokyo | 12690 | 2022-03-02 |\n| 61 | Tokyo | 12246 | 2022-03-03 |\n| 62 | Tokyo | 10515 | 2022-03-04 |\n| 63 | Tokyo | 10804 | 2022-03-05 |\n| 64 | Tokyo | 9282 | 2022-03-06 |\n| 65 | Tokyo | 5370 | 2022-03-07 |\n| 66 | Tokyo | 8919 | 2022-03-08 |\n| 67 | Tokyo | 10812 | 2022-03-09 |\n| 68 | Tokyo | 10077 | 2022-03-10 |\n| 69 | Tokyo | 8456 | 2022-03-11 |\n| 70 | Tokyo | 9164 | 2022-03-12 |\n| 71 | Tokyo | 8127 | 2022-03-13 |\n| 72 | Tokyo | 4831 | 2022-03-14 |\n| 73 | Tokyo | 7831 | 2022-03-15 |\n| 74 | Tokyo | 10220 | 2022-03-16 |\n| 75 | Tokyo | 8456 | 2022-03-17 |\n| 76 | Tokyo | 7825 | 2022-03-18 |\n| 77 | Tokyo | 7441 | 2022-03-19 |\n| 78 | Tokyo | 6497 | 2022-03-20 |\n| 79 | Tokyo | 3853 | 2022-03-21 |\n| 80 | Tokyo | 3532 | 2022-03-22 |\n| 81 | Tokyo | 6426 | 2022-03-23 |\n| 82 | Tokyo | 8869 | 2022-03-24 |\n| 83 | Tokyo | 7284 | 2022-03-25 |\n| 84 | Tokyo | 7440 | 2022-03-26 |\n| 85 | Tokyo | 7843 | 2022-03-27 |\n| 86 | Tokyo | 4542 | 2022-03-28 |\n| 87 | Tokyo | 7846 | 2022-03-29 |\n| 88 | Tokyo | 9518 | 2022-03-30 |\n| 89 | Tokyo | 8220 | 2022-03-31 |\n| 90 | Tokyo | 7978 | 2022-04-01 |\n| 91 | Tokyo | 7390 | 2022-04-02 |\n| 92 | Tokyo | 7896 | 2022-04-03 |\n| 93 | Tokyo | 4382 | 2022-04-04 |\n| 94 | Tokyo | 6967 | 2022-04-05 |\n| 95 | Tokyo | 8650 | 2022-04-06 |\n| 96 | Tokyo | 8750 | 2022-04-07 |\n| 97 | Tokyo | 8110 | 2022-04-08 |\n| 98 | Tokyo | 8098 | 2022-04-09 |\n| 99 | Tokyo | 8024 | 2022-04-10 |\n| 100 | Tokyo | 4557 | 2022-04-11 |\n| 101 | Tokyo | 6920 | 2022-04-12 |\n| 102 | Tokyo | 8248 | 2022-04-13 |\n| 103 | Tokyo | 8535 | 2022-04-14 |\n| 104 | Tokyo | 6761 | 2022-04-15 |\n| 105 | Tokyo | 6794 | 2022-04-16 |\n| 106 | Tokyo | 5219 | 2022-04-17 |\n| 107 | Tokyo | 3477 | 2022-04-18 |\n| 108 | Tokyo | 5581 | 2022-04-19 |\n| 109 | Tokyo | 6771 | 2022-04-20 |\n| 110 | Tokyo | 6710 | 2022-04-21 |\n| 111 | Tokyo | 5393 | 2022-04-22 |\n| 112 | Tokyo | 5386 | 2022-04-23 |\n| 113 | Tokyo | 4935 | 2022-04-24 |\n| 114 | Tokyo | 3136 | 2022-04-25 |\n| 115 | Tokyo | 5042 | 2022-04-26 |\n| 116 | Tokyo | 6049 | 2022-04-27 |\n| 117 | Tokyo | 5392 | 2022-04-28 |\n| 118 | Tokyo | 3892 | 2022-04-29 |\n| 119 | Tokyo | 2978 | 2022-04-30 |\n| 120 | Tokyo | 3157 | 2022-05-01 |\n| 121 | Tokyo | 2397 | 2022-05-02 |\n| 122 | Tokyo | 3349 | 2022-05-03 |\n| 123 | Tokyo | 2997 | 2022-05-04 |\n| 124 | Tokyo | 2317 | 2022-05-05 |\n| 125 | Tokyo | 2678 | 2022-05-06 |\n| 126 | Tokyo | 3802 | 2022-05-07 |\n| 127 | Tokyo | 4709 | 2022-05-08 |\n| 128 | Tokyo | 3011 | 2022-05-09 |\n| 129 | Tokyo | 4447 | 2022-05-10 |\n| 130 | Tokyo | 4761 | 2022-05-11 |\n| 131 | Tokyo | 4214 | 2022-05-12 |\n| 132 | Tokyo | 4103 | 2022-05-13 |\n| 133 | Tokyo | 3798 | 2022-05-14 |\n| 134 | Tokyo | 3348 | 2022-05-15 |\n| 135 | Tokyo | 2374 | 2022-05-16 |\n| 136 | Tokyo | 3662 | 2022-05-17 |\n| 137 | Tokyo | 4353 | 2022-05-18 |\n| 138 | Tokyo | 4170 | 2022-05-19 |\n| 139 | Tokyo | 3571 | 2022-05-20 |\n| 140 | Tokyo | 3462 | 2022-05-21 |\n| 141 | Tokyo | 3313 | 2022-05-22 |\n| 142 | Tokyo | 2023 | 2022-05-23 |\n| 143 | Tokyo | 3268 | 2022-05-24 |\n| 144 | Tokyo | 3924 | 2022-05-25 |\n| 145 | Tokyo | 3388 | 2022-05-26 |\n| 146 | Tokyo | 2629 | 2022-05-27 |\n| 147 | Tokyo | 2549 | 2022-05-28 |\n| 148 | Tokyo | 2192 | 2022-05-29 |\n| 149 | Tokyo | 1342 | 2022-05-30 |\n| 150 | Tokyo | 2356 | 2022-05-31 |\n| 151 | Tokyo | 2412 | 2022-06-01 |\n| 152 | Tokyo | 2333 | 2022-06-02 |\n| 153 | Tokyo | 2109 | 2022-06-03 |\n| 154 | Tokyo | 2071 | 2022-06-04 |\n| 155 | Tokyo | 1583 | 2022-06-05 |\n| 156 | Tokyo | 1012 | 2022-06-06 |\n| 157 | Tokyo | 1797 | 2022-06-07 |\n| 158 | Tokyo | 1934 | 2022-06-08 |\n| 159 | Tokyo | 1874 | 2022-06-09 |\n| 160 | Tokyo | 1597 | 2022-06-10 |\n| 161 | Tokyo | 1524 | 2022-06-11 |\n| 162 | Tokyo | 1544 | 2022-06-12 |\n| 163 | Tokyo | 958 | 2022-06-13 |\n| 164 | Tokyo | 1527 | 2022-06-14 |\n| 165 | Tokyo | 2014 | 2022-06-15 |\n| 166 | Tokyo | 1815 | 2022-06-16 |\n| 167 | Tokyo | 1591 | 2022-06-17 |\n| 168 | Tokyo | 1681 | 2022-06-18 |\n| 169 | Tokyo | 1621 | 2022-06-19 |\n| 170 | Tokyo | 1076 | 2022-06-20 |\n| 171 | Tokyo | 1959 | 2022-06-21 |\n| 172 | Tokyo | 2325 | 2022-06-22 |\n| 173 | Tokyo | 2409 | 2022-06-23 |\n| 174 | Tokyo | 2181 | 2022-06-24 |\n| 175 | Tokyo | 2159 | 2022-06-25 |\n| 176 | Tokyo | 2004 | 2022-06-26 |\n| 177 | Tokyo | 1514 | 2022-06-27 |\n| 178 | Tokyo | 2509 | 2022-06-28 |\n| 179 | Tokyo | 3802 | 2022-06-29 |\n| 180 | Tokyo | 3621 | 2022-06-30 |\n| 181 | Tokyo | 3545 | 2022-07-01 |\n| 182 | Tokyo | 3615 | 2022-07-02 |\n| 183 | Tokyo | 3788 | 2022-07-03 |\n| 184 | Tokyo | 2772 | 2022-07-04 |\n| 185 | Tokyo | 5301 | 2022-07-05 |\n| 186 | Tokyo | 8338 | 2022-07-06 |\n| 187 | Tokyo | 8523 | 2022-07-07 |\n| 188 | Tokyo | 8775 | 2022-07-08 |\n| 189 | Tokyo | 9714 | 2022-07-09 |\n| 190 | Tokyo | 9481 | 2022-07-10 |\n| 191 | Tokyo | 6228 | 2022-07-11 |\n| 192 | Tokyo | 11508 | 2022-07-12 |\n| 193 | Tokyo | 16875 | 2022-07-13 |\n| 194 | Tokyo | 16657 | 2022-07-14 |\n| 195 | Tokyo | 19055 | 2022-07-15 |\n| 196 | Tokyo | 18912 | 2022-07-16 |\n| 197 | Tokyo | 17786 | 2022-07-17 |\n| 198 | Tokyo | 12691 | 2022-07-18 |\n| 199 | Tokyo | 11009 | 2022-07-19 |\n| 200 | Tokyo | 20385 | 2022-07-20 |\n| 201 | Tokyo | 31855 | 2022-07-21 |\n| 202 | Tokyo | 34968 | 2022-07-22 |\n| 203 | Tokyo | 32683 | 2022-07-23 |\n| 204 | Tokyo | 28096 | 2022-07-24 |\n| 205 | Tokyo | 22377 | 2022-07-25 |\n| 206 | Tokyo | 31580 | 2022-07-26 |\n| 207 | Tokyo | 29030 | 2022-07-27 |\n| 208 | Tokyo | 40395 | 2022-07-28 |\n| 209 | Tokyo | 36804 | 2022-07-29 |\n| 210 | Tokyo | 33450 | 2022-07-30 |\n| 211 | Tokyo | 31532 | 2022-07-31 |\n| 212 | Tokyo | 21947 | 2022-08-01 |\n| 213 | Tokyo | 30827 | 2022-08-02 |\n| 214 | Tokyo | 38923 | 2022-08-03 |\n| 215 | Tokyo | 35329 | 2022-08-04 |\n| 216 | Tokyo | 37752 | 2022-08-05 |\n| 217 | Tokyo | 30956 | 2022-08-06 |\n| 218 | Tokyo | 26299 | 2022-08-07 |\n| 219 | Tokyo | 17872 | 2022-08-08 |\n| 220 | Tokyo | 29103 | 2022-08-09 |\n| 221 | Tokyo | 34234 | 2022-08-10 |\n| 222 | Tokyo | 31242 | 2022-08-11 |\n| 223 | Tokyo | 20396 | 2022-08-12 |\n| 224 | Tokyo | 23762 | 2022-08-13 |\n| 225 | Tokyo | 22721 | 2022-08-14 |\n| 226 | Tokyo | 23094 | 2022-08-15 |\n| 227 | Tokyo | 23427 | 2022-08-16 |\n| 228 | Tokyo | 29274 | 2022-08-17 |\n| 229 | Tokyo | 27301 | 2022-08-18 |\n| 230 | Tokyo | 27515 | 2022-08-19 |\n| 231 | Tokyo | 25140 | 2022-08-20 |\n| 232 | Tokyo | 24515 | 2022-08-21 |\n| 233 | Tokyo | 14802 | 2022-08-22 |\n| 234 | Tokyo | 21767 | 2022-08-23 |\n| 235 | Tokyo | 25435 | 2022-08-24 |\n| 236 | Tokyo | 23125 | 2022-08-25 |\n| 237 | Tokyo | 18409 | 2022-08-26 |\n| 238 | Tokyo | 17119 | 2022-08-27 |\n| 239 | Tokyo | 15825 | 2022-08-28 |\n| 240 | Tokyo | 9876 | 2022-08-29 |\n| 241 | Tokyo | 14211 | 2022-08-30 |\n| 242 | Tokyo | 15423 | 2022-08-31 |\n| 243 | Tokyo | 14449 | 2022-09-01 |\n| 244 | Tokyo | 12400 | 2022-09-02 |\n| 245 | Tokyo | 12554 | 2022-09-03 |\n| 246 | Tokyo | 9633 | 2022-09-04 |\n| 247 | Tokyo | 7291 | 2022-09-05 |\n| 248 | Tokyo | 9483 | 2022-09-06 |\n| 249 | Tokyo | 13554 | 2022-09-07 |\n| 250 | Tokyo | 10638 | 2022-09-08 |\n| 251 | Tokyo | 9234 | 2022-09-09 |\n| 252 | Tokyo | 9988 | 2022-09-10 |\n| 253 | Tokyo | 7744 | 2022-09-11 |\n| 254 | Tokyo | 5648 | 2022-09-12 |\n| 255 | Tokyo | 8846 | 2022-09-13 |\n| 256 | Tokyo | 10592 | 2022-09-14 |\n| 257 | Tokyo | 8821 | 2022-09-15 |\n| 258 | Tokyo | 8632 | 2022-09-16 |\n| 259 | Tokyo | 8016 | 2022-09-17 |\n| 260 | Tokyo | 8077 | 2022-09-18 |\n| 261 | Tokyo | 4066 | 2022-09-19 |\n| 262 | Tokyo | 3801 | 2022-09-20 |\n| 263 | Tokyo | 7066 | 2022-09-21 |\n| 264 | Tokyo | 8860 | 2022-09-22 |\n| 265 | Tokyo | 7561 | 2022-09-23 |\n| 266 | Tokyo | 4885 | 2022-09-24 |\n| 267 | Tokyo | 5706 | 2022-09-25 |\n| 268 | Tokyo | 6314 | 2022-09-26 |\n| 269 | Tokyo | 5247 | 2022-09-27 |\n| 270 | Tokyo | 5327 | 2022-09-28 |\n| 271 | Tokyo | 5032 | 2022-09-29 |\n| 272 | Tokyo | 4558 | 2022-09-30 |\n| 273 | Tokyo | 3834 | 2022-10-01 |\n| 274 | Tokyo | 2922 | 2022-10-02 |\n| 275 | Tokyo | 1673 | 2022-10-03 |\n| 276 | Tokyo | 4310 | 2022-10-04 |\n| 277 | Tokyo | 4067 | 2022-10-05 |\n| 278 | Tokyo | 3580 | 2022-10-06 |\n| 279 | Tokyo | 3016 | 2022-10-07 |\n| 280 | Tokyo | 2605 | 2022-10-08 |\n| 281 | Tokyo | 2242 | 2022-10-09 |\n| 282 | Tokyo | 1372 | 2022-10-10 |\n| 283 | Tokyo | 1504 | 2022-10-11 |\n| 284 | Tokyo | 4790 | 2022-10-12 |\n| 285 | Tokyo | 4338 | 2022-10-13 |\n| 286 | Tokyo | 3495 | 2022-10-14 |\n| 287 | Tokyo | 3239 | 2022-10-15 |\n| 288 | Tokyo | 2714 | 2022-10-16 |\n| 289 | Tokyo | 1588 | 2022-10-17 |\n| 290 | Tokyo | 4213 | 2022-10-18 |\n| 291 | Tokyo | 4204 | 2022-10-19 |\n| 292 | Tokyo | 3489 | 2022-10-20 |\n| 293 | Tokyo | 2840 | 2022-10-21 |\n| 294 | Tokyo | 3231 | 2022-10-22 |\n| 295 | Tokyo | 2805 | 2022-10-23 |\n| 296 | Tokyo | 1735 | 2022-10-24 |\n| 297 | Tokyo | 4702 | 2022-10-25 |\n| 298 | Tokyo | 4347 | 2022-10-26 |\n| 299 | Tokyo | 3941 | 2022-10-27 |\n| 300 | Tokyo | 3520 | 2022-10-28 |\n| 301 | Tokyo | 4121 | 2022-10-29 |\n| 302 | Tokyo | 3687 | 2022-10-30 |\n| 303 | Tokyo | 2019 | 2022-10-31 |\n| 304 | Tokyo | 6520 | 2022-11-01 |\n| 305 | Tokyo | 6346 | 2022-11-02 |\n| 306 | Tokyo | 6686 | 2022-11-03 |\n| 307 | Tokyo | 3090 | 2022-11-04 |\n| 308 | Tokyo | 7967 | 2022-11-05 |\n| 309 | Tokyo | 6264 | 2022-11-06 |\n| 310 | Tokyo | 3489 | 2022-11-07 |\n| 311 | Tokyo | 8665 | 2022-11-08 |\n| 312 | Tokyo | 9012 | 2022-11-09 |\n| 313 | Tokyo | 7969 | 2022-11-10 |\n| 314 | Tokyo | 7899 | 2022-11-11 |\n| 315 | Tokyo | 8021 | 2022-11-12 |\n| 316 | Tokyo | 6922 | 2022-11-13 |\n| 317 | Tokyo | 4025 | 2022-11-14 |\n| 318 | Tokyo | 11196 | 2022-11-15 |\n| 319 | Tokyo | 10114 | 2022-11-16 |\n| 320 | Tokyo | 9755 | 2022-11-17 |\n| 321 | Tokyo | 8292 | 2022-11-18 |\n| 322 | Tokyo | 9457 | 2022-11-19 |\n| 323 | Tokyo | 7777 | 2022-11-20 |\n| 324 | Tokyo | 4619 | 2022-11-21 |\n| 325 | Tokyo | 12758 | 2022-11-22 |\n| 326 | Tokyo | 12850 | 2022-11-23 |\n| 327 | Tokyo | 5639 | 2022-11-24 |\n| 328 | Tokyo | 12938 | 2022-11-25 |\n| 329 | Tokyo | 13569 | 2022-11-26 |\n| 330 | Tokyo | 10346 | 2022-11-27 |\n| 331 | Tokyo | 5767 | 2022-11-28 |\n| 332 | Tokyo | 14680 | 2022-11-29 |\n| 333 | Tokyo | 14399 | 2022-11-30 |\n| 334 | Tokyo | 12332 | 2022-12-01 |\n| 335 | Tokyo | 11244 | 2022-12-02 |\n| 336 | Tokyo | 13321 | 2022-12-03 |\n| 337 | Tokyo | 10454 | 2022-12-04 |\n| 338 | Tokyo | 5388 | 2022-12-05 |\n| 339 | Tokyo | 15501 | 2022-12-06 |\n| 340 | Tokyo | 14946 | 2022-12-07 |\n| 341 | Tokyo | 14104 | 2022-12-08 |\n| 342 | Tokyo | 13556 | 2022-12-09 |\n| 343 | Tokyo | 14558 | 2022-12-10 |\n| 344 | Tokyo | 12163 | 2022-12-11 |\n| 345 | Tokyo | 7044 | 2022-12-12 |\n| 346 | Tokyo | 19800 | 2022-12-13 |\n| 347 | Tokyo | 18812 | 2022-12-14 |\n| 348 | Tokyo | 17687 | 2022-12-15 |\n| 349 | Tokyo | 16273 | 2022-12-16 |\n| 350 | Tokyo | 17020 | 2022-12-17 |\n| 351 | Tokyo | 13646 | 2022-12-18 |\n| 352 | Tokyo | 7949 | 2022-12-19 |\n| 353 | Tokyo | 20513 | 2022-12-20 |\n| 354 | Tokyo | 21186 | 2022-12-21 |\n| 355 | Tokyo | 18820 | 2022-12-22 |\n| 356 | Tokyo | 17332 | 2022-12-23 |\n| 357 | Tokyo | 18731 | 2022-12-24 |\n| 358 | Tokyo | 15403 | 2022-12-25 |\n| 359 | Tokyo | 8428 | 2022-12-26 |\n| 360 | Tokyo | 22063 | 2022-12-27 |\n| 361 | Tokyo | 20243 | 2022-12-28 |\n| 362 | Tokyo | 18372 | 2022-12-29 |\n| 363 | Tokyo | 14525 | 2022-12-30 |\n| 364 | Tokyo | 11189 | 2022-12-31 |\n| 365 | Tokyo | 9186 | 2023-01-01 |\n| 366 | Tokyo | 7537 | 2023-01-02 |\n| 367 | Tokyo | 9628 | 2023-01-03 |\n| 368 | Tokyo | 10554 | 2023-01-04 |\n| 369 | Tokyo | 20735 | 2023-01-05 |\n| 370 | Tokyo | 20720 | 2023-01-06 |\n| 371 | Tokyo | 19630 | 2023-01-07 |\n| 372 | Tokyo | 15124 | 2023-01-08 |\n| 373 | Tokyo | 8199 | 2023-01-09 |\n| 374 | Tokyo | 7462 | 2023-01-10 |\n| 375 | Tokyo | 16772 | 2023-01-11 |\n| 376 | Tokyo | 13427 | 2023-01-12 |\n| 377 | Tokyo | 11241 | 2023-01-13 |\n| 378 | Tokyo | 10727 | 2023-01-14 |\n| 379 | Tokyo | 8269 | 2023-01-15 |\n| 380 | Tokyo | 4433 | 2023-01-16 |\n| 381 | Tokyo | 11120 | 2023-01-17 |\n| 382 | Tokyo | 9187 | 2023-01-18 |\n| 383 | Tokyo | 7719 | 2023-01-19 |\n| 384 | Tokyo | 6603 | 2023-01-20 |\n| 385 | Tokyo | 6607 | 2023-01-21 |\n| 386 | Tokyo | 5110 | 2023-01-22 |\n| 387 | Tokyo | 2677 | 2023-01-23 |\n| 388 | Tokyo | 7306 | 2023-01-24 |\n| 389 | Tokyo | 5934 | 2023-01-25 |\n| 390 | Tokyo | 5061 | 2023-01-26 |\n| 391 | Tokyo | 4297 | 2023-01-27 |\n| 392 | Tokyo | 4515 | 2023-01-28 |\n| 393 | Tokyo | 3427 | 2023-01-29 |\n| 394 | Tokyo | 1818 | 2023-01-30 |\n| 395 | Tokyo | 4862 | 2023-01-31 |\n| 396 | Tokyo | 4012 | 2023-02-01 |\n| 397 | Tokyo | 3502 | 2023-02-02 |\n| 398 | Tokyo | 2941 | 2023-02-03 |\n| 399 | Tokyo | 2992 | 2023-02-04 |\n| 400 | Tokyo | 2287 | 2023-02-05 |\n| 401 | Tokyo | 1105 | 2023-02-06 |\n| 402 | Tokyo | 3131 | 2023-02-07 |\n| 403 | Tokyo | 2612 | 2023-02-08 |\n| 404 | Tokyo | 2173 | 2023-02-09 |\n| 405 | Tokyo | 1922 | 2023-02-10 |\n| 406 | Tokyo | 1752 | 2023-02-11 |\n| 407 | Tokyo | 799 | 2023-02-12 |\n| 408 | Tokyo | 810 | 2023-02-13 |\n| 409 | Tokyo | 2232 | 2023-02-14 |\n| 410 | Tokyo | 1858 | 2023-02-15 |\n| 411 | Tokyo | 1454 | 2023-02-16 |\n| 412 | Tokyo | 1272 | 2023-02-17 |\n| 413 | Tokyo | 1146 | 2023-02-18 |\n| 414 | Tokyo | 992 | 2023-02-19 |\n| 415 | Tokyo | 510 | 2023-02-20 |\n| 416 | Tokyo | 1451 | 2023-02-21 |\n| 417 | Tokyo | 1195 | 2023-02-22 |\n| 418 | Tokyo | 1072 | 2023-02-23 |\n| 419 | Tokyo | 427 | 2023-02-24 |\n| 420 | Tokyo | 1182 | 2023-02-25 |\n| 421 | Tokyo | 810 | 2023-02-26 |\n| 422 | Tokyo | 370 | 2023-02-27 |\n| 423 | Tokyo | 1181 | 2023-02-28 |\n| 424 | Tokyo | 1028 | 2023-03-01 |\n| 425 | Tokyo | 952 | 2023-03-02 |\n| 426 | Tokyo | 736 | 2023-03-03 |\n| 427 | Tokyo | 795 | 2023-03-04 |\n| 428 | Tokyo | 705 | 2023-03-05 |\n| 429 | Tokyo | 335 | 2023-03-06 |\n| 430 | Tokyo | 989 | 2023-03-07 |\n| 431 | Tokyo | 926 | 2023-03-08 |\n| 432 | Tokyo | 794 | 2023-03-09 |\n| 433 | Tokyo | 778 | 2023-03-10 |\n| 434 | Tokyo | 805 | 2023-03-11 |\n| 435 | Tokyo | 606 | 2023-03-12 |\n| 436 | Tokyo | 313 | 2023-03-13 |\n| 437 | Tokyo | 988 | 2023-03-14 |\n| 438 | Tokyo | 816 | 2023-03-15 |\n| 439 | Tokyo | 680 | 2023-03-16 |\n| 440 | Tokyo | 631 | 2023-03-17 |\n| 441 | Tokyo | 627 | 2023-03-18 |\n| 442 | Tokyo | 549 | 2023-03-19 |\n| 443 | Tokyo | 270 | 2023-03-20 |\n| 444 | Tokyo | 877 | 2023-03-21 |\n| 445 | Tokyo | 373 | 2023-03-22 |\n| 446 | Tokyo | 908 | 2023-03-23 |\n| 447 | Tokyo | 893 | 2023-03-24 |\n| 448 | Tokyo | 863 | 2023-03-25 |\n| 449 | Tokyo | 667 | 2023-03-26 |\n| 450 | Tokyo | 355 | 2023-03-27 |\n| 451 | Tokyo | 1001 | 2023-03-28 |\n| 452 | Tokyo | 1002 | 2023-03-29 |\n| 453 | Tokyo | 956 | 2023-03-30 |\n| 454 | Tokyo | 854 | 2023-03-31 |\n| 455 | Tokyo | 991 | 2023-04-01 |\n| 456 | Tokyo | 789 | 2023-04-02 |\n| 457 | Tokyo | 420 | 2023-04-03 |\n| 458 | Tokyo | 1357 | 2023-04-04 |\n| 459 | Tokyo | 1204 | 2023-04-05 |\n| 460 | Tokyo | 1109 | 2023-04-06 |\n| 461 | Tokyo | 1133 | 2023-04-07 |\n| 462 | Tokyo | 1261 | 2023-04-08 |\n| 463 | Tokyo | 956 | 2023-04-09 |\n| 464 | Tokyo | 458 | 2023-04-10 |\n| 465 | Tokyo | 1490 | 2023-04-11 |\n| 466 | Tokyo | 1334 | 2023-04-12 |\n| 467 | Tokyo | 1181 | 2023-04-13 |\n| 468 | Tokyo | 1215 | 2023-04-14 |\n| 469 | Tokyo | 1197 | 2023-04-15 |\n| 470 | Tokyo | 891 | 2023-04-16 |\n| 471 | Tokyo | 474 | 2023-04-17 |\n| 472 | Tokyo | 1696 | 2023-04-18 |\n| 473 | Tokyo | 1514 | 2023-04-19 |\n| 474 | Tokyo | 1449 | 2023-04-20 |\n| 475 | Tokyo | 1441 | 2023-04-21 |\n| 476 | Tokyo | 1477 | 2023-04-22 |\n| 477 | Tokyo | 1138 | 2023-04-23 |\n| 478 | Tokyo | 571 | 2023-04-24 |\n| 479 | Tokyo | 1909 | 2023-04-25 |\n| 480 | Tokyo | 1745 | 2023-04-26 |\n| 481 | Tokyo | 1663 | 2023-04-27 |\n| 482 | Tokyo | 1613 | 2023-04-28 |\n| 483 | Tokyo | 1915 | 2023-04-29 |\n| 484 | Tokyo | 976 | 2023-04-30 |\n| 485 | Tokyo | 837 | 2023-05-01 |\n| 486 | Tokyo | 2604 | 2023-05-02 |\n| 487 | Tokyo | 2187 | 2023-05-03 |\n| 488 | Tokyo | 994 | 2023-05-04 |\n| 489 | Tokyo | 906 | 2023-05-05 |\n| 490 | Tokyo | 1062 | 2023-05-06 |\n| 491 | Tokyo | 2345 | 2023-05-07 |\n| 492 | Tokyo | 1331 | 2023-05-08 |', name='Genie', id='db1541ea-d841-43b8-97dc-6dfd1d9a343f', tool_calls=None, tool_call_id=None, attachments=None), ChatAgentMessage(role='assistant', content='東京の感染者数は、2022年の初めから急激に増加し、特に1月中旬から下旬にかけてピークを迎えました。その後、感染者数は減少し、春先には比較的低い水準に落ち着きました。しかし、夏に入ると再び感染者数が増加し、特に7月には高い数値を記録しました。秋にかけては再度減少傾向を見せましたが、冬に入ると再び感染者数が増加し、特に2023年1月には高い数値が続きました。\n\n全体として、東京の感染者数は季節ごとに変動があり、特に冬季に感染者数が増加する傾向が見られます。', name=None, id='run-6df6f195-1ed7-4f37-8210-503448e5964f-0', tool_calls=None, tool_call_id=None, attachments=None)], finish_reason=None, custom_outputs=None, usage=None)
MLflow Tracingでエージェントの挙動を確認できます。
中ではLangGraphを使っているので、グラフを可視化します。
from IPython.display import Image, display
from langchain_core.runnables.graph import CurveStyle, MermaidDrawMethod, NodeStyles
display(
Image(
AGENT.agent.get_graph().draw_mermaid_png(
draw_method=MermaidDrawMethod.API,
)
)
)
ストリーミングも試します。
for event in AGENT.predict_stream(input_example):
print(event, "-----------\n")
delta=ChatAgentMessage(role='assistant', content='| | date_timestamp | total_cases |\n|----:|:-----------------|--------------:|\n| 0 | 2022-01-01 | 78 |\n| 1 | 2022-01-02 | 82 |\n| 2 | 2022-01-03 | 103 |\n| 3 | 2022-01-04 | 151 |\n| 4 | 2022-01-05 | 388 |\n| 5 | 2022-01-06 | 640 |\n| 6 | 2022-01-07 | 920 |\n| 7 | 2022-01-08 | 1223 |\n| 8 | 2022-01-09 | 1223 |\n| 9 | 2022-01-10 | 871 |\n| 10 | 2022-01-11 | 959 |\n| 11 | 2022-01-12 | 2196 |\n| 12 | 2022-01-13 | 3121 |\n| 13 | 2022-01-14 | 4055 |\n| 14 | 2022-01-15 | 4559 |\n| 15 | 2022-01-16 | 4166 |\n| 16 | 2022-01-17 | 3713 |\n| 17 | 2022-01-18 | 5181 |\n| 18 | 2022-01-19 | 7366 |\n| 19 | 2022-01-20 | 8634 |\n| 20 | 2022-01-21 | 9695 |\n| 21 | 2022-01-22 | 11217 |\n| 22 | 2022-01-23 | 9460 |\n| 23 | 2022-01-24 | 8493 |\n| 24 | 2022-01-25 | 12797 |\n| 25 | 2022-01-26 | 14077 |\n| 26 | 2022-01-27 | 16525 |\n| 27 | 2022-01-28 | 17610 |\n| 28 | 2022-01-29 | 17424 |\n| 29 | 2022-01-30 | 15893 |\n| 30 | 2022-01-31 | 11743 |\n| 31 | 2022-02-01 | 14432 |\n| 32 | 2022-02-02 | 21562 |\n| 33 | 2022-02-03 | 20663 |\n| 34 | 2022-02-04 | 19788 |\n| 35 | 2022-02-05 | 21110 |\n| 36 | 2022-02-06 | 17519 |\n| 37 | 2022-02-07 | 12194 |\n| 38 | 2022-02-08 | 17100 |\n| 39 | 2022-02-09 | 18275 |\n| 40 | 2022-02-10 | 18888 |\n| 41 | 2022-02-11 | 18648 |\n| 42 | 2022-02-12 | 11755 |\n| 43 | 2022-02-13 | 13061 |\n| 44 | 2022-02-14 | 10330 |\n| 45 | 2022-02-15 | 15515 |\n| 46 | 2022-02-16 | 17325 |\n| 47 | 2022-02-17 | 17856 |\n| 48 | 2022-02-18 | 16122 |\n| 49 | 2022-02-19 | 13509 |\n| 50 | 2022-02-20 | 12933 |\n| 51 | 2022-02-21 | 8801 |\n| 52 | 2022-02-22 | 11439 |\n| 53 | 2022-02-23 | 14559 |\n| 54 | 2022-02-24 | 10163 |\n| 55 | 2022-02-25 | 11123 |\n| 56 | 2022-02-26 | 11558 |\n| 57 | 2022-02-27 | 10314 |\n| 58 | 2022-02-28 | 9629 |\n| 59 | 2022-03-01 | 11802 |\n| 60 | 2022-03-02 | 12690 |\n| 61 | 2022-03-03 | 12246 |\n| 62 | 2022-03-04 | 10515 |\n| 63 | 2022-03-05 | 10804 |\n| 64 | 2022-03-06 | 9282 |\n| 65 | 2022-03-07 | 5370 |\n| 66 | 2022-03-08 | 8919 |\n| 67 | 2022-03-09 | 10812 |\n| 68 | 2022-03-10 | 10077 |\n| 69 | 2022-03-11 | 8456 |\n| 70 | 2022-03-12 | 9164 |\n| 71 | 2022-03-13 | 8127 |\n| 72 | 2022-03-14 | 4831 |\n| 73 | 2022-03-15 | 7831 |\n| 74 | 2022-03-16 | 10220 |\n| 75 | 2022-03-17 | 8456 |\n| 76 | 2022-03-18 | 7825 |\n| 77 | 2022-03-19 | 7441 |\n| 78 | 2022-03-20 | 6497 |\n| 79 | 2022-03-21 | 3853 |\n| 80 | 2022-03-22 | 3532 |\n| 81 | 2022-03-23 | 6426 |\n| 82 | 2022-03-24 | 8869 |\n| 83 | 2022-03-25 | 7284 |\n| 84 | 2022-03-26 | 7440 |\n| 85 | 2022-03-27 | 7843 |\n| 86 | 2022-03-28 | 4542 |\n| 87 | 2022-03-29 | 7846 |\n| 88 | 2022-03-30 | 9518 |\n| 89 | 2022-03-31 | 8220 |\n| 90 | 2022-04-01 | 7978 |\n| 91 | 2022-04-02 | 7390 |\n| 92 | 2022-04-03 | 7896 |\n| 93 | 2022-04-04 | 4382 |\n| 94 | 2022-04-05 | 6967 |\n| 95 | 2022-04-06 | 8650 |\n| 96 | 2022-04-07 | 8750 |\n| 97 | 2022-04-08 | 8110 |\n| 98 | 2022-04-09 | 8098 |\n| 99 | 2022-04-10 | 8024 |\n| 100 | 2022-04-11 | 4557 |\n| 101 | 2022-04-12 | 6920 |\n| 102 | 2022-04-13 | 8248 |\n| 103 | 2022-04-14 | 8535 |\n| 104 | 2022-04-15 | 6761 |\n| 105 | 2022-04-16 | 6794 |\n| 106 | 2022-04-17 | 5219 |\n| 107 | 2022-04-18 | 3477 |\n| 108 | 2022-04-19 | 5581 |\n| 109 | 2022-04-20 | 6771 |\n| 110 | 2022-04-21 | 6710 |\n| 111 | 2022-04-22 | 5393 |\n| 112 | 2022-04-23 | 5386 |\n| 113 | 2022-04-24 | 4935 |\n| 114 | 2022-04-25 | 3136 |\n| 115 | 2022-04-26 | 5042 |\n| 116 | 2022-04-27 | 6049 |\n| 117 | 2022-04-28 | 5392 |\n| 118 | 2022-04-29 | 3892 |\n| 119 | 2022-04-30 | 2978 |\n| 120 | 2022-05-01 | 3157 |\n| 121 | 2022-05-02 | 2397 |\n| 122 | 2022-05-03 | 3349 |\n| 123 | 2022-05-04 | 2997 |\n| 124 | 2022-05-05 | 2317 |\n| 125 | 2022-05-06 | 2678 |\n| 126 | 2022-05-07 | 3802 |\n| 127 | 2022-05-08 | 4709 |\n| 128 | 2022-05-09 | 3011 |\n| 129 | 2022-05-10 | 4447 |\n| 130 | 2022-05-11 | 4761 |\n| 131 | 2022-05-12 | 4214 |\n| 132 | 2022-05-13 | 4103 |\n| 133 | 2022-05-14 | 3798 |\n| 134 | 2022-05-15 | 3348 |\n| 135 | 2022-05-16 | 2374 |\n| 136 | 2022-05-17 | 3662 |\n| 137 | 2022-05-18 | 4353 |\n| 138 | 2022-05-19 | 4170 |\n| 139 | 2022-05-20 | 3571 |\n| 140 | 2022-05-21 | 3462 |\n| 141 | 2022-05-22 | 3313 |\n| 142 | 2022-05-23 | 2023 |\n| 143 | 2022-05-24 | 3268 |\n| 144 | 2022-05-25 | 3924 |\n| 145 | 2022-05-26 | 3388 |\n| 146 | 2022-05-27 | 2629 |\n| 147 | 2022-05-28 | 2549 |\n| 148 | 2022-05-29 | 2192 |\n| 149 | 2022-05-30 | 1342 |\n| 150 | 2022-05-31 | 2356 |\n| 151 | 2022-06-01 | 2412 |\n| 152 | 2022-06-02 | 2333 |\n| 153 | 2022-06-03 | 2109 |\n| 154 | 2022-06-04 | 2071 |\n| 155 | 2022-06-05 | 1583 |\n| 156 | 2022-06-06 | 1012 |\n| 157 | 2022-06-07 | 1797 |\n| 158 | 2022-06-08 | 1934 |\n| 159 | 2022-06-09 | 1874 |\n| 160 | 2022-06-10 | 1597 |\n| 161 | 2022-06-11 | 1524 |\n| 162 | 2022-06-12 | 1544 |\n| 163 | 2022-06-13 | 958 |\n| 164 | 2022-06-14 | 1527 |\n| 165 | 2022-06-15 | 2014 |\n| 166 | 2022-06-16 | 1815 |\n| 167 | 2022-06-17 | 1591 |\n| 168 | 2022-06-18 | 1681 |\n| 169 | 2022-06-19 | 1621 |\n| 170 | 2022-06-20 | 1076 |\n| 171 | 2022-06-21 | 1959 |\n| 172 | 2022-06-22 | 2325 |\n| 173 | 2022-06-23 | 2409 |\n| 174 | 2022-06-24 | 2181 |\n| 175 | 2022-06-25 | 2159 |\n| 176 | 2022-06-26 | 2004 |\n| 177 | 2022-06-27 | 1514 |\n| 178 | 2022-06-28 | 2509 |\n| 179 | 2022-06-29 | 3802 |\n| 180 | 2022-06-30 | 3621 |\n| 181 | 2022-07-01 | 3545 |\n| 182 | 2022-07-02 | 3615 |\n| 183 | 2022-07-03 | 3788 |\n| 184 | 2022-07-04 | 2772 |\n| 185 | 2022-07-05 | 5301 |\n| 186 | 2022-07-06 | 8338 |\n| 187 | 2022-07-07 | 8523 |\n| 188 | 2022-07-08 | 8775 |\n| 189 | 2022-07-09 | 9714 |\n| 190 | 2022-07-10 | 9481 |\n| 191 | 2022-07-11 | 6228 |\n| 192 | 2022-07-12 | 11508 |\n| 193 | 2022-07-13 | 16875 |\n| 194 | 2022-07-14 | 16657 |\n| 195 | 2022-07-15 | 19055 |\n| 196 | 2022-07-16 | 18912 |\n| 197 | 2022-07-17 | 17786 |\n| 198 | 2022-07-18 | 12691 |\n| 199 | 2022-07-19 | 11009 |\n| 200 | 2022-07-20 | 20385 |\n| 201 | 2022-07-21 | 31855 |\n| 202 | 2022-07-22 | 34968 |\n| 203 | 2022-07-23 | 32683 |\n| 204 | 2022-07-24 | 28096 |\n| 205 | 2022-07-25 | 22377 |\n| 206 | 2022-07-26 | 31580 |\n| 207 | 2022-07-27 | 29030 |\n| 208 | 2022-07-28 | 40395 |\n| 209 | 2022-07-29 | 36804 |\n| 210 | 2022-07-30 | 33450 |\n| 211 | 2022-07-31 | 31532 |\n| 212 | 2022-08-01 | 21947 |\n| 213 | 2022-08-02 | 30827 |\n| 214 | 2022-08-03 | 38923 |\n| 215 | 2022-08-04 | 35329 |\n| 216 | 2022-08-05 | 37752 |\n| 217 | 2022-08-06 | 30956 |\n| 218 | 2022-08-07 | 26299 |\n| 219 | 2022-08-08 | 17872 |\n| 220 | 2022-08-09 | 29103 |\n| 221 | 2022-08-10 | 34234 |\n| 222 | 2022-08-11 | 31242 |\n| 223 | 2022-08-12 | 20396 |\n| 224 | 2022-08-13 | 23762 |\n| 225 | 2022-08-14 | 22721 |\n| 226 | 2022-08-15 | 23094 |\n| 227 | 2022-08-16 | 23427 |\n| 228 | 2022-08-17 | 29274 |\n| 229 | 2022-08-18 | 27301 |\n| 230 | 2022-08-19 | 27515 |\n| 231 | 2022-08-20 | 25140 |\n| 232 | 2022-08-21 | 24515 |\n| 233 | 2022-08-22 | 14802 |\n| 234 | 2022-08-23 | 21767 |\n| 235 | 2022-08-24 | 25435 |\n| 236 | 2022-08-25 | 23125 |\n| 237 | 2022-08-26 | 18409 |\n| 238 | 2022-08-27 | 17119 |\n| 239 | 2022-08-28 | 15825 |\n| 240 | 2022-08-29 | 9876 |\n| 241 | 2022-08-30 | 14211 |\n| 242 | 2022-08-31 | 15423 |\n| 243 | 2022-09-01 | 14449 |\n| 244 | 2022-09-02 | 12400 |\n| 245 | 2022-09-03 | 12554 |\n| 246 | 2022-09-04 | 9633 |\n| 247 | 2022-09-05 | 7291 |\n| 248 | 2022-09-06 | 9483 |\n| 249 | 2022-09-07 | 13554 |\n| 250 | 2022-09-08 | 10638 |\n| 251 | 2022-09-09 | 9234 |\n| 252 | 2022-09-10 | 9988 |\n| 253 | 2022-09-11 | 7744 |\n| 254 | 2022-09-12 | 5648 |\n| 255 | 2022-09-13 | 8846 |\n| 256 | 2022-09-14 | 10592 |\n| 257 | 2022-09-15 | 8821 |\n| 258 | 2022-09-16 | 8632 |\n| 259 | 2022-09-17 | 8016 |\n| 260 | 2022-09-18 | 8077 |\n| 261 | 2022-09-19 | 4066 |\n| 262 | 2022-09-20 | 3801 |\n| 263 | 2022-09-21 | 7066 |\n| 264 | 2022-09-22 | 8860 |\n| 265 | 2022-09-23 | 7561 |\n| 266 | 2022-09-24 | 4885 |\n| 267 | 2022-09-25 | 5706 |\n| 268 | 2022-09-26 | 6314 |\n| 269 | 2022-09-27 | 5247 |\n| 270 | 2022-09-28 | 5327 |\n| 271 | 2022-09-29 | 5032 |\n| 272 | 2022-09-30 | 4558 |\n| 273 | 2022-10-01 | 3834 |\n| 274 | 2022-10-02 | 2922 |\n| 275 | 2022-10-03 | 1673 |\n| 276 | 2022-10-04 | 4310 |\n| 277 | 2022-10-05 | 4067 |\n| 278 | 2022-10-06 | 3580 |\n| 279 | 2022-10-07 | 3016 |\n| 280 | 2022-10-08 | 2605 |\n| 281 | 2022-10-09 | 2242 |\n| 282 | 2022-10-10 | 1372 |\n| 283 | 2022-10-11 | 1504 |\n| 284 | 2022-10-12 | 4790 |\n| 285 | 2022-10-13 | 4338 |\n| 286 | 2022-10-14 | 3495 |\n| 287 | 2022-10-15 | 3239 |\n| 288 | 2022-10-16 | 2714 |\n| 289 | 2022-10-17 | 1588 |\n| 290 | 2022-10-18 | 4213 |\n| 291 | 2022-10-19 | 4204 |\n| 292 | 2022-10-20 | 3489 |\n| 293 | 2022-10-21 | 2840 |\n| 294 | 2022-10-22 | 3231 |\n| 295 | 2022-10-23 | 2805 |\n| 296 | 2022-10-24 | 1735 |\n| 297 | 2022-10-25 | 4702 |\n| 298 | 2022-10-26 | 4347 |\n| 299 | 2022-10-27 | 3941 |\n| 300 | 2022-10-28 | 3520 |\n| 301 | 2022-10-29 | 4121 |\n| 302 | 2022-10-30 | 3687 |\n| 303 | 2022-10-31 | 2019 |\n| 304 | 2022-11-01 | 6520 |\n| 305 | 2022-11-02 | 6346 |\n| 306 | 2022-11-03 | 6686 |\n| 307 | 2022-11-04 | 3090 |\n| 308 | 2022-11-05 | 7967 |\n| 309 | 2022-11-06 | 6264 |\n| 310 | 2022-11-07 | 3489 |\n| 311 | 2022-11-08 | 8665 |\n| 312 | 2022-11-09 | 9012 |\n| 313 | 2022-11-10 | 7969 |\n| 314 | 2022-11-11 | 7899 |\n| 315 | 2022-11-12 | 8021 |\n| 316 | 2022-11-13 | 6922 |\n| 317 | 2022-11-14 | 4025 |\n| 318 | 2022-11-15 | 11196 |\n| 319 | 2022-11-16 | 10114 |\n| 320 | 2022-11-17 | 9755 |\n| 321 | 2022-11-18 | 8292 |\n| 322 | 2022-11-19 | 9457 |\n| 323 | 2022-11-20 | 7777 |\n| 324 | 2022-11-21 | 4619 |\n| 325 | 2022-11-22 | 12758 |\n| 326 | 2022-11-23 | 12850 |\n| 327 | 2022-11-24 | 5639 |\n| 328 | 2022-11-25 | 12938 |\n| 329 | 2022-11-26 | 13569 |\n| 330 | 2022-11-27 | 10346 |\n| 331 | 2022-11-28 | 5767 |\n| 332 | 2022-11-29 | 14680 |\n| 333 | 2022-11-30 | 14399 |\n| 334 | 2022-12-01 | 12332 |\n| 335 | 2022-12-02 | 11244 |\n| 336 | 2022-12-03 | 13321 |\n| 337 | 2022-12-04 | 10454 |\n| 338 | 2022-12-05 | 5388 |\n| 339 | 2022-12-06 | 15501 |\n| 340 | 2022-12-07 | 14946 |\n| 341 | 2022-12-08 | 14104 |\n| 342 | 2022-12-09 | 13556 |\n| 343 | 2022-12-10 | 14558 |\n| 344 | 2022-12-11 | 12163 |\n| 345 | 2022-12-12 | 7044 |\n| 346 | 2022-12-13 | 19800 |\n| 347 | 2022-12-14 | 18812 |\n| 348 | 2022-12-15 | 17687 |\n| 349 | 2022-12-16 | 16273 |\n| 350 | 2022-12-17 | 17020 |\n| 351 | 2022-12-18 | 13646 |\n| 352 | 2022-12-19 | 7949 |\n| 353 | 2022-12-20 | 20513 |\n| 354 | 2022-12-21 | 21186 |\n| 355 | 2022-12-22 | 18820 |\n| 356 | 2022-12-23 | 17332 |\n| 357 | 2022-12-24 | 18731 |\n| 358 | 2022-12-25 | 15403 |\n| 359 | 2022-12-26 | 8428 |\n| 360 | 2022-12-27 | 22063 |\n| 361 | 2022-12-28 | 20243 |\n| 362 | 2022-12-29 | 18372 |\n| 363 | 2022-12-30 | 14525 |\n| 364 | 2022-12-31 | 11189 |\n| 365 | 2023-01-01 | 9186 |\n| 366 | 2023-01-02 | 7537 |\n| 367 | 2023-01-03 | 9628 |\n| 368 | 2023-01-04 | 10554 |\n| 369 | 2023-01-05 | 20735 |\n| 370 | 2023-01-06 | 20720 |\n| 371 | 2023-01-07 | 19630 |\n| 372 | 2023-01-08 | 15124 |\n| 373 | 2023-01-09 | 8199 |\n| 374 | 2023-01-10 | 7462 |\n| 375 | 2023-01-11 | 16772 |\n| 376 | 2023-01-12 | 13427 |\n| 377 | 2023-01-13 | 11241 |\n| 378 | 2023-01-14 | 10727 |\n| 379 | 2023-01-15 | 8269 |\n| 380 | 2023-01-16 | 4433 |\n| 381 | 2023-01-17 | 11120 |\n| 382 | 2023-01-18 | 9187 |\n| 383 | 2023-01-19 | 7719 |\n| 384 | 2023-01-20 | 6603 |\n| 385 | 2023-01-21 | 6607 |\n| 386 | 2023-01-22 | 5110 |\n| 387 | 2023-01-23 | 2677 |\n| 388 | 2023-01-24 | 7306 |\n| 389 | 2023-01-25 | 5934 |\n| 390 | 2023-01-26 | 5061 |\n| 391 | 2023-01-27 | 4297 |\n| 392 | 2023-01-28 | 4515 |\n| 393 | 2023-01-29 | 3427 |\n| 394 | 2023-01-30 | 1818 |\n| 395 | 2023-01-31 | 4862 |\n| 396 | 2023-02-01 | 4012 |\n| 397 | 2023-02-02 | 3502 |\n| 398 | 2023-02-03 | 2941 |\n| 399 | 2023-02-04 | 2992 |\n| 400 | 2023-02-05 | 2287 |\n| 401 | 2023-02-06 | 1105 |\n| 402 | 2023-02-07 | 3131 |\n| 403 | 2023-02-08 | 2612 |\n| 404 | 2023-02-09 | 2173 |\n| 405 | 2023-02-10 | 1922 |\n| 406 | 2023-02-11 | 1752 |\n| 407 | 2023-02-12 | 799 |\n| 408 | 2023-02-13 | 810 |\n| 409 | 2023-02-14 | 2232 |\n| 410 | 2023-02-15 | 1858 |\n| 411 | 2023-02-16 | 1454 |\n| 412 | 2023-02-17 | 1272 |\n| 413 | 2023-02-18 | 1146 |\n| 414 | 2023-02-19 | 992 |\n| 415 | 2023-02-20 | 510 |\n| 416 | 2023-02-21 | 1451 |\n| 417 | 2023-02-22 | 1195 |\n| 418 | 2023-02-23 | 1072 |\n| 419 | 2023-02-24 | 427 |\n| 420 | 2023-02-25 | 1182 |\n| 421 | 2023-02-26 | 810 |\n| 422 | 2023-02-27 | 370 |\n| 423 | 2023-02-28 | 1181 |\n| 424 | 2023-03-01 | 1028 |\n| 425 | 2023-03-02 | 952 |\n| 426 | 2023-03-03 | 736 |\n| 427 | 2023-03-04 | 795 |\n| 428 | 2023-03-05 | 705 |\n| 429 | 2023-03-06 | 335 |\n| 430 | 2023-03-07 | 989 |\n| 431 | 2023-03-08 | 926 |\n| 432 | 2023-03-09 | 794 |\n| 433 | 2023-03-10 | 778 |\n| 434 | 2023-03-11 | 805 |\n| 435 | 2023-03-12 | 606 |\n| 436 | 2023-03-13 | 313 |\n| 437 | 2023-03-14 | 988 |\n| 438 | 2023-03-15 | 816 |\n| 439 | 2023-03-16 | 680 |\n| 440 | 2023-03-17 | 631 |\n| 441 | 2023-03-18 | 627 |\n| 442 | 2023-03-19 | 549 |\n| 443 | 2023-03-20 | 270 |\n| 444 | 2023-03-21 | 877 |\n| 445 | 2023-03-22 | 373 |\n| 446 | 2023-03-23 | 908 |\n| 447 | 2023-03-24 | 893 |\n| 448 | 2023-03-25 | 863 |\n| 449 | 2023-03-26 | 667 |\n| 450 | 2023-03-27 | 355 |\n| 451 | 2023-03-28 | 1001 |\n| 452 | 2023-03-29 | 1002 |\n| 453 | 2023-03-30 | 956 |\n| 454 | 2023-03-31 | 854 |\n| 455 | 2023-04-01 | 991 |\n| 456 | 2023-04-02 | 789 |\n| 457 | 2023-04-03 | 420 |\n| 458 | 2023-04-04 | 1357 |\n| 459 | 2023-04-05 | 1204 |\n| 460 | 2023-04-06 | 1109 |\n| 461 | 2023-04-07 | 1133 |\n| 462 | 2023-04-08 | 1261 |\n| 463 | 2023-04-09 | 956 |\n| 464 | 2023-04-10 | 458 |\n| 465 | 2023-04-11 | 1490 |\n| 466 | 2023-04-12 | 1334 |\n| 467 | 2023-04-13 | 1181 |\n| 468 | 2023-04-14 | 1215 |\n| 469 | 2023-04-15 | 1197 |\n| 470 | 2023-04-16 | 891 |\n| 471 | 2023-04-17 | 474 |\n| 472 | 2023-04-18 | 1696 |\n| 473 | 2023-04-19 | 1514 |\n| 474 | 2023-04-20 | 1449 |\n| 475 | 2023-04-21 | 1441 |\n| 476 | 2023-04-22 | 1477 |\n| 477 | 2023-04-23 | 1138 |\n| 478 | 2023-04-24 | 571 |\n| 479 | 2023-04-25 | 1909 |\n| 480 | 2023-04-26 | 1745 |\n| 481 | 2023-04-27 | 1663 |\n| 482 | 2023-04-28 | 1613 |\n| 483 | 2023-04-29 | 1915 |\n| 484 | 2023-04-30 | 976 |\n| 485 | 2023-05-01 | 837 |\n| 486 | 2023-05-02 | 2604 |\n| 487 | 2023-05-03 | 2187 |\n| 488 | 2023-05-04 | 994 |\n| 489 | 2023-05-05 | 906 |\n| 490 | 2023-05-06 | 1062 |\n| 491 | 2023-05-07 | 2345 |\n| 492 | 2023-05-08 | 1331 |', name='Genie', id='4a271f0b-5a6e-4d01-8c71-41b4ba15ef13', tool_calls=None, tool_call_id=None, attachments=None) finish_reason=None custom_outputs=None usage=None -----------
delta=ChatAgentMessage(role='assistant', content='東京の感染者数の傾向は、2022年初頭から2023年にかけて大きな変動が見られます。特に2022年1月には感染者数が急増し、1月中旬には1日あたりの感染者数が1万人を超える日もありました。その後、感染者数は一時的に減少しましたが、夏にかけて再び増加し、特に7月には3万人を超える日もありました。\n\n2022年の秋から冬にかけては、感染者数が再び増加し、2023年1月には高い水準を維持していました。その後、感染者数は徐々に減少し、2023年4月には比較的低い水準に落ち着いています。\n\n全体として、東京の感染者数は季節や新たな変異株の影響を受けながら、波のように変動していることがわかります。', name=None, id='run-7a3db63b-fd27-4cd3-bb29-1999c4b8142c-0', tool_calls=None, tool_call_id=None, attachments=None) finish_reason=None custom_outputs=None usage=None -----------
エージェントをMLflowモデルとしてログに記録する
agent.py
ファイルからコードとしてエージェントをログに記録します。詳細はMLflow - Models from Codeを参照してください。
Databricksリソースの自動認証を有効にする
最も一般的なDatabricksリソースタイプに対して、Databricksはエージェントのログ記録時にリソース依存関係を事前に宣言することをサポートおよび推奨しています。これにより、エージェントをデプロイする際に自動認証パススルーが有効になります。自動認証パススルーを使用すると、Databricksはこれらのリソース依存関係に安全にアクセスするための短命の資格情報を自動的にプロビジョニング、回転、および管理します。
自動認証を有効にするには、mlflow.pyfunc.log_model()
を呼び出す際に依存するDatabricksリソースを指定します。
- TODO: Unity Catalogツールが[ベクター検索インデックス](docs link)をクエリする場合や[外部関数](docs link)を利用する場合は、それぞれ依存するベクター検索インデックスおよびUC接続オブジェクトをリソースとして含める必要があります。詳細はドキュメントを参照してください(AWS | Azure)。
Models from Codeでロギングします。
# デプロイ時に自動認証パススルーを指定するためのDatabricksリソースを決定
import mlflow
from agent import GENIE_SPACE_ID, LLM_ENDPOINT_NAME, tools
from databricks_langchain import UnityCatalogTool, VectorSearchRetrieverTool
from mlflow.models.resources import (
DatabricksFunction,
DatabricksGenieSpace,
DatabricksServingEndpoint,
)
# TODO: 必要に応じて基礎となるリソースを手動で含める。詳細は上記のマークダウンのTODOを参照。
resources = [
DatabricksServingEndpoint(endpoint_name=LLM_ENDPOINT_NAME),
DatabricksGenieSpace(genie_space_id=GENIE_SPACE_ID),
]
for tool in tools:
if isinstance(tool, VectorSearchRetrieverTool):
resources.extend(tool.resources)
elif isinstance(tool, UnityCatalogTool):
resources.append(DatabricksFunction(function_name=tool.uc_function_name))
with mlflow.start_run():
logged_agent_info = mlflow.pyfunc.log_model(
artifact_path="agent",
python_model="agent.py",
input_example=input_example,
pip_requirements=[
"mlflow",
"langgraph==0.3.4",
"databricks-langchain",
"pydantic",
],
resources=resources,
)
モデルが記録されます。
デプロイ前のエージェント検証
エージェントを登録およびデプロイする前に、mlflow.models.predict() APIを使用してデプロイ前のチェックを実行します。Databricksのドキュメントを参照してください(AWS | Azure)。
mlflow.models.predict(
model_uri=f"runs:/{logged_agent_info.run_id}/agent",
input_data=input_example,
env_manager="uv",
)
モデルをUnity Catalogに登録する
以下のcatalog
、schema
、およびmodel_name
を更新して、MLflowモデルをUnity Catalogに登録します。
mlflow.set_registry_uri("databricks-uc")
# TODO: UCモデルのカタログ、スキーマ、およびモデル名を定義する
catalog = "users"
schema = "takaaki_yayoi"
model_name = "genie"
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
)
UCにモデルが登録されました。
エージェントをデプロイする
上でdbutils.library.restartPython()
しているので、変数を再定義しています。
secret_scope_name = "demo-token-takaaki.yayoi"
secret_key_name = "pat"
from databricks import agents
agents.deploy(
UC_MODEL_NAME,
uc_registered_model_info.version,
tags={"endpointSource": "docs"},
environment_vars={
"DATABRICKS_GENIE_PAT": f"{{{{secrets/{secret_scope_name}/{secret_key_name}}}}}"
},
)
サービングエンドポイントにデプロイされました。
レビューアプリでも動作確認できます。
AI Playgroundでも動きます。
次のステップ
エージェントがデプロイされた後、AIプレイグラウンドでエージェントとチャットして追加のチェックを行ったり、組織内のSMEと共有してフィードバックを得たり、プロダクションアプリケーションに埋め込んだりすることができます。Databricksのドキュメントを参照してください(AWS | Azure)。