Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Una pipeline CI/CD esegue ogni modifica all'agente tramite la revisione del codice e una distribuzione automatizzata, quindi le implementazioni di produzione non dipendono da un portatile di uno sviluppatore. Una volta configurata la pipeline, ogni merge al ramo principale esegue il deployment e riavvia l'agente su Databricks Apps.
Questa pagina illustra le parti specifiche dell'agente. CI/CD per le app Databricks con GitHub Actions documenta la configurazione principale del flusso di lavoro: federazione dell'identità del carico di lavoro, ambiente GitHub e distribuzione YAML. Completa prima quella pagina, quindi torna qui per le informazioni aggiuntive relative alle app agente.
Requirements
- Un'app agente distribuita almeno una volta in Databricks Apps usando OpenAI Agents SDK, LangGraph o un framework personalizzato. Vedere Creare un agente di intelligenza artificiale e distribuirlo in Databricks Apps.
- Un service principal con un criterio di federazione di GitHub Actions e
CAN MANAGEsull'app. Vedi Passaggio 1. Configurare la federazione delle identità dei carichi di lavoro. - CLI di Databricks installata e autenticata localmente. Consulta Installare o aggiornare la CLI di Databricks.
Passaggio 1. Usare il flusso di lavoro iniziale
Diversi modelli di agente in databricks/app-templates includono un modello pronto per l'uso .github/workflows/deploy.yml, quindi non è necessario scrivere il flusso di lavoro da zero.
- Selezionare un modello di agente da databricks/app-templates, ad esempio
agent-langgraphoagent-openai-agents-sdk. - Nella directory dei modelli clonati verificare se
.github/workflows/deploy.ymlesiste. - Configurare il flusso di lavoro:
-
Se
deploy.ymlesiste: aprirlo, verificare che il passaggio faccia riferimento alladatabricks bundle runchiave di risorsa del bundle dadatabricks.ymle seguire i prerequisiti nel commento dell'intestazione del file. -
Se
deploy.ymlnon esiste: Copiarlo da un modello in cui esiste o da Passaggio 4. Aggiungere il flusso di lavoro di distribuzione. Aggiornare quindi ildatabricks bundle run <key>passaggio in modo che corrisponda alla chiave di risorsa del bundle.
-
Se
Passaggio 2. Precompilare l'ID dell'esperimento MLflow
I modelli di agente lasciano MLFLOW_EXPERIMENT_ID vuoto in databricks.yml. Lo script quickstart lo compila localmente alla prima configurazione, ma un runner CI nuovo non lo fa. Se experiment_id è vuoto, databricks bundle deploy ha esito negativo con un errore di tipo Terraform (For input string: "").
Per correggerlo, effettua il commit del valore compilato:
- Eseguire
uv run quickstart --profile <your-profile>localmente nel computer in cui è stato creato l'agente. - Verificare che la risorsa dell'esperimento in
databricks.yml(la voce conname: 'experiment'inresources.apps.<key>.resources) abbia ora un valore numericoexperiment_id. - Approvare la modifica.
L'esperimento è limitato all'area di lavoro, quindi lo stesso ID è valido per ogni deployment CI destinato a quell'area di lavoro. Se si distribuisce in più workspace, dichiarare un esperimento specifico per ogni destinazione in databricks.yml (uno per ogni blocco targets.<env>) oppure usare una variabile del bundle.
Concedere le autorizzazioni Postgres per i modelli di memoria Lakebase
I modelli di agente avanzati (agent-langgraph-advanced, agent-openai-advanced) dichiarano una risorsa Postgres di Lakebase con scalabilità automatica direttamente in databricks.yml. Con Databricks CLI v0.295.0 e versioni successive, databricks bundle deploy esegue il provisioning della risorsa insieme all'app.
La risorsa DAB postgres concede al service principal dell'app l'accesso al livello dell'area di lavoro al progetto Lakebase, ma Lakebase mantiene un livello separato di ruoli Postgres per l'accesso al database (schemi, tabelle e sequenze). Il service principal deve disporre di un ruolo Postgres con i privilegi necessari prima che l'agente possa leggere o scrivere nelle sue tabelle della memoria. Vedere Architettura di autenticazione per il modello a due livelli.
La concessione di questi privilegi a livello di Postgres è una configurazione monouso. Eseguilo localmente tra il primo bundle deploy e bundle run. CI viene ridistribuita dopo quel flusso attraverso il percorso standard deploy quindi run, perché il ruolo Postgres del service principal persiste per l'intero ciclo di vita dell'app.
Distribuisci il bundle per eseguire il provisioning della risorsa Lakebase:
databricks bundle deploy --target prodConcedi all'entità servizio i privilegi a livello di PostgreSQL necessari:
uv run python scripts/grant_lakebase_permissions.py \ "$(databricks apps get <app-name> --output json | jq -r '.service_principal_client_id')" \ --memory-type openai \ --autoscaling-endpoint <endpoint>Per il template LangGraph, fornire
--memory-type langgraph. Lo script accetta--project <project> --branch <branch>anche per la scalabilità automatica di Lakebase o--instance-name <name>per Lakebase di cui è stato effettuato il provisioning.Avviare l'app:
databricks bundle run <bundle-key> --target prod
Passaggio 3. Esegui un test di verifica dell'agente distribuito
databricks bundle run restituisce non appena il runner segnala all'agente di avviarsi, ma il processo dell'agente potrebbe comunque non riuscire ad avviarsi correttamente. Dopo il controllo di integrità del passaggio 5. Attendere che l'app sia integra, aggiungere il passaggio smoke-test seguente a deploy.yml che invia una richiesta canary a /invocations:
- name: Smoke test invocations
env:
APP_NAME: my-agent
run: |
APP_URL=$(databricks apps get "$APP_NAME" --output json | jq -r '.url')
TOKEN=$(databricks auth token | jq -r '.access_token')
STATUS=$(curl -sS -o /tmp/canary.json -w "%{http_code}" \
-X POST "$APP_URL/invocations" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"input": [{"role": "user", "content": "ping"}], "stream": false}')
if [ "$STATUS" != "200" ]; then
echo "Smoke test failed with status $STATUS:" >&2
cat /tmp/canary.json >&2
exit 1
fi
echo "Smoke test passed."
Annotazioni
Databricks Apps accetta solo token OAuth per la chiamata. Utilizzare il token OAuth dell'area di lavoro presente in databricks auth token; Databricks Apps rifiuta qualsiasi altro tipo di token.