Crie e edite solicitações
Beta
Esse recurso está na versão beta.
Este guia mostra como criar novos prompts e gerenciar suas versões no MLflow Prompt Registry usando o MLflow Python SDK. Todo o código desta página está incluído no Notebook de exemplo.
Pré-requisitos
-
Instale o site MLflow e o pacote necessário
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" openai
-
Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.
-
O senhor deve ter privilégios
CREATE FUNCTION
em um esquema do Unity Catalog. Os prompts são armazenados como funções no Unity Catalog.
Etapa 1. Crie um novo prompt
O senhor pode criar prompts de forma programática usando o Python SDK.
Crie prompts programaticamente usando mlflow.genai.register_prompt()
. Os prompts usam a sintaxe de dupla trava ({{variable}}
) para variáveis padrão.
import mlflow
# Replace with a Unity Catalog schema where you have CREATE FUNCTION privileges
uc_schema = "workspace.default"
# This table will be 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 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})")
Etapa 2: use o prompt em seu aplicativo
As etapas a seguir criam um aplicativo simples que usa o prompt padrão.
- Carregue o prompt do registro.
# 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")
- Use o prompt em seu aplicativo.
import mlflow
from openai import OpenAI
# Enable MLflow's autologging to instrument your application with Tracing
mlflow.openai.autolog()
# Connect to a Databricks LLM via OpenAI using the same credentials as MLflow
# Alternatively, you can use your own OpenAI credentials here
mlflow_creds = mlflow.utils.databricks_utils.get_databricks_host_creds()
client = OpenAI(
api_key=mlflow_creds.token,
base_url=f"{mlflow_creds.host}/serving-endpoints"
)
# 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="databricks-claude-sonnet-4", # This example uses a Databricks hosted LLM - you can replace this with any AI Gateway or Model Serving endpoint. If you provide your own OpenAI credentials, replace with a valid OpenAI model e.g., gpt-4o, etc.
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)
Etapa 3. Edite o prompt
As versões de prompt são imutáveis após serem criadas. Para editar um prompt, você deve criar uma nova versão. Esse controle de versão semelhante ao Gitgarante um histórico completo e permite reversões.
Crie uma nova versão chamando mlflow.genai.register_prompt()
com um nome de prompt existente:
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}'")
Etapa 4. Use o novo prompt
O código a seguir mostra como usar o prompt.
# 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")
Etapa 5. Solicitações de pesquisa e descoberta
Para encontrar prompts em seu esquema do Unity Catalog:
# REQUIRED format for Unity Catalog - specify catalog and schema
results = mlflow.genai.search_prompts("catalog = 'workspace' AND schema = 'default'")
# Using variables for your schema
catalog_name = uc_schema.split('.')[0] # 'workspace'
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
)
Exemplo de notebook
Criar e editar prompts exemplo Notebook
Próximas etapas
- Avalie as versões do prompt - Compare as diferentes versões do prompt para identificar o melhor desempenho.
- Acompanhe as solicitações com as versões do aplicativo - Vincule as versões das solicitações às versões do seu aplicativo.
- Use prompts em aplicativos implantados - prompts implantados para produção com aliases.