Utilisez des invites dans les applications déployées
Bêta
Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.
Ce guide vous montre comment utiliser des invites du registre d'invites MLflow dans vos applications GenAI de production.
Lors du déploiement d'applications GenAI, configurez-les pour charger les invites depuis le registre d'invites MLflow à l'aide d'alias plutôt que de versions codées en dur. Cette approche permet des mises à jour dynamiques sans redéploiement.
Prérequis
-
Installer MLflow et les packages requis
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" -
Créez une expérience MLflow en suivant le guide de démarrage rapide de configuration de votre environnement.
-
Vérifiez que vous disposez d'un accès à un schéma Unity Catalog avec les autorisations
CREATE FUNCTION,EXECUTEetMANAGEpour utiliser le registre d'invites.
Un schéma Unity Catalog avec les autorisations CREATE FUNCTION, EXECUTE et MANAGE est requis pour afficher ou créer des invites. Si vous utilisez un compte d'essai Databricks, vous disposez des autorisations requises sur le schéma Unity Catalog workspace.default.
Étape 1. Créez une nouvelle invite
Vous pouvez créer des invites par programmation à l'aide du SDK Python.
Créez des invites par programme avec mlflow.genai.register_prompt(). Les invites utilisent la syntaxe à double accolade ({{variable}}) pour les variables de Template.
import mlflow
# Replace with a Unity Catalog schema where you have CREATE FUNCTION permission
uc_schema = "workspace.default"
# This table will be created in the above UC schema
prompt_name = "summarization_prompt"
# Define the prompt template with variables
initial_template = """\
Summarize content you are provided with in {{num_sentences}} sentences.
Content: {{content}}
"""
# Register a new prompt
prompt = mlflow.genai.register_prompt(
name=f"{uc_schema}.{prompt_name}",
template=initial_template,
# all parameters below are optional
commit_message="Initial version of summarization prompt",
tags={
"author": "data-science-team@company.com",
"use_case": "document_summarization",
"task": "summarization",
"language": "en",
"model_compatibility": "gpt-4"
}
)
print(f"Created prompt '{prompt.name}' (version {prompt.version})")
Étape 2. Ajoutez un alias à la version de l'invite
Les alias vous permettent d’attribuer une étiquette de chaîne statique à une version d’invite spécifique, ce qui facilite la référence aux invites dans les applications de production. Au lieu de coder en dur les numéros de version, vous pouvez utiliser des alias significatifs tels que production, staging, ou development. Lorsque vous devez mettre à jour votre invite de production, réaffectez l'alias production pour pointer vers une version plus récente sans modifier ou redéployer votre code d'application.
import mlflow
mlflow.genai.set_prompt_alias(
name=f"{uc_schema}.{prompt_name}",
alias="production",
version=1
)
Étape 3. Référencez le prompt dans votre application.
Après avoir enregistré votre invite et assigné un alias, vous pouvez y faire référence dans vos applications déployées à l’aide du format URI d’invite. L'approche recommandée consiste à utiliser des variables d'environnement pour rendre votre application flexible et éviter le codage en dur des références d'invite.
Le format de l'URI d'invite est : prompts:/{catalog}.{schema}.{prompt_name}@{alias}
En utilisant l'invite que nous avons enregistrée à l'étape 1, l'URI serait :
prompts://workspace.default.summarization_prompt@production
Le client MLflow met en cache le Prompt Template, de sorte que le registre d'invites n'introduit pas de latence pour votre agent. Pour plus de détails, consultez Mise en cache des prompts.
Voici comment référencer le prompt dans votre application :
import mlflow
import os
from typing import Optional
mlflow.set_tracking_uri("databricks")
mlflow.set_registry_uri("databricks-uc")
class ProductionApp:
def __init__(self):
# Use environment variable for flexibility
self.prompt_alias = os.getenv("PROMPT_ALIAS", "production")
self.prompt_name = os.getenv("PROMPT_URI", "workspace.default.summarization_prompt")
def get_prompt(self) -> str:
"""Load prompt from registry using alias."""
uri = f"prompts:/{self.prompt_name}@{self.prompt_alias}"
prompt = mlflow.genai.load_prompt(uri)
return prompt
# Rest of your application's code
# Example usage
app = ProductionApp()
prompt = app.get_prompt()
print(f"Loaded prompt: {prompt}")
Workflows de gestion de version
Les alias vous permettent d'itérer sur les prompts pendant le développement et de les promouvoir à travers les environnements sans modifier le code de l'application.
Workflow de développement
Utilisez un alias de développement pour tester les modifications d'invite avant la promotion en production :
from datetime import datetime
import mlflow
def develop_prompt(base_name: str, changes: str):
"""Iterate on prompts during development."""
# Register new version
new_version = mlflow.genai.register_prompt(
name=base_name,
template=changes,
commit_message=f"Dev iteration: {datetime.now()}"
)
# Update dev alias
mlflow.genai.set_prompt_alias(
name=base_name,
alias="dev",
version=new_version.version
)
return new_version
Workflow de promotion
Promouvez les invites entre les environnements en réaffectant des alias :
import mlflow
def promote_prompt(name: str, from_env: str, to_env: str):
"""Promote prompt from one environment to another."""
# Get current version in source environment
source = mlflow.genai.load_prompt(f"prompts:/{name}@{from_env}")
# Point target environment to same version
mlflow.genai.set_prompt_alias(
name=name,
alias=to_env,
version=source.version
)
print(f"Promoted {name} v{source.version} from {from_env} to {to_env}")
Stratégies d'alias
Concevez votre stratégie d'alias en fonction des modèles de déploiement de votre équipe. Les exemples suivants illustrent des approches courantes :
import mlflow
# Standard environment aliases
ENVIRONMENT_ALIASES = ["dev", "staging", "production"]
# Feature branch aliases
def create_feature_alias(prompt_name: str, feature: str, version: int):
"""Create alias for feature development."""
mlflow.genai.set_prompt_alias(
name=prompt_name,
alias=f"feature-{feature}",
version=version
)
# Regional aliases
REGIONAL_ALIASES = {
"us": "production-us",
"eu": "production-eu",
"asia": "production-asia"
}
# Rollback-ready aliases
def safe_production_update(name: str, new_version: int):
"""Update production with rollback capability."""
try:
# Save current production
current = mlflow.genai.load_prompt(f"prompts:/{name}@production")
mlflow.genai.set_prompt_alias(name, "production-previous", current.version)
except:
pass # No current production
# Update production
mlflow.genai.set_prompt_alias(name, "production", new_version)
Utilisez le registre d’invites avec un agent déployé à l’aide de Custom Agents
Pour accéder au registre d'invites à partir d'un agent déployé à l'aide d'agents personnalisés, vous devez utiliser l'authentification manuelle et remplacer les variables d'environnement de sécurité pour configurer le client Databricks afin de se connecter au registre.
La substitution de ces variables d'environnement de sécurité désactive le transfert automatique pour les autres ressources dont dépend votre agent.
Pour plus d'informations, consultez Authentification manuelle pour les agents IA.
Ressources supplémentaires
- Exécuter les évaluateurs en production - Surveiller la qualité de vos invites déployées
- Évaluer les invites — Tester de nouvelles versions d'invites avant de les promouvoir en production
- MLflow Tracing