Aracılığıyla paylaş


Üretici yapay zeka uygulaması için aracı dağıtma

Önemli

Bu özellik Genel Önizlemededir.

Bu makalede, api'sini kullanarak yapay zeka aracınızın nasıl dağıtılacağı deploy() gösterilmektedirdatabricks.agents.

Gereksinimler

  • api'sini databricks.agentskullanarak deploy() aracıları dağıtmak için MLflow 2.13.1 veya üzeri.

  • Unity Kataloğu'na bir yapay zeka aracısı kaydedin. Bkz . Zinciri Unity Kataloğu'na kaydetme.

  • SDK'yi databricks-agents yükleyin.

    %pip install databricks-agents
    dbutils.library.restartPython()
    

Kullanarak aracı dağıtma deploy()

deploy() API aşağıdakileri yapar:

  • Aracınız için, kullanıcıya yönelik uygulamanızla tümleştirilebilen uç noktalar sunan CPU modeli oluşturur.
    • Boşta kalan uç noktaların maliyetini azaltmak için (ilk sorgulara hizmet vermek için gereken sürenin artması karşılığında), öğesine geçirerek scale_to_zero_enabled=True hizmet veren uç noktanız için ölçeği sıfıra deploy()etkinleştirebilirsiniz. Bkz . Uç nokta ölçeklendirme beklentileri.
    • Çıkarım tabloları, uç noktaları sunan bu modelde etkinleştirilir. Modelleri izleme ve hata ayıklama için bkz. Çıkarım tabloları.
    • Kimlik doğrulama kimlik bilgileri, model günlüğe kaydedilirken belirtilen şekilde aracı tarafından gerekli olan databricks tarafından yönetilen tüm kaynaklara otomatik olarak geçirilir. Databricks, bu kaynaklara erişimi olan bir hizmet sorumlusu oluşturur ve bunu otomatik olarak uç noktaya geçirir. Bkz. Bağımlı kaynaklar için kimlik doğrulaması.
      • Örneğin Pinecone kullanarak Databricks tarafından yönetilmeyen kaynak bağımlılıklarınız varsa, ortam değişkenlerini gizli dizilerle API'ye deploy() geçirebilirsiniz. Bkz . Model sunum uç noktalarındaki kaynaklara erişimi yapılandırma.
  • Aracınız için Gözden Geçirme Uygulamasını etkinleştirir. Gözden Geçirme Uygulaması, proje katılımcılarınızın aracıyla sohbet etmesine ve Uygulamayı Gözden Geçir kullanıcı arabirimini kullanarak geri bildirimde bulunur.
  • Gözden Geçirme Uygulaması veya REST API'sine yapılan her isteği bir çıkarım tablosuna günlüğe kaydeder. Günlüğe kaydedilen veriler MLflow İzleme'den gelen sorgu isteklerini, yanıtları ve ara izleme verilerini içerir.
  • Dağıtmaya çalıştığınız aracıyla aynı katalog ve şemaya sahip bir geri bildirim modeli oluşturur. Bu geri bildirim modeli, Gözden Geçir Uygulamasından gelen geri bildirimleri kabul edip bir çıkarım tablosuna kaydetmeyi mümkün kılan mekanizmadır. Bu model, dağıtılan aracınızla uç nokta sunan aynı CPU modelinde sunulur. Bu sunum uç noktasının çıkarım tabloları etkinleştirildiğinden, Gözden Geçirme Uygulamasından bir çıkarım tablosuna geri bildirim kaydetmek mümkündür.

Not

Dağıtımların tamamlanması 15 dakika kadar sürebilir. Ham JSON yüklerinin ulaşması 10 - 30 dakika sürer ve biçimlendirilmiş günlükler yaklaşık saatte bir ham yüklerden işlenir.


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

Aracı ile geliştirilmiş çıkarım tabloları

, deploy() uç noktaya hizmet veren aracıya yönelik ve uç noktadan gelen istekleri ve yanıtları günlüğe kaydetmek için her dağıtım için üç çıkarım tablosu oluşturur. Kullanıcılar, dağıtımlarıyla etkileşime geçdikleri bir saat içinde verilerin yük tablosunda olmasını bekleyebilir.

Yük isteği günlüklerinin ve değerlendirme günlüklerinin doldurulmaları daha uzun sürebilir, ancak sonuçta ham yük tablosundan türetilir. İstek ve değerlendirme günlüklerini yük tablosundan kendiniz ayıklayabilirsiniz. Yük tablosundaki silme işlemleri ve güncelleştirmeler yük isteği günlüklerine veya yük değerlendirme günlüklerine yansıtılmaz.

Not

Azure Depolama Güvenlik Duvarı'nı etkinleştirdiyseniz, uç noktalarınızda çıkarım tablolarını etkinleştirmek için Databricks hesap ekibinize ulaşın.

Tablo Örnek Unity Kataloğu tablo adı Her tabloda ne var?
Yük {catalog_name}.{schema_name}.{model_name}_payload Ham JSON isteği ve yanıt yükleri
Yük isteği günlükleri {catalog_name}.{schema_name}.{model_name}_payload_request_logs Biçimlendirilmiş istek ve yanıtlar, MLflow izlemeleri
Yük değerlendirme günlükleri {catalog_name}.{schema_name}.{model_name}_payload_assessment_logs Her istek için Gözden Geçirme Uygulamasında sağlandığı gibi biçimlendirilmiş geri bildirim

Aşağıda istek günlükleri tablosunun şeması gösterilmektedir.

Sütun adı Type Veri Akışı Açıklaması
client_request_id String İstemci isteği kimliği, genellikle null.
databricks_request_id String Databricks istek kimliği.
date Tarih İstek tarihi.
timestamp_ms Uzun Milisaniye cinsinden zaman damgası.
timestamp Zaman damgası İsteğin zaman damgası.
status_code Tamsayı Uç noktanın durum kodu.
execution_time_ms Uzun Toplam yürütme milisaniyesi.
conversation_id String İstek günlüklerinden ayıklanan konuşma kimliği.
request String Kullanıcının konuşmasından son kullanıcı sorgusu. Bu, RAG isteğinden ayıklanır.
response String Kullanıcıya son yanıt. Bu, RAG isteğinden ayıklanır.
request_raw String İsteğin dize gösterimi.
response_raw String Yanıtın dize gösterimi.
trace String Yanıt Yapısı'ndan ayıklanan izlemenin databricks_options dize gösterimi.
sampling_fraction Çift Örnekleme kesri.
request_metadata Map[String, String] İstekle ilişkili uç nokta sunan modelle ilgili meta verilerin haritası. Bu eşleme uç noktanız için kullanılan uç nokta adını, model adını ve model sürümünü içerir.
schema_version String Şema sürümü için tamsayı.

Değerlendirme günlükleri tablosunun şeması aşağıdadır.

Sütun adı Type Veri Akışı Açıklaması
request_id String Databricks istek kimliği.
step_id String Alma değerlendirmesinden türetilmiştir.
source Yapı Değerlendirmeyi kimin oluşturduğuna ilişkin bilgileri içeren bir yapı alanı.
timestamp Zaman damgası İsteğin zaman damgası.
text_assessment Yapı Aracının gözden geçirme uygulamasından aldığı yanıtlarla ilgili geri bildirimlerin verilerini içeren bir yapı alanı.
retrieval_assessment Yapı Yanıt için alınan belgelerle ilgili geri bildirimlerin verilerini içeren bir yapı alanı.

Bağımlı kaynaklar için kimlik doğrulaması

Aracı dağıtımı için uç nokta sunan modeli oluştururken Databricks, uç noktayı oluşturanın aracının bağımlı olduğu tüm kaynaklara erişme izinlerine sahip olduğunu doğrular.

LangChain özellikli aracılar için, aracı oluşturma ve günlüğe kaydetme sırasında bağımlı kaynaklar otomatik olarak çıkarılır. Bu kaynaklar, günlüğe kaydedilen resources.yaml model yapıtındaki dosyaya kaydedilir. Dağıtım sırasında, databricks.agents.deploy bu çıkarsanan kaynak bağımlılıklarına erişmek ve bu bağımlılıklarla iletişim kurmak için gereken M2M OAuth belirteçlerini otomatik olarak oluşturur.

PyFunc özellikli aracılar için, dağıtılan aracıyı parametresinde resources günlüğe kaydederken kaynak bağımlılıklarını el ile belirtmeniz gerekir. Bkz . PyFunc veya LangChain aracısı için kaynakları belirtme. Dağıtım sırasında, databricks.agents.deploy parametresinde resources belirtilen kaynaklara erişimi olan bir M2M OAuth belirteci oluşturur ve dağıtılan aracıya dağıtır.

Otomatik kimlik doğrulama geçişi

Aşağıdaki tabloda otomatik kimlik doğrulaması geçişini destekleyen özellikler listelenmiştir. Otomatik kimlik doğrulama geçişi, desteklenen özelliklerde otomatik olarak kimlik doğrulaması yapmak için dağıtım oluşturucusunun kimlik bilgilerini kullanır.

Özellik En düşük mlflow sürüm
Vektör arama dizinleri mlflow 2.13.1 veya üzerini gerektirir
Model Sunma uç noktaları mlflow 2.13.1 veya üzerini gerektirir
SQL ambarları mlflow 2.16.1 veya üzerini gerektirir
Unity Kataloğu İşlevleri mlflow 2.16.1 veya üzerini gerektirir

El ile kimlik doğrulaması

Otomatik kimlik doğrulama geçişini desteklemeyen bağımlı bir kaynağınız varsa veya dağıtım oluşturucusunun kimlik bilgilerini kullanmak istiyorsanız, gizli dizi tabanlı ortam değişkenlerini kullanarak kimlik bilgilerini el ile sağlayabilirsiniz. Örneğin, diğer bağımlı kaynak türlerine erişmek için aracınızda Databricks SDK'sını kullanıyorsanız, Databricks istemcisi birleşik kimlik doğrulamasında açıklanan ortam değişkenlerini ayarlayabilirsiniz.

Dağıtılan uygulamaları alma

Aşağıda dağıtılan aracılarınızın nasıl alınılacağı gösterilmektedir.

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

Dağıtılan aracı hakkında geri bildirim sağlama (deneysel)

aracınızı ile agents.deploy()dağıttığınızda, aracı çerçevesi aynı uç nokta içinde aracı uygulamanızla ilgili geri bildirim sağlamak için sorgulayabileceğiniz bir "geri bildirim" modeli sürümü de oluşturur ve dağıtır. Geri bildirim girişleri, aracınızın hizmet veren uç noktasıyla ilişkili çıkarım tablosunda istek satırları olarak görünür.

Bu davranışın deneysel olduğunu unutmayın: Databricks gelecekte dağıtılan bir aracı hakkında geri bildirim sağlamak için birinci sınıf bir API sağlayabilir ve gelecekteki işlevler için bu API'ye geçiş gerekebilir.

Bu API'nin sınırlamaları şunlardır:

  • Geri bildirim API'sinde giriş doğrulaması yok. Geçersiz giriş geçirilse bile her zaman başarıyla yanıt veriyor.
  • Geri bildirim API'sinin, geri bildirim sağlamak istediğiniz aracı uç nokta isteğinin Databricks tarafından oluşturulmuş request_id olarak geçirilmesi gerekir. almak databricks_request_idiçin, aracı hizmet uç noktasına özgün isteğinize ekleyin {"databricks_options": {"return_trace": True}} . Aracı uç noktası yanıtı daha sonra istekle ilişkili olanını databricks_request_id içerir, böylece aracı yanıtı hakkında geri bildirim sağlarken bu istek kimliğini geri bildirim API'sine geçirebilirsiniz.
  • Çıkarım tabloları kullanılarak geri bildirim toplanır. Bkz . çıkarım tablosu sınırlamaları.

Aşağıdaki örnek istek, "your-agent-endpoint-name" adlı aracı uç noktası hakkında geri bildirim sağlar ve ortam değişkeninin DATABRICKS_TOKEN databricks REST API belirtecine ayarlandığını varsayar.

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

Farklı geri bildirim türleri sağlamak için ve retrieval_assessments.ratings alanlarına ek veya farklı anahtar-değer çiftleri text_assessments.ratings geçirebilirsiniz. Örnekte geri bildirim yükü, aracının kimliğe 573d4a61-4adb-41bd-96db-0ec8cebc3744 sahip isteğe verdiği yanıtın doğru, doğru ve bir alıcı aracı tarafından getirilen bağlamda topraklanmış olduğunu gösterir.

Ek kaynaklar