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
- Zapoznaj się z pojęciami agentów i narzędzi sztucznej inteligencji, jak opisano w artykule Co to są złożone systemy sztucznej inteligencji i agenci sztucznej inteligencji?
- Usługa Databricks zaleca zainstalowanie najnowszej wersji klienta języka Python MLflow podczas opracowywania agentów. Aby uzyskać informacje na
mlflow
temat wymagań dotyczących wersji, zobacz Uwierzytelnianie dla zasobów zależnych.
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.
W obszarze Plac zabaw wybierz model z etykietą z włączoną etykietą Narzędzia.
Wybierz pozycję Narzędzia i określ nazwy funkcji wykazu aparatu Unity na liście rozwijanej:
Czat w celu przetestowania bieżącej kombinacji języka LLM, narzędzi i monitu systemowego oraz wypróbowania odmian.
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:
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.
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.
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 ModelConfig
zestaw 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 ModelConfig
systemie, 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_column
i 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
Prosty notes sterownika łańcucha
Sparametryzowany notes łańcucha
Sparametryzowany notes sterownika łańcucha
Następne kroki
- Rejestrowanie agenta sztucznej inteligencji.
- Dodawanie śladów do agenta sztucznej inteligencji.
- Wdrażanie agenta sztucznej inteligencji.