Aller au contenu principal

Créer et modifier des prompts

info

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.

Cette page vous explique comment créer de nouveaux prompts et gérer leurs versions dans le registre de prompts MLflow à l'aide du SDK Python MLflow. Il inclut des instructions pour l'utilisation du SDK Python MLflow et de l'interface utilisateur MLflow de Databricks. Tout le code de cette page est inclus dans l'exemple de Notebook.

Prérequis

  1. Installer MLflow et les packages requis

    Bash
    pip install --upgrade "mlflow[databricks]>=3.1.0" openai
  2. Créez une expérience MLflow en suivant le démarrage rapide de configuration de votre environnement.

  3. Créez ou identifiez un schéma Unity Catalog pour stocker les invites. Vous devez disposer des privilèges CREATE FUNCTION, EXECUTE et MANAGE sur le schéma Unity Catalog.

remarque

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 main.default.

Étape 1. Créez une nouvelle invite

Vous pouvez créer des prompts dans l'interface utilisateur de Databricks MLflow, ou par programmation en utilisant le SDK Python MLflow.

Utilisez l'interface utilisateur Databricks MLflow

Pour créer une invite dans l'interface utilisateur :

  1. Accédez à votre expérience MLflow.

  2. Cliquez sur le Prompts tab.

    Page d’Experimentation MLflow affichant l’onglet Prompts.

  3. Cliquez le bouton du nouveau prompt. Une boîte de dialogue apparaît.

    Nouvelle boîte de dialogue d'invite.

  4. Si vous n’avez pas encore sélectionné de schéma pour cette Experimentation, la boîte de dialogue inclut un champ Schéma cible . Pour choisir un schéma :

    1. À côté du champ Schéma cible , cliquez sur Choisir pour ouvrir le sélecteur de schéma.
    2. Dans le sélecteur, sélectionnez le schéma souhaité et cliquez sur **Confirmer**. Vous devez disposer des autorisations suivantes sur le schéma : CREATE FUNCTION, EXECUTE et MANAGE.
  5. Dans le champ Nom , saisissez un nom pour l'invite. Les noms d’invite ne peuvent contenir que des lettres, des chiffres, des traits d’union, des traits de soulignement et des points.

  6. Pour le type de prompt , sélectionnez l'un des éléments suivants :

    • Texte : un seul Template de texte. Utilisez ceci pour les invites de style achèvement.
    • Chat : Une liste de messages basés sur les rôles (par exemple, system et user). Utilisez ceci pour les invites de style conversationnel qui ciblent les modèles conversationnels.
  7. Dans le champ Prompt , saisissez le contenu de votre prompt. Utilisez la syntaxe {{variable_name}} pour définir les variables que vous renseignez au moment de l'exécution.

  8. (Facultatif) Dans le champ Message de commit , saisissez une brève description de cette version. Les messages de commit sont stockés avec la version de prompt et vous aident à suivre les modifications entre les versions.

  9. Cliquez sur Créer .

L'invite apparaît dans l'interface utilisateur :

Invite enregistrée dans l'UI

Utiliser le SDK Python

  1. Link votre expérimentation MLflow à un emplacement de registre de prompts par default en définissant une balise d'expérimentation à l'aide de mlflow.set_experiment_tags. Cela permet aux SDK et aux outils de déduire automatiquement votre schéma d'invite Unity Catalog.

    Utilisez le tag mlflow.promptRegistryLocation avec la valeur catalog.schema:

    Python
    import mlflow

    # Link the current MLflow experiment to a UC schema for prompts
    mlflow.set_experiment_tags({
    "mlflow.promptRegistryLocation": "main.default"
    })
  2. Créez des prompts à l’aide de mlflow.genai.register_prompt(). Les invites utilisent la syntaxe à double accolade ({{variable}}) pour les variables de Template.

    Python
    # Replace with a Unity Catalog schema where you have CREATE FUNCTION, EXECUTE, and MANAGE privileges
    uc_schema = "main.default"
    # This table is created in the UC schema specified in the previous line
    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 following parameters 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 : Utilisez l’invite dans votre application

Les étapes suivantes créent une application simple qui utilise votre template d'invite à l'aide du SDK Python.

Charger l'invite depuis le registre

Python
# Load a specific version using URI syntax
prompt = mlflow.genai.load_prompt(name_or_uri=f"prompts:/{uc_schema}.{prompt_name}/1")

# Alternative syntax without URI
prompt = mlflow.genai.load_prompt(name_or_uri=f"{uc_schema}.{prompt_name}", version="1")

Utiliser le prompt dans votre application

  1. Initialisez un client OpenAI pour vous connecter soit à des LLM hébergés par Databricks, soit à des LLM hébergés par OpenAI.

Utilisez databricks-openai pour obtenir un client OpenAI qui se connecte aux LLM hébergés par Databricks. Sélectionnez un modèle parmi les modèles de fondation disponibles.

Python
import mlflow
from databricks_openai import DatabricksOpenAI

# Enable MLflow's autologging to instrument your application with Tracing
mlflow.openai.autolog()

# Set up MLflow tracking to Databricks
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/Shared/docs-demo")

# Create an OpenAI client that is connected to Databricks-hosted LLMs
client = DatabricksOpenAI()

# Select an LLM
model_name = "databricks-claude-sonnet-4"
  1. Définissez votre application :

    Python
    # Use the trace decorator to capture the application's entry point
    @mlflow.trace
    def my_app(content: str, num_sentences: int):
    # Format with variables
    formatted_prompt = prompt.format(
    content=content,
    num_sentences=num_sentences
    )

    response = client.chat.completions.create(
    model=model_name, # This example uses a Databricks hosted LLM. You can replace this with any AI Gateway or Model Serving endpoint, or with a valid OpenAI model like gpt-4o.
    messages=[
    {
    "role": "system",
    "content": "You are a helpful assistant.",
    },
    {
    "role": "user",
    "content": formatted_prompt,
    },
    ],
    )
    return response.choices[0].message.content

    result = my_app(content="This guide shows you how to integrate prompts from the MLflow Prompt Registry into your GenAI applications. You'll learn to load prompts, format them with dynamic data, and ensure complete lineage by linking prompt versions to your MLflow Models.", num_sentences=1)
    print(result)

Étape 3. Modifiez le prompt

Les versions de prompt sont immuables après que vous les ayez créées. Pour modifier une invite, vous devez créer une nouvelle version. Ce système de gestion de version similaire à Git conserve l'historique complet et permet les retours en arrière.

Utilisez l'interface utilisateur Databricks MLflow

Pour créer une nouvelle version :

  1. Dans l'onglet Prompts tab , cliquez sur Bouton Nouvelles versions. à côté de l'invite que vous souhaitez modifier.

    Modifier l'invite existante.

  2. Saisissez votre invite et cliquez sur Enregistrer .

Comparer les versions d'invite

Pour comparer les versions d’invite :

  1. Dans l’onglet Prompts , cliquez sur le nom de l’invite.

    Nom de l'invite dans le tableau.

  2. En haut à gauche, cliquez sur Comparer et sélectionnez les versions à comparer.

    Écran de comparaison des prompts.

Utiliser le SDK Python

Créez une nouvelle version en appelant mlflow.genai.register_prompt() avec un nom d'invite existant :

Python
import mlflow

# Define the improved template
new_template = """\
You are an expert summarizer. Condense the following content into exactly {{ num_sentences }} clear and informative sentences that capture the key points.

Content: {{content}}

Your summary should:
- Contain exactly {{num_sentences}} sentences
- Include only the most important information
- Be written in a neutral, objective tone
- Maintain the same level of formality as the original text
"""

# Register a new version
updated_prompt = mlflow.genai.register_prompt(
name=f"{uc_schema}.{prompt_name}",
template=new_template,
commit_message="Added detailed instructions for better output quality",
tags={
"author": "data-science-team@company.com",
"improvement": "Added specific guidelines for summary quality"
}
)

print(f"Created version {updated_prompt.version} of '{updated_prompt.name}'")

Étape 4. Utilisez la nouvelle invite

Le code suivant montre comment utiliser l'invite.

Python
# Load a specific version using URI syntax
prompt = mlflow.genai.load_prompt(name_or_uri=f"prompts:/{uc_schema}.{prompt_name}/2")

# Or load from specific version
prompt = mlflow.genai.load_prompt(name_or_uri=f"{uc_schema}.{prompt_name}", version="2")

Étape 5. Rechercher et découvrir des invites

Pour trouver des invites dans votre schéma Unity Catalog :

Python
# REQUIRED format for Unity Catalog - specify catalog and schema
results = mlflow.genai.search_prompts("catalog = 'main' AND schema = 'default'")

# Using variables for your schema
catalog_name = uc_schema.split('.')[0] # 'main'
schema_name = uc_schema.split('.')[1] # 'default'
results = mlflow.genai.search_prompts(f"catalog = '{catalog_name}' AND schema = '{schema_name}'")

# Limit results
results = mlflow.genai.search_prompts(
filter_string=f"catalog = '{catalog_name}' AND schema = '{schema_name}'",
max_results=50
)

Exemple de Notebook

Créer et modifier un notebook d'exemples d'invites

Ressources supplémentaires