Erstellen eines KI-Agents
Wichtig
Dieses Feature befindet sich in der Public Preview.
In diesem Artikel erfahren Sie, wie Sie einen toolanrufenden KI-Agent mit dem Mosaik AI Agent Framework erstellen.
Erfahren Sie, wie Sie einem Agent Tools geben und damit beginnen, mit ihnen zu chatten, um den Agent zu testen und zu prototypisieren. Nachdem Sie mit der Prototyperstellung des Agents fertig sind, exportieren Sie den Python-Code, der den Agent definiert, um Ihren KI-Agent zu durchlaufen und bereitzustellen.
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
Der erste Schritt besteht darin, ein Tool zu erstellen, das Ihrem Agenten übergeben werden soll. Agents verwenden Tools zum Ausführen von Aktionen neben der Sprachgenerierung, z. B. zum Abrufen strukturierter oder unstrukturierter Daten, zum Ausführen von Code oder zum Kommunizieren mit Remotediensten (z. B. Senden einer E-Mail oder Slack-Nachricht).
Weitere Informationen zum Erstellen von Agenttools finden Sie unter Erstellen von KI-Agent-Tools.
Erstellen Sie für dieses Handbuch eine Unity-Katalogfunktion , die Python-Code ausführt. Ein Agent kann dieses Tool verwenden, um Python auszuführen, das ihm von einem Benutzer gegeben wurde oder vom Agent selbst geschrieben wurde.
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.
%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()
$$
Prototyp von Tool-Anruf-Agenten im KI-Playground
Verwenden Sie nach dem Erstellen der Unity-Katalogfunktion den KI-Playground , um dem Tool eine LLM zu geben 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 aktivierter Bezeichnung "Extras " 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 " Exportieren ", um Python-Notizbücher zu generieren, die Ihnen beim Entwickeln und Bereitstellen des KI-Agents 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
Zusätzlich zum Generieren von Agent-Code aus AI Playground können Sie auch einen Agent selbst definieren, indem Sie Frameworks wie LangChain oder Python-Code verwenden. 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')
Festlegen des Retriever-Schemas
KI-Agents verwenden häufig Retriever, einen Agent-Tooltyp, der relevante Dokumente mithilfe eines Vector Search-Index findet und zurückgibt. Weitere Informationen zu Retrievern finden Sie unter Erstellen eines Vektorsuch-Retriever-Tools.
Um sicherzustellen, dass Retriever ordnungsgemäß nachverfolgt werden, rufen Sie mlflow.models.set_retriever_schema auf, wenn Sie Ihren Agent im Code definieren. Dient set_retriever_schema
zum Zuordnen der Spaltennamen in der zurückgegebenen Tabelle zu den erwarteten Feldern von MLflow, z primary_key
. B. , text_column
und doc_uri
.
# Define the retriever's schema by providing your column names
# These strings should be read from a config dictionary
mlflow.models.set_retriever_schema(
name="vector_search",
primary_key="chunk_id",
text_column="text_column",
doc_uri="doc_uri"
# other_columns=["column1", "column2"],
)
Hinweis
Die doc_uri
Spalte ist besonders wichtig beim Auswerten der Leistung des Retrievers. doc_uri
ist der Hauptbezeichner für dokumente, die vom Retriever zurückgegeben werden, sodass Sie sie mit den Bewertungssätzen für die Bodenwahrung vergleichen können. Siehe Auswertungssätze
Sie können auch zusätzliche Spalten im Schema des Retrievers angeben, indem Sie eine Liste der Spaltennamen mit dem other_columns
Feld angeben.
Wenn Sie über mehrere Retriever verfügen, können Sie mehrere Schemas definieren, indem Sie eindeutige Namen für jedes Retriever-Schema verwenden.
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.