Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Protokollieren Sie KI-Agents mithilfe von Mosaik AI Agent Framework. Das Protokollieren eines Agents ist die Grundlage des Entwicklungsprozesses. Die Protokollierung erfasst einen "Zeitpunkt" des Codes und der Konfiguration des Agents, damit Sie die Qualität der Konfiguration auswerten können.
Requirements
Erstellen Sie einen KI-Agenten, bevor Sie ihn protokollieren.
Databricks empfiehlt, die neueste Version des databricks-sdkzu installieren.
% pip install databricks-sdk
Codebasierte Protokollierung
Databricks empfiehlt, bei der Protokollierung von Agenten die MLflow-Funktionalität Models from Code zu verwenden.
Bei diesem Ansatz wird der Code des Agents als Python-Datei erfasst, und die Python-Umgebung wird als Liste der Pakete erfasst. Wenn der Agent bereitgestellt wird, wird die Python-Umgebung wiederhergestellt, und der Code des Agents wird ausgeführt, um den Agent in den Arbeitsspeicher zu laden, damit er aufgerufen werden kann, wenn der Endpunkt aufgerufen wird.
Sie können diesen Ansatz mit der Verwendung von Validierungs-APIs vor der Bereitstellung wie mlflow.models.predict() koppeln, um sicherzustellen, dass der Agent zuverlässig ausgeführt wird, wenn er im Einsatz ist.
Ein Beispiel für die codebasierte Protokollierung finden Sie unter "ResponsesAgent authoring example notebooks".
Ableiten der Modellsignatur während der Protokollierung.
Note
Databricks empfiehlt, einen Agent mithilfe der ResponsesAgent-Schnittstelle zu erstellen. Wenn Sie ResponsesAgent verwenden, können Sie diesen Abschnitt überspringen. MLflow leitet automatisch eine gültige Signatur für Ihren Agent ab.
Wenn die ResponsesAgent Schnittstelle nicht verwendet wird, müssen Sie eine der folgenden Methoden verwenden, um die MLflow-Modellsignatur ihres Agents zur Protokollierungszeit anzugeben:
- Manuelles Definieren der Signatur
- Verwenden Sie die Modellsignatur-Inferencing-Funktionen von MLflow, um die Signatur des Agents basierend auf einem von Ihnen bereitgestellten Eingabebeispiel automatisch zu generieren. Dieser Ansatz ist praktischer als die manuelle Definition der Signatur.
Die MLflow-Modellsignatur überprüft Eingaben und Ausgaben, um sicherzustellen, dass der Agent ordnungsgemäß mit downstream-Tools wie AI Playground und der Prüf-App interagiert. Es führt auch andere Anwendungen dazu, wie der Agent effektiv verwendet werden kann.
Die LangChain und PyFunc Beispiele unten verwenden Modellsignatur-Ableitungen.
Wenn Sie zum Zeitpunkt der Protokollierung lieber selbst eine Modell-Signatur explizit definieren möchten, finden Sie Informationen dazu in MLflow-Dokumentation – So geht's: Modelle mit Signaturen protokollieren.
Code-basierte Protokollierung mit LangChain
Die folgenden Anweisungen und codebeispiele zeigen Ihnen, wie Sie einen Agent mit LangChain protokollieren.
Erstellen Sie ein Notizbuch oder eine Python-Datei mit Ihrem Code. In diesem Beispiel wird das Notizbuch oder die Datei
agent.pybenannt. Das Notizbuch oder die Datei muss einen LangChain-Agent enthalten, der hier alslc_agentbezeichnet wird.Schließen Sie mlflow.models.set_model(lc_agent) in das Notizbuch oder die Datei ein.
Erstellen Sie ein neues Notizbuch, das als Treibernotizbuch dienen soll (in diesem Beispiel
driver.pygenannt).Verwenden Sie im Treibernotizbuch den folgenden Code, um
agent.pyauszuführen und die Ergebnisse in einem MLflow-Modell zu protokollieren:mlflow.langchain.log_model(lc_model="/path/to/agent.py", resources=list_of_databricks_resources)Der
resources-Parameter deklariert databricks-verwaltete Ressourcen, die erforderlich sind, um den Agent zu bedienen, z. B. einen Vektorsuchindex oder einen Endpunkt, der einem Foundation-Modell dient. Weitere Informationen finden Sie unter Implementierung der automatischen Authentifizierungs-Pass-Through.Bereitstellen des Modells. Siehe Bereitstellen eines Agents für generative KI-Anwendungen.
Wenn die Bereitstellungsumgebung geladen wird,
agent.pywird sie ausgeführt.Wenn eine Dienstanforderung erhalten wird, wird
lc_agent.invoke(...)aufgerufen.
import mlflow
code_path = "/Workspace/Users/first.last/agent.py"
config_path = "/Workspace/Users/first.last/config.yml"
# Input example used by MLflow to infer Model Signature
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
# example using langchain
with mlflow.start_run():
logged_agent_info = mlflow.langchain.log_model(
lc_model=code_path,
model_config=config_path, # If you specify this parameter, this configuration is used by agent code. The development_config is overwritten.
artifact_path="agent", # This string is used as the path inside the MLflow model where artifacts are stored
input_example=input_example, # Must be a valid input to the agent
example_no_conversion=True, # Required
)
print(f"MLflow Run: {logged_agent_info.run_id}")
print(f"Model URI: {logged_agent_info.model_uri}")
# To verify that the model has been logged correctly, load the agent and call `invoke`:
model = mlflow.langchain.load_model(logged_agent_info.model_uri)
model.invoke(example)
Codebasierte Protokollierung mit PyFunc
Die folgenden Anweisungen und Codebeispiele zeigen Ihnen, wie Sie einen Agent mit PyFunc protokollieren.
Erstellen Sie ein Notizbuch oder eine Python-Datei mit Ihrem Code. In diesem Beispiel wird das Notizbuch oder die Datei
agent.pybenannt. Das Notizbuch oder die Datei muss eine PyFunc-Klasse mit dem NamenPyFuncClassenthalten.Fügen Sie
mlflow.models.set_model(PyFuncClass)zum Notizbuch oder zur Datei hinzu.Erstellen Sie ein neues Notizbuch, das als Treibernotizbuch dienen soll (in diesem Beispiel
driver.pygenannt).Verwenden Sie im Treibernotizbuch den folgenden Code, um
agent.pyauszuführen undlog_model()zu verwenden, um die Ergebnisse in einem MLflow-Modell zu protokollieren.mlflow.pyfunc.log_model(python_model="/path/to/agent.py", resources=list_of_databricks_resources)Der
resources-Parameter deklariert databricks-verwaltete Ressourcen, die erforderlich sind, um den Agent zu bedienen, z. B. einen Vektorsuchindex oder einen Endpunkt, der einem Foundation-Modell dient. Weitere Informationen finden Sie unter Implementierung der automatischen Authentifizierungs-Pass-Through.Bereitstellen des Modells. Siehe Bereitstellen eines Agents für generative KI-Anwendungen.
Wenn die Bereitstellungsumgebung geladen wird,
agent.pywird sie ausgeführt.Wenn eine Dienstanforderung erhalten wird, wird
PyFuncClass.predict(...)aufgerufen.
import mlflow
from mlflow.models.resources import (
DatabricksServingEndpoint,
DatabricksVectorSearchIndex,
)
code_path = "/Workspace/Users/first.last/agent.py"
config_path = "/Workspace/Users/first.last/config.yml"
# Input example used by MLflow to infer Model Signature
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
with mlflow.start_run():
logged_agent_info = mlflow.pyfunc.log_model(
python_model=agent_notebook_path,
artifact_path="agent",
input_example=input_example,
resources=resources_path,
example_no_conversion=True,
resources=[
DatabricksServingEndpoint(endpoint_name="databricks-meta-llama-3-3-70b-instruct"),
DatabricksVectorSearchIndex(index_name="prod.agents.databricks_docs_index"),
]
)
print(f"MLflow Run: {logged_agent_info.run_id}")
print(f"Model URI: {logged_agent_info.model_uri}")
# To verify that the model has been logged correctly, load the agent and call `invoke`:
model = mlflow.pyfunc.load_model(logged_agent_info.model_uri)
model.invoke(example)
Authentifizierung für Databricks-Ressourcen
KI-Agents müssen sich häufig bei anderen Ressourcen authentifizieren, um Aufgaben auszuführen. Beispielsweise muss ein bereitgestellter Agent möglicherweise auf einen Vektorsuchindex zugreifen, um unstrukturierte Daten abzufragen, oder auf die Aufforderungsregistrierung zugreifen, um dynamische Eingabeaufforderungen zu laden.
Die automatische Authentifizierungsdurchreichung und die Authentifizierung im Auftrag erfordern eine Konfiguration während der Protokollierung des Agents.
Registrieren des Agents im Unity-Katalog
Bevor Sie den Agent bereitstellen, müssen Sie den Agent im Unity-Katalog registrieren. Das Registrieren des Agents packt ihn als Modell in Unity Catalog. Daher können Sie Unity-Katalogberechtigungen für die Autorisierung für Ressourcen im Agent verwenden.
import mlflow
mlflow.set_registry_uri("databricks-uc")
catalog_name = "test_catalog"
schema_name = "schema"
model_name = "agent_name"
model_name = catalog_name + "." + schema_name + "." + model_name
uc_model_info = mlflow.register_model(model_uri=logged_agent_info.model_uri, name=model_name)
Siehe mlflow.register_model().