Referência imediata do Registro
Beta
Esse recurso está na versão beta.
Visão geral
O MLflow Prompt Registry é um repositório centralizado para gerenciar o prompt padrão em todo o seu ciclo de vida. Ele permite que as equipes:
- Versão e rastreamento de prompts com versionamento semelhante ao Git, mensagens commit e recursos de reversão
 - Implantado com segurança com aliases usando referências mutáveis (por exemplo, "production", "staging") para testes A/B e implementações graduais.
 - Colabore sem alterações de código , permitindo que não engenheiros modifiquem solicitações por meio da interface do usuário
 - Integrar-se a qualquer estrutura , incluindo LangChain, LlamaIndex e outras estruturas GenAI
 - Mantenha a governança por meio da integração do Unity Catalog para controle de acesso e trilhas de auditoria
 - Rastreie a linhagem vinculando solicitações a experimentos e resultados de avaliação
 
Pré-requisitos
- 
Instale o MLflow com suporte do Unity Catalog:
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" - 
Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.
 - 
Certifique-se de ter acesso a um esquema do Unity Catalog com as permissões
CREATE FUNCTION,EXECUTEeMANAGEpara usar o registro de prompt. 
Quick começar
Aqui está o fluxo de trabalho essencial para usar o Prompt Registry:
import mlflow
# Register a prompt template
prompt = mlflow.genai.register_prompt(
    name="mycatalog.myschema.customer_support",
    template="You are a helpful assistant. Answer this question: {{question}}",
    commit_message="Initial customer support prompt"
)
print(f"Created version {prompt.version}")  # "Created version 1"
# Set a production alias
mlflow.genai.set_prompt_alias(
    name="mycatalog.myschema.customer_support",
    alias="production",
    version=1
)
# Load and use the prompt in your application
prompt = mlflow.genai.load_prompt(name_or_uri="prompts:/mycatalog.myschema.customer_support@production")
response = llm.invoke(prompt.format(question="How do I reset my password?"))
Conceitos fundamentais
Visão geral do SDK
O Prompt Registry oferece seis operações principais:
Função  | Propósito  | 
|---|---|
Crie novos prompts ou adicione novas versões  | |
Recupere versões ou aliases específicos do prompt  | |
Encontre solicitações por nome, tags ou metadados  | |
Crie ou atualize ponteiros de aliases  | |
Remover aliases (as versões permanecem)  | |
Exclua solicitações inteiras ou versões específicas  | 
register_prompt ()
Referência da API : mlflow.genai.register_prompt
Cria um novo prompt ou adiciona uma nova versão a um prompt existente.
mlflow.genai.register_prompt(
    name: str,
    template: str,
    commit_message: str,
    tags: dict = None
) -> PromptVersion
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | Nome do Unity Catalog (catalog.schema.prompt_name)  | 
  | 
  | Sim  | Prompt padrão com   | 
  | 
  | Não  | Descrição das alterações (como as mensagens do git commit )  | 
  | 
  | Não  | tags de valor-chave para esta versão  | 
Devoluções
PromptVersion objeto contendo:
name: O nome do promptversion: O número da versão (incrementado automaticamente)template: O padrão imediatocommit_message: A mensagem commitcreation_timestamp: Quando a versão foi criada
Exemplo
prompt = mlflow.genai.register_prompt(
    name="mycatalog.myschema.summarization",
    template="""Summarize the following text in {{num_sentences}} sentences:
Text: {{content}}
Focus on: {{focus_areas}}""",
    commit_message="Added focus areas parameter",
    tags={
        "tested_with": "gpt-4",
        "avg_latency_ms": "1200",
        "team": "content",
        "project": "summarization-v2"
    }
)
prompt de carregamento ()
Referência da API : mlflow.genai.load_prompt
Recupera uma solicitação por número de versão ou alias.
mlflow.genai.load_prompt(
    name_or_uri: str,
    version: Optional[Union[str, int]] = None,
    allow_missing: bool = False,
) -> Optional[PromptVersion]
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | O nome do prompt ou o URI no formato " prompts: /name/version "  | 
  | 
  | Não  | A versão do prompt (necessária ao usar o nome, não permitida ao usar URI)  | 
  | 
  | Não  | Se verdadeiro, retorne None em vez de gerar Exception se o prompt especificado não for encontrado  | 
Formatos URI
# Load specific version
prompt = mlflow.genai.load_prompt(name_or_uri="prompts:/mycatalog.myschema.chat_prompt/3")
# Load by alias
prompt = mlflow.genai.load_prompt(name_or_uri="prompts:/mycatalog.myschema.chat_prompt@production")
Exemplo
# Load specific version using URI format
v2 = mlflow.genai.load_prompt(name_or_uri="prompts:/mycatalog.myschema.qa_prompt/2")
# Load specific version using name + version parameter
v3 = mlflow.genai.load_prompt(name_or_uri="mycatalog.myschema.qa_prompt", version=3)
# Load by alias using URI
prod = mlflow.genai.load_prompt(name_or_uri="prompts:/mycatalog.myschema.qa_prompt@production")
# Load with allow_missing flag (returns None if not found)
optional_prompt = mlflow.genai.load_prompt(
    name_or_uri="mycatalog.myschema.qa_prompt",
    version=3,
    allow_missing=True
)
# Use the prompt
if optional_prompt is not None:
    response = llm.invoke(optional_prompt.format(
        question="What is MLflow?",
        context="MLflow is an open source platform..."
    ))
prompts de pesquisa ()
Referência da API : mlflow.genai.search_prompts
Lista os prompts no Unity Catalog por catálogo e esquema.
mlflow.genai.search_prompts(
    filter_string: str,
    max_results: int = None
) -> PagedList[Prompt]
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | É necessário especificar o catálogo e o esquema:   | 
  | 
  | Não  | Máximo de solicitações para devolução  | 
Unity Catalog Requisitos
Para registros de prompt do Unity Catalog, o senhor deve especificar tanto o catálogo quanto o esquema:
# REQUIRED format - list all prompts in a catalog.schema
results = mlflow.genai.search_prompts("catalog = 'mycatalog' AND schema = 'myschema'")
# This is the ONLY supported filter format
results = mlflow.genai.search_prompts("catalog = 'rohit' AND schema = 'default'")
Limitações
Os seguintes filtros NÃO são compatíveis com o Unity Catalog:
- Padrões de nome: 
name LIKE '%pattern%'❌ - Filtragem de tags: 
tags.field = 'value'❌ - Correspondência exata do nome: 
name = 'specific.name'❌ - Filtros combinados além do catálogo e do esquema ❌
 
Para encontrar solicitações específicas, use a lista retornada e filtre programaticamente:
# Get all prompts in schema
all_prompts = mlflow.genai.search_prompts("catalog = 'mycatalog' AND schema = 'myschema'")
# Filter programmatically
customer_prompts = [p for p in all_prompts if 'customer' in p.name.lower()]
tagged_prompts = [p for p in all_prompts if p.tags.get('team') == 'support']
set_prompt_alias ()
Referência da API : mlflow.genai.set_prompt_alias
Cria ou atualiza um alias apontando para uma versão específica.
mlflow.genai.set_prompt_alias(
    name: str,
    alias: str,
    version: int
) -> None
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | Nome do prompt do Unity Catalog  | 
  | 
  | Sim  | Nome do alias (por exemplo, " production ", " staging ")  | 
  | 
  | Sim  | Número da versão para a qual apontar o alias  | 
Exemplo
# Promote version 3 to production
mlflow.genai.set_prompt_alias(
    name="mycatalog.myschema.chat_assistant",
    alias="production",
    version=3
)
# Set up staging for testing
mlflow.genai.set_prompt_alias(
    name="mycatalog.myschema.chat_assistant",
    alias="staging",
    version=4
)
delete_prompt_alias ()
Referência da API : mlflow.genai.delete_prompt_alias
Remove um alias sem afetar a versão subjacente.
mlflow.genai.delete_prompt_alias(
    name: str,
    alias: str
) -> None
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | Nome do prompt do Unity Catalog  | 
  | 
  | Sim  | Nome do alias a ser excluído  | 
delete_prompt () e delete_prompt_version ()
Excluindo totalmente um prompt ou versões específicas.
excluir_prompt_version ()
Referência da API : MlflowClient.delete_prompt_version
Exclui uma versão específica de um prompt:
from mlflow import MlflowClient
client = MlflowClient()
client.delete_prompt_version(name: str, version: str) -> None
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | Nome do prompt do Unity Catalog  | 
  | 
  | Sim  | Versão a ser excluída (como cadeias de caracteres)  | 
delete_prompt ()
Referência da API : MlflowClient.delete_prompt
Exclui uma solicitação inteira do registro:
from mlflow import MlflowClient
client = MlflowClient()
client.delete_prompt(name: str) -> None
Parâmetros
Parâmetro  | Tipo  | Obrigatório  | Descrição  | 
|---|---|---|---|
  | 
  | Sim  | Nome do prompt do Unity Catalog  | 
Notas importantes:
- Para os registros do Unity Catalog, o site 
delete_prompt()falhará se ainda existirem versões. Todas as versões devem ser excluídas primeiro usandodelete_prompt_version(). - Para outros tipos de registro, 
delete_prompt()funciona normalmente sem verificação de versão. 
Exemplo
from mlflow import MlflowClient
client = MlflowClient()
# Delete specific versions first (required for Unity Catalog)
client.delete_prompt_version("mycatalog.myschema.chat_assistant", "1")
client.delete_prompt_version("mycatalog.myschema.chat_assistant", "2")
client.delete_prompt_version("mycatalog.myschema.chat_assistant", "3")
# Then delete the entire prompt
client.delete_prompt("mycatalog.myschema.chat_assistant")
# For convenience with Unity Catalog, you can also search and delete all versions:
search_response = client.search_prompt_versions("mycatalog.myschema.chat_assistant")
for version in search_response.prompt_versions:
    client.delete_prompt_version("mycatalog.myschema.chat_assistant", str(version.version))
client.delete_prompt("mycatalog.myschema.chat_assistant")
Modelo de dados

O Prompt Registry segue um modelo semelhante ao Git:
- Prompts : Entidades nomeadas no Unity Catalog
 - Versões : Snapshot imutável com números que se incrementam automaticamente
 - Aliases : ponteiros mutáveis para versões específicas
 - Tags : Par específico da versão key-value
 
Padrões comuns
padrão variables
Use a sintaxe de chave dupla para variáveis:
# Single variable
simple_prompt = mlflow.genai.register_prompt(
    name="mycatalog.myschema.greeting",
    template="Hello {{name}}, how can I help you today?",
    commit_message="Simple greeting"
)
# Multiple variables with formatting
complex_prompt = mlflow.genai.register_prompt(
    name="mycatalog.myschema.analysis",
    template="""Analyze the following {{data_type}} data:
{{data}}
Consider these factors:
{{factors}}
Output format: {{output_format}}""",
    commit_message="Multi-variable analysis template"
)
# Use the prompt
rendered = complex_prompt.format(
    data_type="sales",
    data="Q1: $1.2M, Q2: $1.5M...",
    factors="seasonality, market trends",
    output_format="bullet points"
)
Gerenciamento de versões fluxo de trabalho
# Development workflow
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
# Promotion workflow
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}")
Estratégias de aliases
Referência da API : mlflow.genai.set_prompt_alias
# 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)
Integrações de estrutura
LangChain
from langchain_core.prompts import ChatPromptTemplate
# Load from registry
mlflow_prompt = mlflow.genai.load_prompt("prompts:/mycatalog.myschema.chat@production")
# Convert to LangChain format
langchain_template = mlflow_prompt.to_single_brace_format()
chat_prompt = ChatPromptTemplate.from_template(langchain_template)
# Use in chain
chain = chat_prompt | llm | output_parser
Índice LlamaM
from llama_index.core import PromptTemplate
# Load and convert
mlflow_prompt = mlflow.genai.load_prompt("prompts:/mycatalog.myschema.rag@production")
llama_template = PromptTemplate(mlflow_prompt.to_single_brace_format())
# Use in query engine
query_engine.update_prompts({"response_synthesizer:text_qa_template": llama_template})
Próximas etapas
- Criar e editar prompts - Comece a usar seu primeiro prompt
 - Avalie as solicitações - Compare as versões das solicitações sistematicamente
 - Use prompts em aplicativos implantados - prompts implantados para produção com aliases