Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfa, Azure Databricks üzerinde dağıtılan özel kod aracılarında karşılaşılan yaygın sorunlarda nasıl hata ayıklanacağını ele alır.
Şuraya gidin:
- En iyi uygulamalar
- Yerel geliştirme
- Yapılandırma sorunları
- Dağıtım sorunları
- Çalışma zamanı hataları
- Kimlik doğrulama hataları
- Bellek ve depolama
Bu sayfadaki hata ayıklama bölümlerinin çoğu Databricks Uygulamalarına dağıtılan aracılar için geçerlidir. Ancak, sekme seçicilerini kullanarak Model Sunma 'da (eski) dağıtılan aracıların hata ayıklama bilgilerini de bulabilirsiniz.
En iyi yöntemleri kullanarak aracı oluşturma
Aracı oluştururken aşağıdaki en iyi yöntemleri kullanın:
- MLflow izlemeyi etkinleştirme: Yapay zeka aracısı yazma ve databricks uygulamalarına dağıtma konusunda en iyi yöntemleri izleyin. Aracılarınızın hata ayıklamasını kolaylaştırmak için MLflow izleme otomatik kaydetmeyi etkinleştirin.
- Belge araçlarını açıkça tanımlayın: Araç ve parametre açıklamalarını net bir şekilde belirtmek, ajanınızın araçlarınızı anlamasını ve bunları uygun şekilde kullanmasını sağlar. Bkz Açık belgelerle araç çağırmayı iyileştirin.
-
LLM çağrılarına zaman aşımları ve belirteç sınırları ekleme: Uzun süre çalışan adımlardan kaynaklanan gecikmeleri önlemek için kodunuzdaki LLM çağrılarına zaman aşımları ve belirteç sınırları ekleyin.
- Aracınız Bir Azure Databricks LLM sunum uç noktasını sorgulamak için OpenAI istemcisini kullanıyorsa, hizmet veren uç nokta çağrılarında gerektiğinde özel zaman aşımları ayarlayın.
-
Dağıtımdan önce yapılandırmayı doğrulama: YAML yapılandırma sorunlarını erken yakalamak için dağıtmadan önce çalıştırın
databricks bundle validate. Bu, eşleşmeyen kaynak başvurularını, geçersiz izinleri ve söz dizimi hatalarını tanımlamaya yardımcı olur. - Önce yerel olarak test edin: Dağıtmadan önce sorunları yakalamak için yerel geliştirmeyi kullanın. Aracı sunucunuzu yerel olarak başlatın, örnek isteklerle test edin ve Databricks Uygulamalarına dağıtmadan önce MLflow izlemelerinin doğru göründüğünü doğrulayın.
Yerel geliştirme sorunlarının hatalarını ayıklama
Dağıtımdan önce sorunları belirlemek için aracınızı yerel olarak test edin.
Aracınızı yerel olarak çalıştırmadan önce ortamınızın doğru yapılandırıldığını doğrulayın:
Databricks CLI sürümünü denetleyin: 0.283.0 veya sonraki bir sürüme sahip olduğunuzu doğrulamak için komutunu çalıştırın
databricks -v.CLI profillerini doğrulama: Yapılandırılan kimlik doğrulama profillerini görmek için komutunu çalıştırın
databricks auth profiles.Ortam yapılandırmasını doğrulama: Dosyanızın, cli profilinizi
.envdahil etmek için biçiminiMLFLOW_TRACKING_URIkullanması gereken gerekli değişkenleri( özellikledatabricks://PROFILE_NAME) içerdiğini denetleyin.
Yaygın yerel geliştirme hataları
| Error | Cause | Çözüm |
|---|---|---|
The provided MLFLOW_EXPERIMENT_ID does not exist |
Yanlış izleme URL biçimi veya deney silindi | CLI profil adınızın MLFLOW_TRACKING_URI formatını databricks://PROFILE_NAME kullandığını doğrulayın |
Module not found |
Bağımlılıklar yüklenmemiş | Bağımlılıkları yüklemek için komutunu çalıştırın uv sync |
Port already in use |
Bağlantı noktasını kullanan başka bir işlem | Farklı bir bağlantı noktası belirtmek için bayrağını kullanın --port (örn. uv run start-app --port 8001) |
| Yerel olarak çalışırken kimlik doğrulama hataları | Ortam yapılandırılmadı | Hızlı başlangıç betiğini çalıştırma veya dosyayı CLI profilinizle el ile yapılandırma .env |
Ajanı yerel olarak test edin
Dağıtımdan önce aracınızı test etmek için:
Aracı sunucusunu yerel olarak başlatın:
uv run start-appBaşka bir terminalde bir test isteği gönderin:
curl -X POST http://localhost:8000/invocations \ -H "Content-Type: application/json" \ -d '{"input": [{"role": "user", "content": "hello"}]}'Aracınızın izlemeleri doğru şekilde günlüğe kaydetmesini doğrulamak için Azure Databricks kullanıcı arabiriminde MLflow izlemelerini görüntüleyin.
Hata ayıklama yapılandırma sorunları
ve databricks.yml içindeki app.yaml yapılandırma hataları, yaygın dağıtım hatalarının kaynaklarıdır.
Bildirim temelli Otomasyon Paketleri yapılandırmasını doğrulama
Uygulamayı dağıtmadan önce Bildirim temelli Otomasyon Paketleri yapılandırmasını doğrulayın:
databricks bundle validate
Bu komut yapılandırmanızı denetler:
- YAML sözdizimi hataları
- Eksik gerekli alanlar
- Geçersiz kaynak başvuruları
- İzin yapılandırma sorunları
Yaygın yapılandırma uyuşmazlıkları
| Yapılandırma noktası | Kural | Hata ayıklama nasıl yapılır |
|---|---|---|
valueFrom referansları app.yaml |
Belirli bir kaynak ile name tam olarak eşleşmelidir databricks.yml. |
Eşleştiklerini doğrulamak için her iki dosyada da tam dizeyi arayın |
| Uygulama adı | Ön ek ile agent- başlamalıdır (örn. agent-data-analyst) |
name altındaki alanı resources.apps denetleyindatabricks.yml |
| Genie Temsilci Kimliği | Genie URL'sinden alınan, 32 karakterlik bir onaltılık dize olmalıdır. | URL yolundan ayıkla: https://workspace.cloud.databricks.com/genie/rooms/{SPACE_ID} |
| Unity Kataloğu işlev referansı | Format catalog.schema.function_name kullanılmalıdır |
kullanarak işlevin var olduğunu doğrulayın databricks unity-catalog functions list |
| Lakebase örnek referansı | Dosyada value (değilvalueFrom) kullanılmalıdır app.yaml |
Örnek adı, kaynak başvurusu değil, harfi harfine bir metin dizgesidir |
Dağıtım sorunlarını ayıklama
Uygulamalara dağıtılan aracılar
Uygulama zaten var hatası
Uygulama zaten var hatası
Görürseniz Error: failed to create app - An app with the same name already exists, iki seçeneğiniz vardır:
Seçenek 1: Mevcut uygulamaya bağlama (önerilir)
# Get existing app configuration
databricks apps get <app-name> --output json
# Sync the configuration to your databricks.yml, then bind
databricks bundle deployment bind <bundle-name> <app-name> --auto-approve
# Deploy
databricks bundle deploy
databricks bundle run <bundle-name>
2. Seçenek: Silme ve yeniden oluşturma
databricks apps delete <app-name>
databricks bundle deploy
databricks bundle run <bundle-name>
Uygulama dağıtımdan sonra güncelleştirilmiyor
Uygulama dağıtıldıktan sonra güncelleştirilmiyor
databricks bundle deploy yalnızca dosyaları çalışma alanına yükler. Uygulamayı yeni kodla yeniden başlatmak için de komutunu çalıştırmanız databricks bundle run <bundle-name> gerekir.
Her zaman her iki komutu kullanarak dağıtın:
databricks bundle deploy && databricks bundle run <bundle-name>
Dağıtım durumunu ve günlüklerini görüntüleme
Dağıtım durumunu ve günlüklerini görüntüleme
Uygulamanızın dağıtım durumunu denetlemek için:
databricks apps get <app-name>
Uygulama günlüklerini gerçek zamanlı olarak görüntülemek için:
databricks apps logs <app-name> --follow
Model Servis Agent'leri (Eski)
Eğer aracınızı agents.deploy() kullanarak Model Sunma uç noktasına dağıttıysanız, dağıtıma özgü sorunlar için Model Sunma Hata Ayıklama kılavuzunu gözden geçirin.
Yavaş veya başarısız istekler gibi çalışma zamanı sorunlarını ayıklamak için bkz. Çalışma zamanı hatalarını ayıklama.
Çalışma zamanı hatalarını ayıklama
Uygulamalara dağıtılan aracılar
Dağıtılan aracınızla ilgili sorunları belirlemek için uygulama günlüklerini ve istek testini kullanın.
Uygulama günlüklerini analiz etme
Dağıtılan uygulamanızdan gerçek zamanlı günlükleri görüntüleyin:
databricks apps logs <app-name> --follow
Şunu arayın:
- Kod hatalarını gösteren yığın izlemeleri
- Kaynaklar için izin reddedildi iletileri
- Dış hizmetlere bağlantı hataları
- Zaman aşımı iletileri
Yaygın çalışma zamanı hataları
| Error | Sebep | Solution |
|---|---|---|
| Uygulamayı sorgularken 302 yeniden yönlendirme | OAuth yerine Kişisel Erişim Belirteci kullanma | ile OAuth belirteci alma databricks auth token |
| Kullanılabilir araçları kullanmayan ajan/temsilci | MCP istemcisinden döndürülmeyen araçlar | MCP sunucusu URL'sinin doğru olduğundan ve kaynağın databricks.yml içinde uygun izinlere sahip olduğundan emin olun. |
| Akış yanıtı, yanıtın ortasında kesintiye uğruyor | Bağlantı zaman aşımına uğradı |
CHAT_PROXY_TIMEOUT_SECONDS içindeki app.yaml ortam değişkenini artırın |
| "Bellek kullanılamıyor" ifadesini döndüren ajan | İstekte user_id eksik |
İstek yüküne custom_inputs.user_id geç |
| 200 durumuna rağmen boş veya hata yanıtları | Akışı yapılan yanıtta hata oluştu | Yalnızca HTTP durum kodunu değil gerçek akış içeriğini ve uygulama günlüklerini denetleyin |
Model Servis Agent'leri (Eski)
Model Sunma uç noktalarına dağıtılan aracılarla ilgili sorunları belirlemek için çıkarım tablolarını ve MLflow izlemelerini kullanın.
Sorunlu istekleri tanımlama
Ajanınızı oluştururken MLflow iz otomatik kaydetmeyi etkinleştirdiyseniz, izler çıkarım tablolarına otomatik olarak kaydedilir. Yavaş veya başarısız olan aracı bileşenlerini tanımlamak için bu izlemeleri kullanın.
- Çalışma alanınızda , Sunum sekmesine gidin ve dağıtım adınızı seçin.
- Çıkarım tabloları bölümünde çıkarım tablosunun tam adını bulun. Örneğin,
my-catalog.my-schema.my-table. - Databricks not defterinde aşağıdakileri çalıştırın:
%sql SELECT * FROM my-catalog.my-schema.my-table - Ayrıntılı izleme bilgileri için Yanıt sütununu inceleyin.
- Sonuçları daraltmak için
request_time,databricks_request_idveyastatus_codeüzerinde filtreleyin.%sql SELECT * FROM my-catalog.my-schema.my-table WHERE status_code != 200
Kök neden sorunlarını analiz etme
Başarısız veya yavaş istekleri belirledikten sonra, başarısız giriş isteğine karşı aracınızı çağırmak için mlflow.models.validate_serving_input API'sini kullanın. Elde edilen iz sonucunu görüntüleyin ve başarısız yanıt üzerinde kök neden analizi gerçekleştirin.
Daha hızlı bir geliştirme döngüsü için aracı kodunuzu doğrudan güncelleştirin ve aracınızı başarısız giriş örneğine karşı çağırarak yineleyin.
Kimlik doğrulama hatalarını ayıklama
Uygulamalara dağıtılan aracılar
OAuth jetonu kimlik doğrulaması gerekiyor
OAuth jeton kimlik doğrulaması gerekli
Uygulamalara dağıtılan aracıları sorgulamak için Databricks OAuth belirteci kullanmanız gerekir. Kişisel Erişim Belirteci (PAT) kullanıldığında 302 yeniden yönlendirme hatası oluşur.
OAuth belirteci almak için:
databricks auth token
Dağıtılan uygulamanıza yönelik isteklerde belirteci kullanın:
TOKEN=$(databricks auth token | jq -r '.access_token')
curl -X POST <app-url>/invocations \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"input": [{"role": "user", "content": "hello"}]}'
Kaynak izni hataları
Kaynak izni hataları
Etmeniniz çalışma alanı kaynaklarına erişemediğinde, kaynağın databricks.yml içinde düzgün yapılandırıldığını doğrulayın. Her kaynak türü için belirli izinler gerekir:
| Error | Sebep | Solution |
|---|---|---|
| Genie Aracısı'nda izin reddedildi | Eksik genie_space kaynak |
genie_space kaynağı permission: 'CAN_RUN' ile ekle |
| AI Search dizini erişilebilir değil | Dizin için eksik uc_securable kaynak |
uc_securable kaynağını securable_type: 'TABLE' ve permission: 'SELECT' ile ekleyin |
| Unity Kataloğu işlevi yürütme reddedildi | İşlev için eksik uc_securable kaynak |
uc_securable kaynağını securable_type: 'FUNCTION' ve permission: 'EXECUTE' ile ekleyin |
| Uç nokta erişimi sunma reddedildi | Eksik serving_endpoint kaynak |
serving_endpoint kaynağı permission: 'CAN_QUERY' ile ekle |
| SQL ambarı erişimi reddedildi | Eksik sql_warehouse kaynak |
sql_warehouse kaynağı permission: 'CAN_USE' ile ekle |
databricks.yml içinde örnek kaynak yapılandırması:
resources:
apps:
my_agent:
name: 'agent-my-app'
resources:
- name: 'my_genie_space'
genie_space:
space_id: '01234567890abcdef01234567890abcd'
permission: 'CAN_RUN'
- name: 'my_vector_index'
uc_securable:
securable_full_name: 'catalog.schema.index_name'
securable_type: 'TABLE'
permission: 'SELECT'
Özel MCP sunucusu izinleri
Özel MCP sunucusu izinleri
Aracınız Databricks uygulaması olarak çalışan özel bir MCP sunucusuna bağlanıyorsa, uygulamalar henüz içinde databricks.ymlkaynak bağımlılıkları olarak desteklenmediğinden el ile izin vermelisiniz.
# Get your agent app's service principal
AGENT_SP=$(databricks apps get <agent-app-name> --output json | jq -r '.service_principal_name')
# Grant permission on the MCP server app
databricks apps update-permissions <mcp-server-app-name> \
--json "{\"access_control_list\": [{\"service_principal_name\": \"$AGENT_SP\", \"permission_level\": \"CAN_USE\"}]}"
Model Servis Agent'leri (Eski)
Dağıtılan aracınız AI Search dizinleri veya LLM uç noktaları gibi kaynaklara erişirken kimlik doğrulama hatalarıyla karşılaşıyorsa, kimlik doğrulamasının otomatik olarak aktarılabilmesi için gerekli kaynaklarla ilişkilendirildiğini doğrulayın. Bkz. Otomatik kimlik doğrulaması geçişi.
Günlüğe kaydedilen kaynakları incelemek için not defterinde aşağıdakileri çalıştırın:
%pip install -U mlflow[databricks]==2.20.2
%restart_python
import mlflow
mlflow.set_registry_uri("databricks-uc")
# Replace with the model name and version of your deployed agent
agent_registered_model_name = ...
agent_model_version = ...
model_uri = f"models:/{agent_registered_model_name}/{agent_model_version}"
agent_info = mlflow.models.Model.load(model_uri)
print(f"Resources logged for agent model {model_uri}:", agent_info.resources)
Eksik veya yanlış kaynakları yeniden eklemek için aracı sisteme kaydedin ve yeniden dağıtın.
Kaynaklar için el ile kimlik doğrulaması kullanıyorsanız ortam değişkenlerinin doğru ayarlandığını doğrulayın. El ile yapılan ayarlar tüm otomatik kimlik doğrulama yapılandırmalarını geçersiz kılar. Bkz. El ile kimlik doğrulaması.
Bellek ve depolama sorunlarının hatalarını ayıklama
Bellek depolaması için Lakebase kullanan aracılar için aşağıdaki sorunlar yaygındır:
| Error | Sebep | Solution |
|---|---|---|
relation 'store' does not exist |
Bellek tabloları başlatılmadı | Gerekli tabloları oluşturmak için dağıtmadan önce yerel olarak çalıştırma await store.setup() |
Unable to resolve :re[LKB] instance |
Yanlış örnek adı veya yanlış yapılandırma |
LAKEBASE_INSTANCE_NAME kullanımlarının value olduğunu doğrulayın ve valueFrom içindekilerle app.yaml değerinin instance_name içindekilerle eşleştiğini kontrol edin. |
permission denied for table store |
Eksik Lakebase izinleri |
database içinde databricks.yml ile bir permission: 'CAN_CONNECT_AND_CREATE' kaynağı ekleyin |
| Konuşmalar arasında bellek kalıcı değil | İstek başına farklı user_id |
Her kullanıcı için tutarlı user_idcustom_inputs bir geçiş yaptığınızdan emin olun |
Örnek Lakebase kaynak yapılandırması:
resources:
apps:
my_agent:
resources:
- name: 'memory_database'
database:
instance_name: '<lakebase-instance-name>'
database_name: 'postgres'
permission: 'CAN_CONNECT_AND_CREATE'
Bir aracıyı bellekle dağıtmadan önce tabloları yerel olarak başlatın:
import asyncio
from databricks_langchain import AsyncDatabricksStore
async def setup_memory():
async with AsyncDatabricksStore(
instance_name='your-lakebase-instance',
embedding_endpoint='databricks-gte-large-en',
embedding_dims=1024,
) as store:
await store.setup()
asyncio.run(setup_memory())