Skapa en AI-agent
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Den här artikeln visar hur du skapar en verktygsanropande AI-agent med hjälp av Mosaic AI Agent Framework.
Lär dig hur du ger en agent verktyg och börja chatta med dem för att testa och prototyp agenten. När du är klar med prototypen av agenten exporterar du Python-koden som definierar agenten för att iterera och distribuera DIN AI-agent.
Krav
- Förstå begreppen för AI-agenter och -verktyg enligt beskrivningen i Vad är sammansatta AI-system och AI-agenter?
- Databricks rekommenderar att du installerar den senaste versionen av MLflow Python-klienten när du utvecklar agenter. Mer information om
mlflow
versionskrav finns i Autentisering för beroende resurser.
Skapa AI-agentverktyg
Det första steget är att skapa ett verktyg som ska ges till din agent. Agenter använder verktyg för att utföra åtgärder förutom språkgenerering, till exempel för att hämta strukturerade eller ostrukturerade data, köra kod eller prata med fjärrtjänster (t.ex. skicka ett e-postmeddelande eller Slack-meddelande).
Mer information om hur du skapar agentverktyg finns i Skapa AI-agentverktyg.
I den här guiden skapar du en Unity Catalog-funktion som kör Python-kod. En agent kan använda det här verktyget för att köra Python som ges av en användare eller skrivs av själva agenten.
Kör följande kod i en notebook-cell. Den använder notebook-magin %sql
för att skapa en Unity Catalog-funktion med namnet python_exec
.
%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()
$$
Prototypverktygssamtalsagenter i AI Playground
När du har skapat funktionen Unity Catalog använder du AI Playground för att ge verktyget till en LLM och testa agenten. AI Playground tillhandahåller en sandbox-miljö för prototypverktygssamtalsagenter.
När du är nöjd med AI-agenten kan du exportera den för att utveckla den ytterligare i Python eller distribuera den som en modell som betjänar slutpunkten som den är.
Kommentar
Unity Catalog och serverlös beräkning, Mosaic AI Agent Framework och antingen betala per token-grundmodeller eller externa modeller måste vara tillgängliga på den aktuella arbetsytan för prototypagenter i AI Playground.
För att skapa en slutpunkt för verktygsanrop.
Från Playground väljer du en modell med etiketten Verktyg aktiverat .
Välj Verktyg och ange funktionsnamnen för Unity Catalog i listrutan:
Chatta för att testa den aktuella kombinationen av LLM, verktyg och systemprompt och prova varianter.
Exportera och distribuera AI Playground-agenter
När du har lagt till verktyg och testat agenten exporterar du Playground-agenten till Python-notebook-filer:
Klicka på Exportera för att generera Python-notebook-filer som hjälper dig att utveckla och distribuera AI-agenten.
När du har exporterat agentkoden ser du tre filer som sparats på din arbetsyta:
agent
notebook: Innehåller Python-kod som definierar din agent med hjälp av LangChain.driver
notebook: Innehåller Python-kod för att logga, spåra, registrera och distribuera AI-agenten med hjälp av Mosaic AI Agent Framework.config.yml
: Innehåller konfigurationsinformation om din agent, inklusive verktygsdefinitioner.
agent
Öppna notebook-filen för att se LangChain-koden som definierar din agent, använd den här notebook-filen för att testa och iterera på agenten programmatiskt, till exempel definiera fler verktyg eller justera agentens parametrar.Kommentar
Den exporterade koden kan ha ett annat beteende än din AI Playground-session. Databricks rekommenderar att du kör de exporterade notebook-filerna för att iterera och felsöka ytterligare, utvärdera agentkvaliteten och sedan distribuera agenten för att dela med andra.
När du är nöjd med agentens utdata kan du köra anteckningsboken för att logga och distribuera agenten
driver
till en modellserverslutpunkt.
Definiera en agent i kod
Förutom att generera agentkod från AI Playground kan du också definiera en agent i koden själv med hjälp av ramverk som LangChain- eller Python-kod. För att kunna distribuera en agent med Agent Framework måste dess indata överensstämma med något av de indata- och utdataformat som stöds.
Använda parametrar för att konfigurera agenten
I Agent Framework kan du använda parametrar för att styra hur agenter körs. På så sätt kan du snabbt iterera med olika egenskaper hos din agent utan att ändra koden. Parametrar är nyckel/värde-par som du definierar i en Python-ordlista eller en .yaml
fil.
Om du vill konfigurera koden skapar du en ModelConfig
, en uppsättning nyckel/värde-parametrar. ModelConfig
är antingen en Python-ordlista eller en .yaml
fil. Du kan till exempel använda en ordlista under utvecklingen och sedan konvertera den till en .yaml
fil för produktionsdistribution och CI/CD. Mer information om ModelConfig
finns i MLflow-dokumentationen.
Ett exempel ModelConfig
visas nedan.
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
Om du vill anropa konfigurationen från koden använder du något av följande:
# 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')
Ange retriever-schema
AI-agenter använder ofta hämtningar, en typ av agentverktyg som hittar och returnerar relevanta dokument med hjälp av ett Vector Search-index. Mer information om hämtningar finns i Skapa ett verktyg för vektorsökningshämtning.
För att säkerställa att hämtningarna spåras korrekt anropar du mlflow.models.set_retriever_schema när du definierar din agent i kod. Använd set_retriever_schema
för att mappa kolumnnamnen i den returnerade tabellen till MLflows förväntade fält, till exempel primary_key
, text_column
och 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"],
)
Kommentar
Kolumnen doc_uri
är särskilt viktig när du utvärderar hämtarens prestanda. doc_uri
är huvudidentifieraren för dokument som returneras av hämtaren, så att du kan jämföra dem med utvärderingsuppsättningar för grundsanning. Se Utvärderingsuppsättningar
Du kan också ange ytterligare kolumner i hämtarens schema genom att ange en lista med kolumnnamn med fältet other_columns
.
Om du har flera hämtningar kan du definiera flera scheman med hjälp av unika namn för varje retrieverschema.
Indata- och utdataformat som stöds
Agent Framework använder MLflow-modellsignaturer för att definiera indata- och utdatascheman för agenter. Mosaic AI Agent Framework-funktioner kräver en minsta uppsättning indata-/utdatafält för att interagera med funktioner som granskningsappen och AI Playground. Mer information finns i Definiera en agent indata- och utdataschema.
Exempel på notebook-filer
Dessa notebook-filer skapar en enkel "Hello, world"-kedja för att illustrera hur du skapar ett kedjeprogram i Databricks. Det första exemplet skapar en enkel kedja. Det andra exemplet på notebook-filen visar hur du använder parametrar för att minimera kodändringar under utvecklingen.