Udostępnij za pośrednictwem


Tworzenie agenta sztucznej inteligencji

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

W tym artykule pokazano, jak utworzyć agenta sztucznej inteligencji wywołującego narzędzia przy użyciu struktury agenta Mozaika AI.

Dowiedz się, jak nadać narzędziom agenta i rozpocząć rozmowę z nimi w celu przetestowania i utworzenia prototypu agenta. Po zakończeniu tworzenia prototypów agenta wyeksportuj kod języka Python, który definiuje agenta w celu iterowania i wdrażania agenta sztucznej inteligencji.

Wymagania

Tworzenie narzędzi agenta sztucznej inteligencji

Pierwszym krokiem jest utworzenie narzędzia do nadania agentowi. Agenci używają narzędzi do wykonywania akcji poza generowaniem języka, na przykład w celu pobierania danych ze strukturą lub bez struktury, wykonywania kodu lub komunikacji z usługami zdalnymi (np. wysyłania wiadomości e-mail lub wiadomości slack).

Aby dowiedzieć się więcej na temat tworzenia narzędzi agenta, zobacz Tworzenie narzędzi agenta sztucznej inteligencji.

W tym przewodniku utwórz funkcję wykazu aparatu Unity, która wykonuje kod języka Python. Agent może użyć tego narzędzia do uruchamiania języka Python nadanego im przez użytkownika lub napisanego przez samego agenta.

Uruchom następujący kod w komórce notesu. Używa magii notesu %sql do utworzenia funkcji wykazu aparatu Unity o nazwie 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()
$$

Prototypowi agenci wywołujący narzędzia na placu zabaw dla sztucznej inteligencji

Po utworzeniu funkcji Catalog aparatu Unity użyj narzędzia AI Playground , aby przekazać narzędzie do usługi LLM i przetestować agenta. Plac zabaw dla sztucznej inteligencji udostępnia piaskownicę do prototypowania agentów wywołujących narzędzia.

Gdy będziesz zadowolony z agenta sztucznej inteligencji, możesz wyeksportować go, aby rozwinąć go dalej w języku Python lub wdrożyć go jako punkt końcowy obsługujący model.

Uwaga

Katalog aparatu Unity i bezserwerowe obliczenia, struktura agenta Mozaiki AI oraz modele podstawy płatności za token lub modele zewnętrzne muszą być dostępne w bieżącym obszarze roboczym, aby utworzyć prototypy agentów na placu zabaw dla sztucznej inteligencji.

Aby utworzyć prototyp punktu końcowego wywołującego narzędzia.

  1. W obszarze Plac zabaw wybierz model z etykietą z włączoną etykietą Narzędzia.

    Wybieranie narzędzia wywołującego usługę LLM

  2. Wybierz pozycję Narzędzia i określ nazwy funkcji wykazu aparatu Unity na liście rozwijanej:

    Wybór narzędzia

  3. Czat w celu przetestowania bieżącej kombinacji języka LLM, narzędzi i monitu systemowego oraz wypróbowania odmian.

    Tworzenie prototypu usługi LLM

Eksportowanie i wdrażanie agentów AI Playground

Po dodaniu narzędzi i przetestowaniu agenta wyeksportuj agenta placu zabaw do notesów języka Python:

  1. Kliknij pozycję Eksportuj , aby wygenerować notesy języka Python, które ułatwiają opracowywanie i wdrażanie agenta sztucznej inteligencji.

    Po wyeksportowaniu kodu agenta zobaczysz trzy pliki zapisane w obszarze roboczym:

    • agent notes: zawiera kod języka Python definiujący agenta przy użyciu biblioteki LangChain.
    • driver notes: zawiera kod języka Python do rejestrowania, śledzenia, rejestrowania i wdrażania agenta sztucznej inteligencji przy użyciu struktury agenta Mozaika AI.
    • config.yml: zawiera informacje o konfiguracji agenta, w tym definicje narzędzi.
  2. agent Otwórz notes, aby wyświetlić kod LangChain definiujący agenta, użyj tego notesu do testowania i iterowania agenta programowo, na przykład definiowania większej liczby narzędzi lub dostosowywania parametrów agenta.

    Uwaga

    Wyeksportowany kod może mieć inne zachowanie niż sesja środowiska zabaw sztucznej inteligencji. Usługa Databricks zaleca uruchomienie wyeksportowanych notesów w celu dalszego iterowania i debugowania, oceny jakości agenta, a następnie wdrażania agenta w celu udostępnienia innym osobom.

  3. Po zadowoleniu z danych wyjściowych agenta możesz uruchomić driver notes, aby zarejestrować i wdrożyć agenta w punkcie końcowym obsługującym model.

Definiowanie agenta w kodzie

Oprócz generowania kodu agenta z platformy AI Playground można również zdefiniować agenta w kodzie samodzielnie przy użyciu struktur, takich jak LangChain lub Python. Aby można było wdrożyć agenta przy użyciu programu Agent Framework, jego dane wejściowe muszą być zgodne z jednym z obsługiwanych formatów danych wejściowych i wyjściowych.

Konfigurowanie agenta przy użyciu parametrów

W strukturze agentów można użyć parametrów do kontrolowania sposobu wykonywania agentów. Dzięki temu można szybko iterować przez różne cechy agenta bez konieczności zmieniania kodu. Parametry to pary klucz-wartość definiowane w słowniku języka Python lub .yaml pliku.

Aby skonfigurować kod, utwórz ModelConfigzestaw parametrów klucz-wartość. ModelConfig jest słownikiem języka Python lub plikiem .yaml . Na przykład można użyć słownika podczas programowania, a następnie przekonwertować go na plik na potrzeby wdrożenia produkcyjnego .yaml i ciągłej integracji/ciągłego wdrażania. Aby uzyskać szczegółowe informacje o ModelConfigsystemie, zobacz dokumentację platformy MLflow.

Poniżej przedstawiono przykład 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

Aby wywołać konfigurację z kodu, użyj jednego z następujących elementów:

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

Ustawianie schematu programu retriever

Agenci sztucznej inteligencji często używają metod pobierania, typu narzędzia agenta, które wyszukuje i zwraca odpowiednie dokumenty przy użyciu indeksu wyszukiwania wektorowego. Aby uzyskać więcej informacji na temat metod pobierania, zobacz Tworzenie narzędzia do pobierania wyszukiwania wektorów.

Aby upewnić się, że metody pobierania są prawidłowo śledzone, wywołaj metodę mlflow.models.set_retriever_schema podczas definiowania agenta w kodzie. Służy set_retriever_schema do mapowania nazw kolumn w zwróconej tabeli na oczekiwane pola MLflow, takie jak primary_key, text_columni 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"],
)

Uwaga

Kolumna doc_uri jest szczególnie ważna podczas oceniania wydajności programu retriever. doc_uri jest głównym identyfikatorem dokumentów zwracanych przez program retriever, co umożliwia porównywanie ich z zestawami oceny podstaw prawdy. Zobacz Zestawy ewaluacyjne

Możesz również określić dodatkowe kolumny w schemacie modułu pobierania, podając listę nazw kolumn z polem other_columns .

Jeśli masz wiele modułów pobierania, możesz zdefiniować wiele schematów przy użyciu unikatowych nazw dla każdego schematu programu retriever.

Obsługiwane formaty danych wejściowych i wyjściowych

Struktura agentów używa sygnatur modelu MLflow do definiowania schematów wejściowych i wyjściowych dla agentów. Funkcje platformy agentów mozaiki sztucznej inteligencji wymagają minimalnego zestawu pól wejściowych/wyjściowych do interakcji z funkcjami, takimi jak przeglądanie aplikacji i plac zabaw dla sztucznej inteligencji. Aby uzyskać więcej informacji, zobacz Definiowanie schematu danych wejściowych i wyjściowych agenta.

Przykładowe notesy

Te notesy tworzą prosty łańcuch "Hello, world", aby zilustrować sposób tworzenia aplikacji łańcucha w usłudze Databricks. Pierwszy przykład tworzy prosty łańcuch. Drugi przykładowy notes ilustruje sposób używania parametrów w celu zminimalizowania zmian kodu podczas programowania.

Prosty notes łańcucha

Pobierz notes

Prosty notes sterownika łańcucha

Pobierz notes

Sparametryzowany notes łańcucha

Pobierz notes

Sparametryzowany notes sterownika łańcucha

Pobierz notes

Następne kroki