Ü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.agents
kullanarakdeploy()
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ıradeploy()
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.
- Ö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
- 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
- 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. almakdatabricks_request_id
iç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.