Delen via


Een AI-agent maken

Belangrijk

Deze functie is beschikbaar als openbare preview.

In dit artikel leest u hoe u een ai-agent voor het aanroepen van hulpprogramma's maakt met behulp van het Mozaïek AI Agent Framework.

Meer informatie over het geven van agenthulpprogramma's en chatten met hen om de agent te testen en prototypen te maken. Zodra u klaar bent met het maken van prototypen van de agent, exporteert u de Python-code die de agent definieert om uw AI-agent te herhalen en te implementeren.

Vereisten

Ai-agenthulpprogramma's maken

De eerste stap is het maken van een hulpprogramma dat aan uw agent moet worden verstrekt. Agents gebruiken hulpprogramma's voor het uitvoeren van acties naast het genereren van talen, bijvoorbeeld voor het ophalen van gestructureerde of ongestructureerde gegevens, het uitvoeren van code of het communiceren met externe services (bijvoorbeeld het verzenden van een e-mail of Slack-bericht).

Zie Ai-agenthulpprogramma's maken voor meer informatie over het maken van agenthulpprogramma's.

Maak voor deze handleiding een Unity Catalog-functie waarmee Python-code wordt uitgevoerd. Een agent kan dit hulpprogramma gebruiken om Python uit te voeren op basis van een gebruiker of geschreven door de agent zelf.

Voer de volgende code uit in een notebookcel. Het maakt gebruik van de %sql magic notebook om een Unity Catalog-functie te maken die wordt aangeroepen 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()
$$

Prototype-agents voor het aanroepen van hulpprogramma's in AI Playground

Nadat u de Unity Catalog-functie hebt gemaakt, gebruikt u de AI Playground om het hulpprogramma aan een LLM te geven en de agent te testen. De AI Playground biedt een sandbox voor het prototype van agents voor het aanroepen van hulpprogramma's.

Zodra u tevreden bent met de AI-agent, kunt u deze exporteren om deze verder te ontwikkelen in Python of implementeren als een eindpunt voor modelverdiening.

Notitie

Unity Catalog en serverloze berekeningen, Mozaïek AI Agent Framework, en basismodellen met betalen per token of externe modellen moeten beschikbaar zijn in de huidige werkruimte om prototypeagents in AI Playground te maken.

Een prototype maken van een eindpunt voor het aanroepen van hulpprogramma's.

  1. Selecteer in Playground een model met het label Extra ingeschakeld .

    Een llm voor het aanroepen van een hulpprogramma selecteren

  2. Selecteer Hulpprogramma's en geef de namen van uw Unity Catalog-functie op in de vervolgkeuzelijst:

    Selecteer een hulpprogramma

  3. Chat om de huidige combinatie van LLM, hulpprogramma's en systeemprompt te testen en variaties uit te proberen.

    Prototype van de LLM

AI Playground-agents exporteren en implementeren

Nadat u hulpprogramma's hebt toegevoegd en de agent hebt getest, exporteert u de Playground-agent naar Python-notebooks:

  1. Klik op Exporteren om Python-notebooks te genereren waarmee u de AI-agent kunt ontwikkelen en implementeren.

    Nadat u de agentcode hebt geëxporteerd, ziet u drie bestanden die zijn opgeslagen in uw werkruimte:

    • agent notebook: Bevat Python-code die uw agent definieert met Behulp van LangChain.
    • driver notebook: Bevat Python-code voor het registreren, traceren, registreren en implementeren van de AI-agent met behulp van Mosaic AI Agent Framework.
    • config.yml: bevat configuratie-informatie over uw agent, inclusief hulpprogrammadefinities.
  2. Open het agent notebook om de LangChain-code te zien die uw agent definieert, gebruik dit notebook om de agent programmatisch te testen en te herhalen, zoals het definiëren van meer hulpprogramma's of het aanpassen van de parameters van de agent.

    Notitie

    De geëxporteerde code kan afwijken van uw AI-speeltuinsessie. Databricks raadt u aan om de geëxporteerde notebooks uit te voeren om verder te herhalen en fouten op te sporen, de kwaliteit van de agent te evalueren en vervolgens de agent te implementeren om met anderen te delen.

  3. Zodra u tevreden bent met de uitvoer van de agent, kunt u het notebook uitvoeren om uw driver agent te registreren en te implementeren in een eindpunt voor modelverdiening.

Een agent definiëren in code

Naast het genereren van agentcode van AI Playground kunt u ook zelf een agent definiëren in code, met behulp van frameworks zoals LangChain of Python-code. Als u een agent wilt implementeren met Agent Framework, moet de invoer ervan voldoen aan een van de ondersteunde indelingen voor invoer en uitvoer.

Parameters gebruiken om de agent te configureren

In het Agent Framework kunt u parameters gebruiken om te bepalen hoe agents worden uitgevoerd. Hierdoor kunt u snel herhalen door verschillende kenmerken van uw agent zonder de code te wijzigen. Parameters zijn sleutel-waardeparen die u definieert in een Python-woordenlijst of een .yaml bestand.

Als u de code wilt configureren, maakt u een ModelConfigset sleutel-waardeparameters. ModelConfig is een Python-woordenlijst of een .yaml bestand. U kunt bijvoorbeeld een woordenlijst gebruiken tijdens de ontwikkeling en deze vervolgens converteren naar een .yaml bestand voor productie-implementatie en CI/CD. Zie de MLflow-documentatie voor meer informatie overModelConfig.

Hieronder ziet u een voorbeeld ModelConfig .

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

Gebruik een van de volgende manieren om de configuratie vanuit uw code aan te roepen:

# 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')

Schema voor ophalen instellen

AI-agents gebruiken vaak retrievers, een type agenthulpprogramma waarmee relevante documenten worden gevonden en geretourneerd met behulp van een Vector Search-index. Zie Een hulpprogramma voor vectorzoekopdrachten maken voor meer informatie over retrievers.

Als u ervoor wilt zorgen dat retrievers correct worden getraceerd, roept u mlflow.models.set_retriever_schema aan wanneer u uw agent in code definieert. Gebruik set_retriever_schema deze functie om de kolomnamen in de geretourneerde tabel toe te wijzen aan de verwachte velden van MLflow, zoals primary_key, text_columnen 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"],
)

Notitie

De doc_uri kolom is vooral belangrijk bij het evalueren van de prestaties van de retriever. doc_uri is de belangrijkste id voor documenten die door de retriever worden geretourneerd, zodat u deze kunt vergelijken met basis-waarheidsevaluatiesets. Evaluatiesets bekijken

U kunt ook extra kolommen opgeven in het schema van de retriever door een lijst met kolomnamen met het other_columns veld op te geven.

Als u meerdere retrievers hebt, kunt u meerdere schema's definiëren met behulp van unieke namen voor elk retriever-schema.

Ondersteunde invoer- en uitvoerindelingen

Agent Framework maakt gebruik van MLflow-modelhandtekeningen om invoer- en uitvoerschema's voor agents te definiëren. Mozaïek AI Agent Framework-functies vereisen een minimale set invoer-/uitvoervelden om te communiceren met functies zoals de beoordelings-app en de AI-speeltuin. Zie Het invoer- en uitvoerschema van een agent definiëren voor meer informatie.

Voorbeeldnotitieblokken

Deze notebooks maken een eenvoudige 'Hallo wereld'-keten om te laten zien hoe u een ketentoepassing maakt in Databricks. In het eerste voorbeeld wordt een eenvoudige keten gemaakt. In het tweede voorbeeldnotebook ziet u hoe u parameters gebruikt om codewijzigingen tijdens de ontwikkeling te minimaliseren.

Eenvoudige ketennotitieblok

Notebook downloaden

Eenvoudige notebook voor ketenstuurprogramma's

Notebook downloaden

Notebook voor geparameteriseerde keten

Notebook downloaden

Notebook voor geparameteriseerde ketenstuurprogramma's

Notebook downloaden

Volgende stappen