Wdrażanie agenta do generowania aplikacji sztucznej inteligencji
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
W tym artykule pokazano, jak wdrożyć agenta sztucznej inteligencji przy użyciu interfejsu deploy()
API z poziomu databricks.agents
usługi .
Wymagania
Narzędzie MLflow w wersji 2.13.1 lub nowszej w celu wdrożenia agentów przy użyciu interfejsu
deploy()
API z programudatabricks.agents
.Rejestrowanie agenta sztucznej inteligencji w wykazie aparatu Unity. Zobacz Rejestrowanie łańcucha w katalogu aparatu Unity.
Zainstaluj zestaw
databricks-agents
SDK.%pip install databricks-agents dbutils.library.restartPython()
Wdrażanie agenta przy użyciu deploy()
Interfejs deploy()
API wykonuje następujące czynności:
- Tworzy model procesora CPU obsługujący punkty końcowe dla agenta, który można zintegrować z aplikacją dostępną dla użytkownika.
- Aby zmniejszyć koszt bezczynnych punktów końcowych (kosztem zwiększonego czasu obsługi zapytań początkowych), możesz włączyć skalowanie do zera dla obsługiwanego punktu końcowego, przekazując
scale_to_zero_enabled=True
element dodeploy()
. Zobacz Oczekiwania dotyczące skalowania punktu końcowego. - Tabele wnioskowania są włączone w tych modelach obsługujących punkty końcowe. Zobacz Tabele wnioskowania dotyczące monitorowania i debugowania modeli.
- Poświadczenia uwierzytelniania są automatycznie przekazywane do wszystkich zasobów zarządzanych przez usługę Databricks wymaganych przez agenta, jak określono podczas rejestrowania modelu. Usługa Databricks tworzy jednostkę usługi, która ma dostęp do tych zasobów i automatycznie przekazuje je do punktu końcowego. Zobacz Uwierzytelnianie dla zasobów zależnych.
- Jeśli masz zależności zasobów, które nie są zarządzane przez usługę Databricks, na przykład przy użyciu aplikacji Pinecone, możesz przekazać zmienne środowiskowe z wpisami tajnymi do interfejsu
deploy()
API. Zobacz Konfigurowanie dostępu do zasobów z poziomu punktów końcowych obsługujących model.
- Jeśli masz zależności zasobów, które nie są zarządzane przez usługę Databricks, na przykład przy użyciu aplikacji Pinecone, możesz przekazać zmienne środowiskowe z wpisami tajnymi do interfejsu
- Aby zmniejszyć koszt bezczynnych punktów końcowych (kosztem zwiększonego czasu obsługi zapytań początkowych), możesz włączyć skalowanie do zera dla obsługiwanego punktu końcowego, przekazując
- Włącza przeglądanie aplikacji dla agenta. Aplikacja Przegląd umożliwia uczestnikom projektu rozmowę z agentem i przekazywanie opinii przy użyciu interfejsu użytkownika przeglądu aplikacji.
- Rejestruje każde żądanie w tabeli wnioskowania w interfejsie API przeglądu aplikacji lub interfejsu API REST. Zarejestrowane dane obejmują żądania zapytań, odpowiedzi i pośrednie dane śledzenia z śledzenia MLflow.
- Tworzy model opinii z tym samym wykazem i schematem co agent, który próbujesz wdrożyć. Ten model opinii to mechanizm, który umożliwia akceptowanie opinii z aplikacji Przegląd i rejestrowanie jej w tabeli wnioskowania. Ten model jest obsługiwany w tym samym modelu procesora CPU obsługującym punkt końcowy, co wdrożony agent. Ponieważ ten punkt końcowy obsługujący ma włączone tabele wnioskowania, można rejestrować opinie z aplikacji przeglądu do tabeli wnioskowania.
Uwaga
Ukończenie wdrożeń może potrwać do 15 minut. Nieprzetworzone ładunki JSON trwają od 10 do 30 minut, a sformatowane dzienniki są przetwarzane z nieprzetworzonych ładunków około każdej godziny.
from databricks.agents import deploy
from mlflow.utils import databricks_utils as du
deployment = deploy(model_fqn, uc_model_info.version)
# query_endpoint is the URL that can be used to make queries to the app
deployment.query_endpoint
# Copy deployment.rag_app_url to browser and start interacting with your RAG application.
deployment.rag_app_url
Tabele wnioskowania rozszerzonego agenta
Funkcja deploy()
tworzy trzy tabele wnioskowania dla każdego wdrożenia w celu rejestrowania żądań i odpowiedzi do i z punktu końcowego obsługującego agenta. Użytkownicy mogą oczekiwać, że dane będą znajdować się w tabeli ładunków w ciągu godziny od interakcji z ich wdrożeniem.
Wypełnianie dzienników żądań ładunku i dzienników oceny może trwać dłużej, ale ostatecznie pochodzi z tabeli nieprzetworzonego ładunku. Dzienniki żądań i ocen można wyodrębnić samodzielnie z tabeli ładunków. Usunięcia i aktualizacje tabeli ładunku nie są odzwierciedlane w dziennikach żądań ładunku ani w dziennikach oceny ładunku.
Uwaga
Jeśli masz włączoną zaporę usługi Azure Storage, skontaktuj się z zespołem konta usługi Databricks, aby włączyć tabele wnioskowania dla punktów końcowych.
Table | Przykładowa nazwa tabeli wykazu aparatu Unity | Co znajduje się w każdej tabeli |
---|---|---|
Ładunek | {catalog_name}.{schema_name}.{model_name}_payload |
Nieprzetworzone ładunki żądań JSON i odpowiedzi |
Dzienniki żądań ładunku | {catalog_name}.{schema_name}.{model_name}_payload_request_logs |
Sformatowane żądania i odpowiedzi, ślady MLflow |
Dzienniki oceny ładunku | {catalog_name}.{schema_name}.{model_name}_payload_assessment_logs |
Sformatowane opinie, jak podano w aplikacji Przegląd, dla każdego żądania |
Poniżej przedstawiono schemat tabeli dzienników żądań.
Nazwa kolumny | Type | opis |
---|---|---|
client_request_id |
String | Identyfikator żądania klienta, zazwyczaj null . |
databricks_request_id |
String | Identyfikator żądania usługi Databricks. |
date |
Data | Data żądania. |
timestamp_ms |
Długi | Sygnatura czasowa w milisekundach. |
timestamp |
Sygnatura czasowa | Sygnatura czasowa żądania. |
status_code |
Integer | Kod stanu punktu końcowego. |
execution_time_ms |
Długi | Łączna liczba milisekund wykonania. |
conversation_id |
String | Identyfikator konwersacji wyodrębniony z dzienników żądań. |
request |
String | Ostatnie zapytanie użytkownika z konwersacji użytkownika. Jest to wyodrębnione z żądania RAG. |
response |
String | Ostatnia odpowiedź na użytkownika. Jest to wyodrębnione z żądania RAG. |
request_raw |
String | Reprezentacja ciągu żądania. |
response_raw |
String | Reprezentacja ciągu odpowiedzi. |
trace |
String | Reprezentacja ciągu śledzenia wyodrębnionego z databricks_options struktury odpowiedzi. |
sampling_fraction |
Liczba rzeczywista | Ułamek próbkowania. |
request_metadata |
Map[String, String] | Mapa metadanych związanych z modelem obsługującym punkt końcowy skojarzony z żądaniem. Ta mapa zawiera nazwę punktu końcowego, nazwę modelu i wersję modelu używaną dla punktu końcowego. |
schema_version |
String | Liczba całkowita dla wersji schematu. |
Poniżej przedstawiono schemat tabeli dzienników oceny.
Nazwa kolumny | Type | opis |
---|---|---|
request_id |
String | Identyfikator żądania usługi Databricks. |
step_id |
String | Pochodzi z oceny pobierania. |
source |
Struktura | Pole struktury zawierające informacje o tym, kto utworzył ocenę. |
timestamp |
Sygnatura czasowa | Sygnatura czasowa żądania. |
text_assessment |
Struktura | Pole struktury zawierające dane dotyczące wszelkich opinii na temat odpowiedzi agenta z aplikacji do przeglądu. |
retrieval_assessment |
Struktura | Pole struktury zawierające dane dotyczące wszelkich opinii na temat dokumentów pobranych na odpowiedź. |
Uwierzytelnianie dla zasobów zależnych
Podczas tworzenia modelu obsługującego punkt końcowy dla wdrożenia agenta usługa Databricks sprawdza, czy twórca punktu końcowego ma uprawnienia dostępu do wszystkich zasobów, od których zależy agent.
W przypadku agentów o smaku LangChain zasoby zależne są automatycznie wnioskowane podczas tworzenia i rejestrowania agenta. Te zasoby są rejestrowane w resources.yaml
pliku w zarejestrowanych artefaktach modelu. Podczas wdrażania databricks.agents.deploy
automatycznie tworzy tokeny OAuth M2M wymagane do uzyskiwania dostępu do tych zależności zasobów wnioskowanych i komunikowania się z nimi.
W przypadku agentów smakowych PyFunc należy ręcznie określić wszystkie zależności zasobów podczas rejestrowania wdrożonego agenta w parametrze resources
. Zobacz Określanie zasobów dla agenta PyFunc lub LangChain.
Podczas wdrażania databricks.agents.deploy
tworzy token OAuth M2M z dostępem do zasobów określonych w parametrze resources
i wdraża go w wdrożonym agencie.
Przekazywanie uwierzytelniania automatycznego
W poniższej tabeli wymieniono funkcje, które obsługują automatyczne przekazywanie uwierzytelniania. Przekazywanie uwierzytelniania automatycznego używa poświadczeń twórcy wdrożenia do automatycznego uwierzytelniania względem obsługiwanych funkcji.
Funkcja | Minimalna mlflow wersja |
---|---|
Indeksy wyszukiwania wektorowego | Wymaga mlflow wersji 2.13.1 lub nowszej |
Punkty końcowe obsługujące model | Wymaga mlflow wersji 2.13.1 lub nowszej |
Magazyny SQL | Wymaga mlflow wersji 2.16.1 lub nowszej |
Funkcje wykazu aparatu Unity | Wymaga mlflow wersji 2.16.1 lub nowszej |
Uwierzytelnianie ręczne
Jeśli masz zasób zależny, który nie obsługuje automatycznego przekazywania uwierzytelniania lub jeśli chcesz użyć poświadczeń innych niż te twórcy wdrożenia, możesz ręcznie podać poświadczenia przy użyciu zmiennych środowiskowych opartych na wpisach tajnych. Jeśli na przykład używasz zestawu SDK usługi Databricks w agencie do uzyskiwania dostępu do innych typów zasobów zależnych, możesz ustawić zmienne środowiskowe opisane w temacie Ujednolicone uwierzytelnianie klienta usługi Databricks.
Pobieranie wdrożonych aplikacji
Poniżej przedstawiono sposób uzyskiwania wdrożonych agentów.
from databricks.agents import list_deployments, get_deployments
# Get the deployment for specific model_fqn and version
deployment = get_deployments(model_name=model_fqn, model_version=model_version.version)
deployments = list_deployments()
# Print all the current deployments
deployments
Przekazywanie opinii na temat wdrożonego agenta (eksperymentalne)
Podczas wdrażania agenta za pomocą agents.deploy()
platformy agenta platforma agenta tworzy również i wdraża wersję modelu "feedback" w tym samym punkcie końcowym, który można wysyłać zapytania w celu przekazania opinii na temat aplikacji agenta. Wpisy opinii są wyświetlane jako wiersze żądań w tabeli wnioskowania skojarzonej z punktem końcowym obsługującym agenta.
Należy pamiętać, że to zachowanie jest eksperymentalne: usługa Databricks może zapewnić najwyższej klasy interfejs API do przekazywania opinii na temat wdrożonego agenta w przyszłości, a przyszłe funkcje mogą wymagać migracji do tego interfejsu API.
Ograniczenia tego interfejsu API obejmują:
- Interfejs API opinii nie ma weryfikacji danych wejściowych — zawsze reaguje pomyślnie, nawet jeśli przekazano nieprawidłowe dane wejściowe.
- Interfejs API opinii wymaga przekazania danych wygenerowanego
request_id
przez usługę Databricks żądania punktu końcowego agenta, na którym chcesz przekazać opinię. Aby pobrać elementdatabricks_request_id
, dołącz{"databricks_options": {"return_trace": True}}
do oryginalnego żądania do punktu końcowego obsługującego agenta. Odpowiedź punktu końcowego agenta będzie następnie zawieraćdatabricks_request_id
skojarzone z żądaniem, dzięki czemu można przekazać ten identyfikator żądania z powrotem do interfejsu API opinii podczas przekazywania opinii na temat odpowiedzi agenta. - Opinie są zbierane przy użyciu tabel wnioskowania. Zobacz ograniczenia tabeli wnioskowania.
Poniższe przykładowe żądanie zawiera opinię na temat punktu końcowego agenta o nazwie "your-agent-endpoint-name" i zakłada, że DATABRICKS_TOKEN
zmienna środowiskowa jest ustawiona na token interfejsu API REST usługi Databricks.
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '
{
"dataframe_records": [
{
"source": {
"id": "user@company.com",
"type": "human"
},
"request_id": "573d4a61-4adb-41bd-96db-0ec8cebc3744",
"text_assessments": [
{
"ratings": {
"answer_correct": {
"value": "positive"
},
"accurate": {
"value": "positive"
}
},
"free_text_comment": "The answer used the provided context to talk about Delta Live Tables"
}
],
"retrieval_assessments": [
{
"ratings": {
"groundedness": {
"value": "positive"
}
}
}
]
}
]
}' \
https://<workspace-host>.databricks.com/serving-endpoints/<your-agent-endpoint-name>/served-models/feedback/invocations
Możesz przekazać dodatkowe lub różne pary klucz-wartość w polach iretrieval_assessments.ratings
, text_assessments.ratings
aby przekazać różne typy opinii. W tym przykładzie ładunek opinii wskazuje, że odpowiedź agenta na żądanie o identyfikatorze 573d4a61-4adb-41bd-96db-0ec8cebc3744
była poprawna, dokładna i uziemiona w kontekście pobranym przez narzędzie pobierania.