Erstellen eines KI-Agents und seiner Tools
Wichtig
Dieses Feature befindet sich in der Public Preview.
Dieser Artikel zeigt Ihnen, wie Sie mit dem Mosaic AI Agent Framework KI-Agenten und -Tools erstellen können.
Lernen Sie, wie Sie mit dem KI-Playground schnell Prototypen von Tool-Anruf-Agenten erstellen und diese in das Mosaic AI Agent Framework exportieren können.
Anforderungen
- Verstehen Sie die Konzepte von KI-Agents und -Tools, wie unter Was sind zusammengesetztes KI-System und KI-Agenten ? beschrieben
- Databricks empfiehlt, bei der Entwicklung von Agenten die aktuelle Version des MLflow-Python-Clients zu installieren. Informationen zu den
mlflow
Versionsanforderungen finden Sie unter Authentifizierung für abhängige Ressourcen.
Erstellen von KI-Agententools
KI-Agenten verwenden Werkzeuge, um neben der Spracherzeugung weitere Aktionen durchzuführen, z. B. um strukturierte oder unstrukturierte Daten abzurufen, Code auszuführen oder mit Remote-Diensten zu kommunizieren (z. B. eine E-Mail oder eine Slack-Nachricht zu senden).
Um einem Agenten mit Mosaic AI Agent Framework Tools zur Verfügung zu stellen, können Sie eine beliebige Kombination der folgenden Methoden verwenden:
- Erstellen oder Verwenden vorhandener Unity-Katalogfunktionen als Tools. Unity Catalog-Funktionen bieten einfache Ermittlungen, Governance und Freigabe sowie eine gute Funktion zum Anwenden von Transformationen und Aggregationen auf großen Datasets.
- Definieren Sie Tools lokal als Python-Funktionen im Agentcode. Dieser Ansatz ist in Situationen hilfreich, in denen Sie Aufrufe an REST-APIs ausführen, beliebigen Code oder Bibliotheken verwenden oder Tools mit sehr geringer Latenz ausführen müssen. Dieser Ansatz fehlt an der integrierten Auffindbarkeit und Governance, die von Unity Catalog-Funktionen bereitgestellt wird. Databricks empfiehlt, diesen Kompromiss abzuwägen, wenn Sie Ihren Agenten erstellen, um zu bestimmen, welcher Ansatz am besten geeignet ist.
Beide Ansätze funktionieren für Agents, die in benutzerdefiniertem Python-Code geschrieben wurden, oder verwenden sie eine Agent-Erstellungsbibliothek wie LangGraph.
Stellen Sie beim Definieren von Tools sicher, dass das Tool, seine Parameter und sein Rückgabewert dokumentiert sind, damit der Agent-LLM verstehen kann, wann und wie das Tool verwendet wird.
Erstellen von Agent-Tools mit Unity-Katalogfunktionen
In diesen Beispielen werden KI-Agent-Tools mithilfe von Unity Catalog-Funktionen erstellt, die in einer Notebook-Umgebung oder in einem SQL-Editor geschrieben wurden.
Führen Sie den folgenden Code in einer Notebook-Zelle aus. Es verwendet die %sql
Notebook-Magie, um eine Unity Catalog-Funktion namens python_exec
zu erstellen.
Ein LLM kann dieses Tool verwenden, um Python-Code auszuführen, der von einem Benutzer bereitgestellt wird.
%sql
CREATE OR REPLACE FUNCTION
main.default.python_exec (
code STRING COMMENT 'Python code to execute. Remember to print the final result to stdout.'
)
RETURNS STRING
LANGUAGE PYTHON
DETERMINISTIC
COMMENT 'Executes Python code in the sandboxed environment and returns its stdout. The runtime is stateless and you can not read output of the previous tool executions. i.e. No such variables "rows", "observation" defined. Calling another tool inside a Python code is NOT allowed. Use standard python libraries only.'
AS $$
import sys
from io import StringIO
sys_stdout = sys.stdout
redirected_output = StringIO()
sys.stdout = redirected_output
exec(code)
sys.stdout = sys_stdout
return redirected_output.getvalue()
$$
Führen Sie den folgenden Code im SQL-Editor aus.
Es erstellt eine Unity Catalog-Funktion mit dem Namen lookup_customer_info
, die ein LLM verwenden könnte, um strukturierte Daten aus einer hypothetischen customer_data
Tabelle abzurufen:
CREATE OR REPLACE FUNCTION main.default.lookup_customer_info(
customer_name STRING COMMENT 'Name of the customer whose info to look up'
)
RETURNS STRING
COMMENT 'Returns metadata about a particular customer given the customer name, including the customer email and ID. The
customer ID can be used for other queries.'
RETURN SELECT CONCAT(
'Customer ID: ', customer_id, ', ',
'Customer Email: ', customer_email
)
FROM main.default.customer_data
WHERE customer_name = customer_name
LIMIT 1;
Prototyp von Tool-Anruf-Agenten im KI-Playground
Nachdem Sie die Unity-Katalogfunktionen erstellt haben, können Sie den KI-Playground verwenden, um sie einem LLM zuzuweisen und den Agent zu testen. Der KI-Playground bietet einen Sandkasten zum Erproben der Prototypen von Tool-Anruf-Agents.
Wenn Sie mit dem KI-Agenten zufrieden sind, können Sie ihn exportieren, um ihn in Python weiterzuentwickeln, oder ihn unverändert als Model Serving-Endpunkt bereitstellen.
Hinweis
Unity Catalog und serverloses Computing, Mosaic AI Agent Framework und entweder Pay-per-Token-Foundation-Modelle oder externe Modelle müssen im aktuellen Arbeitsbereich verfügbar sein, um Agenten in KI-Playground zu prototypisieren.
So erstellen Sie einen Prototyp eines Endpunkts für Toolaufrufe.
Wählen Sie im Playground ein Modell mit der Bezeichnung für Funktionsaufrufe aus.
Wählen Sie Tools aus, und geben Sie im Dropdownmenü Ihre Unity-Katalog-Funktionsnamen an:
Chatten Sie, um die aktuelle Kombination aus LLM, Tools und Systemsansagen zu testen und Variationen auszuprobieren.
Exportieren und Bereitstellen von KI-Playground-Agenten
Nachdem Sie Tools hinzugefügt und den Agenten getestet haben, exportieren Sie den Playground-Agenten in Python-Notizbücher:
Klicken Sie auf Agent-Code exportieren, um Python-Notebooks zu generieren, die Ihnen beim Entwickeln und Bereitstellen des KI-Agenten helfen.
Nach dem Exportieren des Agentcodes werden drei Dateien in Ihrem Arbeitsbereich gespeichert:
agent
Notebook: Enthält Python-Code, der Ihren Agent mithilfe von LangChain definiert.driver
Notebook: Enthält Python-Code zum Protokollieren, Ablaufverfolgen, Registrieren und Bereitstellen des KI-Agents mithilfe von Mosaik AI Agent Framework.config.yml
: Enthält Konfigurationsinformationen zu Ihrem Agenten, einschließlich Tooldefinitionen.
Öffnen Sie das
agent
Notebook, um den LangChain-Code anzuzeigen, der Ihren Agent definiert, verwenden Sie dieses Notizbuch, um den Agent programmgesteuert zu testen und zu durchlaufen, z. B. das Definieren weiterer Tools oder das Anpassen der Parameter des Agenten.Hinweis
Der exportierte Code hat möglicherweise ein anderes Verhalten als Ihre KI-Playgroundsitzung. Databricks empfiehlt, die exportierten Notebooks zum Durchlaufen und Debuggen weiter auszuführen, die Agentenqualität auszuwerten und dann den Agenten für die Freigabe für andere bereitzustellen.
Wenn Sie mit den Ergebnissen des Agenten zufrieden sind, können Sie das
driver
Notebook ausführen, um den Agenten zu protokollieren und auf einem Model Serving-Endpunkt bereitzustellen.
Definieren eines Agents im Code
Neben der Generierung von Agentencode aus KI-Playground können Sie einen Agenten auch selbst in Code definieren, entweder mit Frameworks wie LangChain oder mit Python-Code. Um einen Agenten mit Agent Framework einzusetzen, muss seine Eingabe einem der unterstützten Eingabe- und Ausgabeformate entsprechen.
Verwenden von Parametern zum Konfigurieren des Agenten
Im Agent Framework können Sie Parameter verwenden, um zu steuern, wie Agents ausgeführt werden. Auf diese Weise können Sie schnell durch unterschiedliche Merkmale Ihres Agents iterieren, ohne den Code zu ändern. Parameter sind Schlüsselwertpaare, die Sie in einem Python-Wörterbuch oder einer .yaml
Datei definieren.
Um den Code zu konfigurieren, erstellen Sie ein ModelConfig
, einen Satz von Schlüsselwertparametern. ModelConfig
ist entweder ein Python-Wörterbuch oder eine .yaml
Datei. Sie können z. B. während der Entwicklung ein Wörterbuch verwenden und dann in eine .yaml
Datei für die Produktionsbereitstellung und CI/CD konvertieren. Ausführliche Informationen zu ModelConfig
finden Sie in der MLflow-Dokumentation.
Unten ist ein Beispiel ModelConfig
angegeben.
llm_parameters:
max_tokens: 500
temperature: 0.01
model_serving_endpoint: databricks-dbrx-instruct
vector_search_index: ml.docs.databricks_docs_index
prompt_template: 'You are a hello world bot. Respond with a reply to the user''s
question that indicates your prompt template came from a YAML file. Your response
must use the word "YAML" somewhere. User''s question: {question}'
prompt_template_input_vars:
- question
Verwenden Sie eine der folgenden Optionen, um die Konfiguration aus Ihrem Code aufzurufen:
# Example for loading from a .yml file
config_file = "configs/hello_world_config.yml"
model_config = mlflow.models.ModelConfig(development_config=config_file)
# Example of using a dictionary
config_dict = {
"prompt_template": "You are a hello world bot. Respond with a reply to the user's question that is fun and interesting to the user. User's question: {question}",
"prompt_template_input_vars": ["question"],
"model_serving_endpoint": "databricks-dbrx-instruct",
"llm_parameters": {"temperature": 0.01, "max_tokens": 500},
}
model_config = mlflow.models.ModelConfig(development_config=config_dict)
# Use model_config.get() to retrieve a parameter value
value = model_config.get('sample_param')
Unterstützte Eingabe- und Ausgabeformate
Agent Framework verwendet MLflow-Modellsignaturen zum Definieren von Eingabe- und Ausgabeschemas für Agents. Mosaik AI Agent Framework-Features erfordern einen minimalen Satz von Eingabe-/Ausgabefeldern, um mit Features wie der Review-App und dem AI-Playground zu interagieren. Weitere Informationen finden Sie unter Definieren des Eingabe- und Ausgabeschemas eines Agents.
Beispielnotebooks
Diese Notizbücher erstellen eine einfache "Hello, world"-Kette, um zu veranschaulichen, wie eine Kettenanwendung in Databricks erstellt wird. Im ersten Beispiel wird eine einfache Kette erstellt. Das zweite Beispielnotizbuch veranschaulicht, wie Sie Parameter verwenden, um Codeänderungen während der Entwicklung zu minimieren.