Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka se věnuje tomu, jak řešit běžné problémy s agenty s vlastním kódem nasazenými v Azure Databricks.
Přejít na:
- Osvědčené postupy
- Místní vývoj
- Problémy s konfigurací
- Problémy s nasazením
- Chyby za běhu programu
- Chyby ověřování
- Paměť a úložiště
Většina sekcí odlaďování na této stránce se vztahuje na agenty nasazené v Databricks Apps. Pomocí selektorů karet ale můžete najít také informace o ladění agentů nasazených ve službě Model Serving (starší verze ).
Autorizujte agenty pomocí osvědčených postupů
Při vytváření agentů použijte následující osvědčené postupy:
- Povolte trasování MLflow: Postupujte podle osvědčených postupů při tvorbě AI agenta a jeho nasazení do Databricks Apps. Povolte automatické protokolování trasování MLflow , abyste usnadnili ladění agentů.
- Jasně zdokumentujte nástroje: Jasné popisy nástrojů a parametrů zajistí, že váš agent rozumí vašim nástrojům a správně je používá. Podívejte se na vylepšení volání nástrojů pomocí jasné dokumentace.
-
Přidání časových limitů a limitů tokenů pro volání LLM: Přidejte limity časových limitů a tokenů do volání LLM v kódu, aby nedocházelo ke zpožděním způsobeným dlouhotrvajícími kroky.
- Pokud váš agent používá klienta OpenAI k dotazování koncového bodu obsluhy Azure Databricks LLM, nastavte vlastní časové limity pro volání obsluhujícího koncového bodu podle potřeby.
-
Před nasazením ověřte konfiguraci: Spusťte
databricks bundle validatepřed nasazením, abyste zachytili problémy s konfigurací YAML dříve. To pomáhá identifikovat neshodované odkazy na prostředky, neplatná oprávnění a chyby syntaxe. - Nejprve nejprve otestujte: Před nasazením použijte místní vývoj k zachycení problémů. Spusťte server agenta místně, otestujte ukázkové požadavky a před nasazením do Databricks Apps ověřte, jestli se trasování MLflow zobrazuje správně.
Ladění problémů s místním vývojem
Otestujte agenta místně a zjistěte problémy před nasazením.
Před místním spuštěním agenta ověřte, že je vaše prostředí správně nakonfigurované:
Zkontrolujte verzi Rozhraní příkazového řádku Databricks: Spuštěním
databricks -vověřte, že máte verzi 0.283.0 nebo novější.Ověření profilů rozhraní příkazového řádku: Spuštěním
databricks auth profileszobrazíte nakonfigurované profily ověřování.Ověření konfigurace prostředí: Zkontrolujte, jestli soubor
.envobsahuje požadované proměnné, zejménaMLFLOW_TRACKING_URI, které musí použít formátdatabricks://PROFILE_NAMEpro zahrnutí profilu rozhraní příkazového řádku.
Běžné chyby místního vývoje
| Error | Příčina | Řešení |
|---|---|---|
The provided MLFLOW_EXPERIMENT_ID does not exist |
Došlo k odstranění nesprávného formátu identifikátoru URI sledování nebo experimentu. | Ověřte, že MLFLOW_TRACKING_URI používá formát databricks://PROFILE_NAME pro název profilu CLI. |
Module not found |
Závislosti nebyly nainstalovány. | Spusťte uv sync pro instalaci závislostí |
Port already in use |
Jiný proces používající port | Použití --port příznaku k určení jiného portu (např. uv run start-app --port 8001) |
| Chyby ověřování při místním spuštění | Prostředí není nakonfigurováno. | Spusťte skript pro rychlý start nebo ručně nakonfigurujte .env soubor s profilem rozhraní příkazového řádku. |
Otestujte agenta lokálně
Otestování agenta před nasazením:
Místní spuštění serveru agenta:
uv run start-appV jiném terminálu odešlete testovací požadavek:
curl -X POST http://localhost:8000/invocations \ -H "Content-Type: application/json" \ -d '{"input": [{"role": "user", "content": "hello"}]}'Zobrazte trasování MLflow v uživatelském rozhraní Azure Databricks a ověřte, že váš agent správně protokoluje trasování.
Problémy s konfigurací ladění
Chyby konfigurace v databricks.yml a app.yaml jsou běžnými zdroji selhání nasazení.
Ověřte konfiguraci deklarativních balíčků automatizace
Před nasazením aplikace ověřte konfiguraci balíčků deklarativní automatizace.
databricks bundle validate
Tento příkaz zkontroluje vaši konfiguraci pro:
- Syntaktické chyby YAML
- Chybějící požadovaná pole
- Neplatné odkazy na prostředky
- Problémy s konfigurací oprávnění
Běžné neshody konfigurace
| Bod konfigurace | Pravidlo | Postup ladění |
|---|---|---|
valueFrom odkazy v app.yaml |
Musí přesně odpovídat zdroji name v databricks.yml |
Vyhledejte přesný řetězec v obou souborech a ověřte, že odpovídají. |
| Název aplikace | Musí začínat předponou agent- (např. agent-data-analyst) |
Zkontrolujte pole name v části resources.apps v databricks.yml |
| ID agenta Genie | Musí to být 32znakový šestnáctkový řetězec z URL adresy Genie. | Extrahování z cesty URL: https://workspace.cloud.databricks.com/genie/rooms/{SPACE_ID} |
| Referenční informace k funkcím katalogu Unity | Musí používat formát. catalog.schema.function_name |
Ověření existence funkce pomocí databricks unity-catalog functions list |
| Referenční informace k instanci Lakebase | V souboru se musí používat value (nevalueFrom)app.yaml |
Název instance je doslovný řetězec, nikoli odkaz na zdroj. |
Řešení problémů s laděním nasazení
Agenti nasazení do aplikací
Chyba aplikace už existuje.
Chyba aplikace už existuje.
Pokud se zobrazí Error: failed to create app - An app with the same name already exists, máte dvě možnosti:
Možnost 1: Vytvoření vazby k existující aplikaci (doporučeno)
# 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>
Možnost 2: Odstranění a opětovné vytvoření
databricks apps delete <app-name>
databricks bundle deploy
databricks bundle run <bundle-name>
Aplikace se po nasazení neaktualizuje
Aplikace se po nasazení neaktualizuje
databricks bundle deploy nahrává soubory pouze do pracovního prostoru. Musíte také spustit databricks bundle run <bundle-name>, aby se aplikace restartovala s novým kódem.
Vždy nasazovat pomocí obou příkazů:
databricks bundle deploy && databricks bundle run <bundle-name>
Zobrazení stavu nasazení a protokolů
Zobrazení stavu nasazení a protokolů
Kontrola stavu nasazení vaší aplikace:
databricks apps get <app-name>
Zobrazení protokolů aplikací v reálném čase:
databricks apps logs <app-name> --follow
Agenti při servisu modelů (starší verze)
Pokud jste svého agenta nasadili pomocí agents.deploy() na koncový bod obsluhy modelů, projděte si průvodce laděním pro obsluhu modelů ohledně problémů specifických pro nasazení.
Pokud chcete ladit chyby modulu runtime, jako jsou pomalé nebo neúspěšné požadavky, podívejte se na sekci Ladění chyb za běhu.
Ladění chyb modulu runtime
Agenti nasazení do aplikací
K identifikaci problémů s nasazeným agentem použijte protokoly aplikací a testování požadavků.
Analýza protokolů aplikací
Zobrazení protokolů v reálném čase z nasazené aplikace:
databricks apps logs <app-name> --follow
Hledejte:
- Stack trace s chybami kódu
- Zprávy o odepření přístupových práv k prostředkům
- Chyby připojení k externím službám
- Zprávy o vypršení časového limitu
Běžné chyby modulu runtime
| Error | Příčina | Solution |
|---|---|---|
| Přesměrování 302 při dotazu na aplikaci | Použití osobního přístupového tokenu místo OAuth | Získání tokenu OAuth s využitím databricks auth token |
| Agent nepoužívá dostupné nástroje | Nástroje se nevrácely z klienta MCP | Ověřte správnost adresy URL serveru MCP a že prostředek má správná oprávnění. databricks.yml |
| Odpověď streamování se přeruší uprostřed. | Časový limit připojení vypršel | Zvyšte proměnnou prostředí CHAT_PROXY_TIMEOUT_SECONDS v app.yaml |
| Agent vracející hlášení 'Paměť není k dispozici' | Chybí user_id v žádosti |
Předat custom_inputs.user_id v datové části žádosti |
| Prázdné odpovědi nebo chybové odpovědi bez ohledu na stav 200 | Během streamované odpovědi došlo k chybě. | Zkontrolujte skutečný obsah streamu a protokoly aplikací, nejen stavový kód HTTP. |
Agenti při servisu modelů (starší verze)
Pomocí odvozovacích tabulek a trasování MLflow identifikujte problémy s agenty nasazenými do koncových bodů obsluhy modelů.
Identifikace problematických požadavků
Pokud jste při vytváření agenta povolili automatické protokolování trasování MLflow , trasování se automaticky zaprotokoluje v tabulkách odvozování. Pomocí těchto stop identifikujte komponenty agenta, které jsou pomalé nebo selhávají.
- V pracovním prostoru přejděte na kartu Obsluha a vyberte název nasazení.
- V části Odvozovací tabulky vyhledejte plně kvalifikovaný název tabulky odvození. Například:
my-catalog.my-schema.my-table. - V poznámkovém bloku Databricks spusťte následující příkaz:
%sql SELECT * FROM my-catalog.my-schema.my-table - Podrobné informace o trasování najdete ve sloupci Odpověď .
- Filtrovat podle
request_time,databricks_request_idnebostatus_codea zúžit výsledky.%sql SELECT * FROM my-catalog.my-schema.my-table WHERE status_code != 200
Analýza problémů s původní příčinou
Po identifikaci neúspěšných nebo pomalých požadavků použijte rozhraní API mlflow.models.validate_serving_input k vyvolání agenta proti neúspěšné vstupní žádosti. Prohlédněte si výsledné trasování a proveďte analýzu původní příčiny u neúspěšné odpovědi.
Pro rychlejší vývojovou smyčku aktualizujte kód agenta přímo a iterujte voláním agenta proti příkladu neúspěšného vstupu.
Ladění chyb ověřování
Agenti nasazení do aplikací
Vyžaduje se ověřování tokenu OAuth.
Vyžaduje se ověřování tokenu OAuth.
K dotazování agentů nasazených do aplikací musíte použít token OAuth Databricks. Při použití tokenu PAT (Personal Access Token) dojde k chybě přesměrování 302.
Získání tokenu OAuth:
databricks auth token
Použijte token v požadavcích na nasazenou aplikaci:
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"}]}'
Chyby oprávnění k prostředkům
Chyby oprávnění pro přístup k prostředkům
Pokud váš agent nemá přístup k prostředkům pracovního prostoru, ověřte, že je prostředek správně nakonfigurovaný v databricks.yml. Každý typ prostředku vyžaduje specifická oprávnění:
| Error | Příčina | Solution |
|---|---|---|
| Přístup odepřen pro agenta Genie | Chybějící genie_space prostředek |
Přidejte prostředek pomocí genie_spacepermission: 'CAN_RUN' |
| Index vyhledávání AI není přístupný | Chybějící uc_securable prostředek pro index |
Přidejte uc_securable prostředek s securable_type: 'TABLE' a permission: 'SELECT' |
| Spuštění funkce Katalogu Unity bylo odepřeno. | Chybějící uc_securable prostředek pro funkci |
Přidejte uc_securable prostředek s securable_type: 'FUNCTION' a permission: 'EXECUTE' |
| Odepřen přístup ke služebnímu koncovému bodu | Chybějící serving_endpoint prostředek |
Přidejte prostředek pomocí serving_endpointpermission: 'CAN_QUERY' |
| Odepření přístupu ke službě SQL Warehouse | Chybějící sql_warehouse prostředek |
Přidejte prostředek pomocí sql_warehousepermission: 'CAN_USE' |
Příklad konfigurace prostředku v 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'
Vlastní oprávnění serveru MCP
Vlastní oprávnění serveru MCP
Pokud se váš agent připojuje k serveru MCP na míru, který běží jako aplikace Databricks, musíte oprávnění udělit ručně, protože aplikace se zatím nepodporují jako závislosti na prostředcích.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\"}]}"
Agenti při servisu modelů (starší verze)
Pokud váš nasazený agent při přístupu k prostředkům, jako jsou indexy AI Search nebo koncové body LLM, narazí na chyby autentizace, ověřte, že byl zaregistrován s potřebnými prostředky pro automatické předávání autentizace. Vizte automatické ověřování průchodem.
Pokud chcete zkontrolovat protokolované prostředky, spusťte v poznámkovém bloku následující příkaz:
%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)
Pokud chcete znovu přidat chybějící nebo nesprávné prostředky, zapište agenta a znovu ho nasaďte.
Pokud pro prostředky používáte ruční ověřování, ověřte, že jsou proměnné prostředí správně nastavené. Ruční nastavení přebijí všechny konfigurace automatického ověřování. Viz ruční ověřování.
Ladění problémů s pamětí a úložištěm
U agentů používajících Lakebase pro úložiště paměti jsou běžné následující problémy:
| Error | Příčina | Solution |
|---|---|---|
relation 'store' does not exist |
Tabulky paměti nejsou inicializovány | Spusťte await store.setup() místně před nasazením, abyste vytvořili požadované tabulky |
Unable to resolve :re[LKB] instance |
Nesprávný název instance nebo nesprávná konfigurace | Ověřte LAKEBASE_INSTANCE_NAME, že se používá value (nikoli valueFrom) v app.yaml a zda app.yaml odpovídá databricks.yml v |
permission denied for table store |
Chybějící oprávnění Lakebase | Přidejte database prostředek v databricks.yml s permission: 'CAN_CONNECT_AND_CREATE' |
| Paměť se neuchovává napříč konverzacemi | Jiné user_id na žádost |
Ujistěte se, že pro každého uživatele předáváte konzistentní user_idcustom_inputs hodnoty. |
Příklad konfigurace zdroje Lakebase:
resources:
apps:
my_agent:
resources:
- name: 'memory_database'
database:
instance_name: '<lakebase-instance-name>'
database_name: 'postgres'
permission: 'CAN_CONNECT_AND_CREATE'
Před nasazením agenta s pamětí inicializujte tabulky místně:
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())