Freigeben über


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

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.

  1. Wählen Sie im Playground ein Modell mit der Bezeichnung für Funktionsaufrufe aus.

    Auswählen eines LLM für Toolaufrufe

  2. Wählen Sie Tools aus, und geben Sie im Dropdownmenü Ihre Unity-Katalog-Funktionsnamen an:

    Auswählen eines Tools

  3. Chatten Sie, um die aktuelle Kombination aus LLM, Tools und Systemsansagen zu testen und Variationen auszuprobieren.

    Prototyp des LLM

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:

  1. 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.
  2. Ö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.

  3. 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.

Einfaches Kettennotizbuch

Notebook abrufen

Einfaches Kettentreibernotizbuch

Notebook abrufen

Parametrisiertes Kettennotizbuch

Notebook abrufen

Parametrisiertes Kettentreibernotizbuch

Notebook abrufen

Nächste Schritte