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 funkcji z poziomu interfejsu deploy()
API języka Python platformy Agent Framework.
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 Zarejestruj agenta w Unity Catalog.
Wdrażanie agentów spoza notesu usługi Databricks wymaga pakietu SDK
databricks-agents
w wersji 0.12.0 lub wyższej.Zainstaluj zestaw
databricks-agents
SDK.%pip install databricks-agents dbutils.library.restartPython()
Wdrażanie agenta przy użyciu deploy()
Funkcja deploy() 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. - Umożliwia tabele wnioskowania z AI Gateway na punkcie końcowym obsługującym model. Zobacz Monitoruj udostępniane modele przez tabele wnioskowania wspomagane przez bramę sztucznej inteligencji.
Uwaga
W przypadku dzienników odpowiedzi przesyłanych strumieniowo są agregowane tylko pola zgodne z funkcją ChatCompletion i ślady.
- Usługa Databricks automatycznie udostępnia krótkotrwałe poświadczenia tożsamości usługi do kodu agenta uruchomionego w punkcie końcowym. Poświadczenia mają minimalne uprawnienia dostępu do zasobów zarządzanych przez usługę Databricks, określoną podczas rejestrowania modelu. Przed wygenerowaniem tych poświadczeń usługa Databricks gwarantuje, że właściciel punktu końcowego ma odpowiednie uprawnienia, aby zapobiec eskalacji uprawnień i nieautoryzowanemu dostępowi. Zobacz Uwierzytelnianie dla zasobów zależnych.
- Jeśli masz zależności zasobów, które nie są zarządzane przez Databricks, na przykład korzystając z Pinecone, możesz przekazać zmienne środowiskowe z tajnymi danymi do interfejsu API
deploy()
. 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 Databricks, na przykład korzystając z Pinecone, możesz przekazać zmienne środowiskowe z tajnymi danymi do interfejsu API
- 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 Recenzji umożliwia uczestnikom projektu czat z agentem i przekazywanie opinii przy użyciu interfejsu użytkownika Aplikacji Recenzji.
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
Agenci sztucznej inteligencji często muszą uwierzytelniać się w innych zasobach, aby wykonywać zadania. Na przykład agent może potrzebować dostępu do indeksu wyszukiwania wektorowego w celu wykonywania zapytań dotyczących danych bez struktury.
Twój agent może użyć jednej z następujących metod do uwierzytelniania w zasobach zależnych, gdy znajduje się za punktem końcowym obsługi modelu.
- Automatyczne przekazywanie uwierzytelnienia: Deklarowanie zależności zasobów Databricks dla agenta podczas logowania. Usługa Databricks może automatycznie przydzielać, odnawiać i zarządzać krótkotrwałymi danymi uwierzytelniającymi, gdy agent jest wdrażany w celu bezpiecznego dostępu do zasobów. Databricks zaleca stosowanie automatycznego przekazywania uwierzytelniania tam, gdzie jest to możliwe.
- ręczne uwierzytelnianie: ręcznie określ poświadczenia o długiej ważności podczas wdrażania agenta. Użyj uwierzytelniania ręcznego dla zasobów usługi Databricks, które nie obsługują automatycznego przekazywania uwierzytelniania ani dostępu do zewnętrznego interfejsu API.
Przekazywanie uwierzytelniania automatycznego
Serwowanie modelu zapewnia automatyczne przekazywanie uwierzytelniania dla najbardziej typowych zasobów Databricks używanych przez agentów.
Aby włączyć przekazywanie uwierzytelniania automatycznego, należy określić zależności podczas logowania agenta.
Następnie po obsłużeniu agenta za punktem końcowym usługa Databricks wykonuje następujące kroki:
Weryfikacja uprawnień: Databricks sprawdza, czy twórca punktu końcowego może uzyskać dostęp do wszystkich zależności określonych podczas logowania przez agenta.
tworzenie i przyznawanie uprawnień jednostce usługi: jednostka usługi jest tworzona dla wersji modelu agenta i automatycznie uzyskuje dostęp do odczytu do zasobów agenta.
Uwaga
Systemowo wygenerowana główna usługa nie pojawia się na listach API ani interfejsu użytkownika. Jeśli wersja modelu agenta zostanie usunięta z punktu końcowego, główny składnik usługi zostanie również usunięty.
pl-PL: aprowizowanie i rotacja poświadczeń: Krótkotrwałe poświadczenia (token OAuth M2M) dla podmiotu usługi są umieszczane w punkcie końcowym, co umożliwia kodowi agenta dostęp do zasobów Databricks. Usługa Databricks odświeża również poświadczenia, zapewniając agentowi ciągły, bezpieczny dostęp do zasobów zależnych.
To zachowanie uwierzytelniania jest podobne do zachowania "Uruchom jako właściciel" dla pulpitów nawigacyjnych Databricks — zasoby pochodne, takie jak tabele Unity Catalog, są dostępne przy użyciu poświadczeń jednostki usługi z uprawnieniami o najniższym poziomie do zasobów zależnych.
W poniższej tabeli wymieniono zasoby Databricks, które obsługują przekazywanie automatycznego uwierzytelniania, oraz uprawnienia, które musi posiadać twórca punktu końcowego podczas wdrażania agenta.
Uwaga
Zasoby Katalogu Unity wymagają USE SCHEMA
w schemacie nadrzędnym i USE CATALOG
w katalogu nadrzędnym.
Typ zasobu | Uprawnienie |
---|---|
SQL Warehouse | Korzystanie z punktu końcowego |
Punkt końcowy obsługi modelu | Może wykonywać zapytania |
Funkcja wykazu aparatu Unity | WYKONAĆ |
Przestrzeń Genie | Można uruchomić |
Indeks wyszukiwania wektorowego | Może używać |
Tabela wykazu aparatu Unity | SELECT |
Uwierzytelnianie ręczne
Możesz również ręcznie podać poświadczenia przy użyciu zmiennych środowiskowych opartych na tajnych danych. Uwierzytelnianie ręczne może być przydatne w następujących scenariuszach:
- Zasób zależny nie obsługuje automatycznego przekazywania uwierzytelniania.
- Agent uzyskuje dostęp do zewnętrznego zasobu lub interfejsu API.
- Agent musi używać poświadczeń innych niż te używane przez implementującego agenta.
Aby na przykład użyć zestawu SDK usługi Databricks w agencie w celu uzyskania dostępu do innych zasobów zależnych, możesz ustawić zmienne środowiskowe opisane w jednolitym uwierzytelnianiu klienta 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, aby można było 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 itext_assessments.ratings
, retrieval_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.