Udostępnij za pośrednictwem


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.agentsusł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 programu databricks.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 do deploy(). 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.
  • 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ć element databricks_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.

Dodatkowe zasoby