Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Halaman ini membahas cara men-debug masalah umum dengan agen AI yang disebarkan di Azure Databricks.
Pergi ke:
- Praktik Terbaik
- Pengembangan lokal
- masalah konfigurasi
- Masalah penyebaran
- Kesalahan runtime
- Kesalahan autentikasi
- Memori dan penyimpanan
Sebagian besar bagian debugging di halaman ini berlaku untuk agen yang di-deploy ke Aplikasi Databricks. Namun, Anda juga dapat menemukan informasi penelusuran kesalahan untuk agen yang disebarkan di Model Serving (warisan) menggunakan pemilih tab.
Agen author menggunakan praktik terbaik
Gunakan praktik terbaik berikut saat mengembangkan agen.
- Aktifkan pelacakan MLflow: Ikuti praktik terbaik dalam Menulis agen AI dan sebarkan di Aplikasi Databricks. Agar lebih mudah mem-debug agen Anda, aktifkan autologging pelacakan MLflow.
- Alat dokumen dengan jelas: Deskripsi alat dan parameter yang jelas memastikan agen Anda memahami alat Anda dan menggunakannya dengan tepat. Lihat Tingkatkan panggilan alat dengan dokumentasi yang jelas.
-
Tambahkan batas waktu habis dan token ke panggilan LLM: Tambahkan batas waktu habis dan token ke panggilan LLM dalam kode Anda untuk menghindari keterlambatan yang disebabkan oleh langkah-langkah yang berjalan lama.
- Jika agen Anda menggunakan klien OpenAI untuk mengkueri titik akhir penyajian AZURE Databricks LLM, atur batas waktu kustom pada panggilan titik akhir penyajian sesuai kebutuhan.
-
Validasi konfigurasi sebelum penyebaran: Jalankan
databricks bundle validatesebelum Anda menyebarkan untuk menangkap masalah konfigurasi YAML lebih awal. Ini membantu mengidentifikasi referensi sumber daya yang tidak cocok, izin yang tidak valid, dan kesalahan sintaksis. - Uji secara lokal terlebih dahulu: Gunakan pengembangan lokal untuk menangkap masalah sebelum Anda menyebarkan. Mulai server agen Anda secara lokal, uji dengan permintaan sampel, dan verifikasi bahwa jejak MLflow muncul dengan benar sebelum Anda menyebarkan ke Aplikasi Databricks.
Men-debug masalah pengembangan lokal
Uji agen Anda secara lokal untuk mengidentifikasi masalah sebelum penyebaran.
Sebelum Anda menjalankan agen secara lokal, verifikasi bahwa lingkungan Anda dikonfigurasi dengan benar:
Periksa versi Databricks CLI: Jalankan
databricks -vuntuk memverifikasi bahwa Anda memiliki versi 0.283.0 atau yang lebih baru.Verifikasi profil CLI: Jalankan
databricks auth profilesuntuk melihat profil autentikasi yang dikonfigurasi.Memvalidasi konfigurasi lingkungan: Periksa apakah file Anda
.envberisi variabel yang diperlukan, terutamaMLFLOW_TRACKING_URI, yang harus menggunakan formatdatabricks://PROFILE_NAMEuntuk menyertakan profil CLI Anda.
Kesalahan pengembangan lokal umum
| Kesalahan | Penyebab | Solusi |
|---|---|---|
The provided MLFLOW_EXPERIMENT_ID does not exist |
Format atau eksperimen URI pelacakan yang salah dihapus | Verifikasi bahwa MLFLOW_TRACKING_URI menggunakan databricks://PROFILE_NAME format dengan nama profil CLI Anda |
Module not found |
Dependensi tidak terinstal | Jalankan uv sync untuk menginstal dependensi |
Port already in use |
Proses lain menggunakan port | Gunakan --port bendera untuk menentukan port yang berbeda (misalnya, uv run start-app --port 8001) |
| Kesalahan autentikasi saat berjalan secara lokal | Lingkungan tidak dikonfigurasi | Jalankan skrip mulai cepat atau konfigurasikan .env file secara manual dengan profil CLI Anda |
Menguji agen di lingkungan lokal
Untuk menguji agen Anda sebelum pendistribusian:
Mulai server agen secara lokal:
uv run start-appDi terminal lain, kirim permintaan pengujian:
curl -X POST http://localhost:8000/invocations \ -H "Content-Type: application/json" \ -d '{"input": [{"role": "user", "content": "hello"}]}'Lihat jejak MLflow di antarmuka pengguna Azure Databricks untuk memverifikasi bahwa agen Anda mencatat jejak dengan benar.
Masalah konfigurasi debug
Kesalahan konfigurasi dalam databricks.yml dan app.yaml merupakan sumber umum kegagalan penyebaran.
Memvalidasi konfigurasi Bundel Otomatisasi Deklaratif
Validasi konfigurasi Bundel Otomatisasi Deklaratif sebelum menyebarkan aplikasi:
databricks bundle validate
Perintah ini memeriksa konfigurasi Anda untuk:
- Kesalahan sintaks YAML
- Bidang yang diperlukan tidak ada
- Referensi sumber daya tidak valid
- Masalah konfigurasi izin
Ketidakcocokan konfigurasi umum
| Titik konfigurasi | Peraturan | Cara debugging |
|---|---|---|
valueFrom referensi dalam app.yaml |
Harus sama persis dengan sumber daya name di databricks.yml |
Cari string yang tepat di kedua file untuk memverifikasi kecocokan |
| Nama aplikasi | Harus dimulai dengan awalan agent- (misalnya, agent-data-analyst) |
Periksa bidang di name bawah resources.apps di databricks.yml |
| ID Ruang Genie | Harus berupa string heksa 32 karakter dari URL Genie | Ekstrak dari jalur URL: https://workspace.cloud.databricks.com/genie/rooms/{SPACE_ID} |
| Referensi fungsi Katalog Unity | Harus menggunakan format catalog.schema.function_name |
Memverifikasi fungsi yang ada menggunakan databricks unity-catalog functions list |
| Referensi instans Lakebase | Harus menggunakan value (bukan valueFrom) dalam app.yaml file |
Nama instans adalah string literal, bukan referensi sumber daya |
Masalah penyebaran debug
Agen yang diimplementasikan ke aplikasi
Kesalahan: Aplikasi sudah ada
Kesalahan aplikasi sudah ada
Jika Anda melihat Error: failed to create app - An app with the same name already exists, Anda memiliki dua opsi:
Opsi 1: Ikat ke aplikasi yang ada (disarankan)
# 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>
Opsi 2: Hapus dan buat ulang
databricks apps delete <app-name>
databricks bundle deploy
databricks bundle run <bundle-name>
Aplikasi tidak diperbarui setelah penyebaran
Aplikasi tidak memperbarui setelah penyebaran
databricks bundle deploy hanya mengunggah file ke ruang kerja. Anda juga harus menjalankan databricks bundle run <bundle-name> untuk menghidupkan ulang aplikasi dengan kode baru.
Selalu sebarkan menggunakan kedua perintah:
databricks bundle deploy && databricks bundle run <bundle-name>
Lihat status dan catatan penyebaran
Lihat status serta log penyebaran
Untuk memeriksa status penyebaran aplikasi Anda:
databricks apps get <app-name>
Untuk melihat log aplikasi secara real time:
databricks apps logs <app-name> --follow
Agen pada Model Melayani (warisan)
Jika Anda menyebarkan agen menggunakan agents.deploy() ke titik akhir Model Serving, tinjau Panduan Debugging untuk Model Serving untuk masalah khusus penyebaran.
Untuk melakukan debug masalah runtime seperti permintaan yang lambat atau mengalami kegagalan, lihat Melakukan debug kesalahan runtime.
Debug kesalahan runtime
Agen yang diimplementasikan ke aplikasi
Gunakan log aplikasi dan minta pengujian untuk mengidentifikasi masalah dengan agen yang Anda sebarkan.
Menganalisis log aplikasi
Lihat log real-time dari aplikasi yang Anda sebarkan:
databricks apps logs <app-name> --follow
Cari:
- Stack trace menunjukkan kesalahan kode
- Pesan penolakan izin untuk sumber daya
- Kesalahan koneksi ke layanan eksternal
- Pesan batas waktu
Kesalahan runtime umum
| Error | Sebab | Solution |
|---|---|---|
| Pengalihan 302 saat melakukan query pada aplikasi | Menggunakan Token Akses Pribadi alih-alih OAuth | Mendapatkan token OAuth dengan databricks auth token |
| Agen tidak menggunakan alat yang tersedia | Perangkat yang tidak dikembalikan oleh klien MCP | Pastikan URL server MCP sudah benar dan sumber daya memiliki izin yang tepat di databricks.yml |
| Respons streaming terputus di tengah-tengah tanggapan | Waktu koneksi habis |
CHAT_PROXY_TIMEOUT_SECONDS Meningkatkan variabel lingkungan diapp.yaml |
| Agen yang mengembalikan "Memori tidak tersedia" | Komponen user_id hilang dalam permintaan |
Kirim custom_inputs.user_id dalam permintaan payload |
| Respons kosong atau kesalahan meskipun status 200 | Kesalahan terjadi dalam respons yang dialirkan | Periksa konten streaming aktual dan log aplikasi, bukan hanya kode status HTTP |
Agen pada Model Melayani (warisan)
Gunakan tabel inferensi dan jejak MLflow untuk mengidentifikasi masalah dengan agen yang disebarkan ke titik akhir Model Serving.
Mengidentifikasi permintaan bermasalah
Jika Anda mengaktifkan pencatatan otomatis pelacakan MLflow saat menulis agen Anda, jejak secara otomatis masuk ke tabel inferensi. Gunakan jejak ini untuk mengidentifikasi komponen agen yang lambat atau gagal.
- Di ruang kerja Anda, buka tab Melayani dan pilih nama penyebaran Anda.
- Di bagian Tabel inferensi , temukan nama tabel inferensi yang sepenuhnya memenuhi syarat. Contohnya,
my-catalog.my-schema.my-table. - Jalankan yang berikut ini di buku catatan Databricks:
%sql SELECT * FROM my-catalog.my-schema.my-table - Periksa kolom Respons untuk informasi pelacakan terperinci.
- Filter pada
request_time,databricks_request_idataustatus_codeuntuk mempersempit hasil.%sql SELECT * FROM my-catalog.my-schema.my-table WHERE status_code != 200
Menganalisis akar masalah penyebab
Setelah mengidentifikasi permintaan yang gagal atau lambat, gunakan API mlflow.models.validate_serving_input untuk memanggil agen Anda terhadap permintaan input yang gagal. Lihat jejak yang dihasilkan dan lakukan analisis akar penyebab pada respons yang gagal.
Untuk mempercepat proses pengembangan, perbarui kode agen Anda secara langsung, lalu lakukan iterasi dengan memanggil agen Anda pada contoh input yang gagal.
Debug kesalahan autentikasi
Agen yang diimplementasikan ke aplikasi
Autentikasi token OAuth diperlukan
Autentikasi token OAuth diperlukan
Anda harus menggunakan token OAuth Databricks untuk mengkueri agen yang disebarkan ke Aplikasi. Menggunakan Token Akses Pribadi (PAT) menghasilkan kesalahan pengalihan 302.
Untuk mendapatkan token OAuth:
databricks auth token
Gunakan token dalam permintaan ke aplikasi yang Anda sebarkan:
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"}]}'
Kesalahan izin sumber daya
Kesalahan izin sumber daya
Ketika agen Anda tidak dapat mengakses sumber daya ruang kerja, verifikasi bahwa sumber daya dikonfigurasi dengan benar di databricks.yml. Setiap jenis sumber daya memerlukan izin tertentu:
| Error | Sebab | Solution |
|---|---|---|
| Izin ditolak pada Genie Space | Sumber daya hilang genie_space |
Tambahkan genie_space sumber daya dengan permission: 'CAN_RUN' |
| Indeks pencarian vektor tidak dapat diakses | Sumber daya hilang untuk indeks uc_securable |
uc_securable Menambahkan sumber daya dengan securable_type: 'TABLE' dan permission: 'SELECT' |
| Eksekusi fungsi Katalog Unity ditolak | Sumber daya yang hilang uc_securable untuk fungsi |
uc_securable Menambahkan sumber daya dengan securable_type: 'FUNCTION' dan permission: 'EXECUTE' |
| Akses titik akhir penyajian ditolak | Sumber daya hilang serving_endpoint |
Tambahkan serving_endpoint sumber daya dengan permission: 'CAN_QUERY' |
| Akses gudang SQL ditolak | Sumber daya hilang sql_warehouse |
Tambahkan sql_warehouse sumber daya dengan permission: 'CAN_USE' |
Contoh konfigurasi sumber daya di databricks.yml:
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'
Izin server MCP kustom
Izin kustom server MCP
Jika agen Anda terhubung ke server MCP kustom yang berjalan sebagai aplikasi Databricks, Anda harus memberikan izin secara manual karena aplikasi belum didukung sebagai dependensi sumber daya di databricks.yml.
# 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\"}]}"
Agen pada Model Melayani (warisan)
Jika agen yang Anda sebarkan mengalami kesalahan autentikasi saat mengakses sumber daya seperti indeks pencarian vektor atau endpoint LLM, verifikasi bahwa agen tersebut terautentikasi dengan sumber daya yang diperlukan untuk penerusan autentikasi otomatis. Lihat penerusan autentikasi otomatis.
Untuk memeriksa sumber daya yang dicatat, jalankan yang berikut ini di buku catatan:
%pip install -U mlflow[databricks]
%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)
Untuk menambahkan kembali sumber daya yang hilang atau salah, masuk ke sistem sebagai agen dan terapkan lagi.
Jika Anda menggunakan autentikasi manual untuk sumber daya, verifikasi bahwa variabel lingkungan diatur dengan benar. Pengaturan manual mengambil alih konfigurasi autentikasi otomatis apa pun. Lihat Autentikasi manual.
Men-debug masalah memori dan penyimpanan
Untuk agen yang menggunakan Lakebase untuk penyimpanan memori, masalah berikut umum terjadi:
| Error | Sebab | Solution |
|---|---|---|
relation 'store' does not exist |
Tabel memori tidak diinisialisasi | Jalankan await store.setup() secara lokal sebelum menyebarkan untuk membuat tabel yang diperlukan |
Unable to resolve :re[LKB] instance |
Nama instans yang salah atau konfigurasi yang salah | Verifikasi LAKEBASE_INSTANCE_NAME menggunakan value (bukan valueFrom) di app.yaml dan cocok dengan instance_name di databricks.yml. |
permission denied for table store |
Izin untuk Lakebase hilang | Tambahkan sumber daya database di databricks.yml dengan permission: 'CAN_CONNECT_AND_CREATE' |
| Memori tidak bertahan di seluruh percakapan | Berbeda user_id berdasarkan permintaan |
Pastikan Anda meneruskan user_id yang konsisten dalam custom_inputs untuk setiap pengguna |
Contoh konfigurasi sumber daya Lakebase:
resources:
apps:
my_agent:
resources:
- name: 'memory_database'
database:
instance_name: '<lakebase-instance-name>'
database_name: 'postgres'
permission: 'CAN_CONNECT_AND_CREATE'
Sebelum menyebarkan agen dengan memori, inisialisasi tabel secara lokal:
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())