Pular para o conteúdo principal

Referência imediata do Registro

info

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

  1. Instale o MLflow com suporte do Unity Catalog:

    Bash
    pip install --upgrade "mlflow[databricks]>=3.1.0"
  2. Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.

  3. Acesso a um esquema do Unity Catalog com CREATE FUNCTION

    • Por quê? Os prompts são armazenados na UC como funções
nota

é necessário um esquema do Unity Catalog com permissões CREATE FUNCTION para usar o prompt registry. Se estiver usando uma avaliaçãoDatabricks account , o senhor tem permissões CREATE TABLE no esquema Unity Catalog workspace.default.

Quick começar

Aqui está o fluxo de trabalho essencial para usar o Prompt Registry:

Python
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.render(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

register_prompt()

Crie novos prompts ou adicione novas versões

load_prompt()

Recupere versões ou aliases específicos do prompt

search_prompts()

Encontre solicitações por nome, tags ou metadados

set_prompt_alias()

Crie ou atualize ponteiros de aliases

delete_prompt_alias()

Remover aliases (as versões permanecem)

delete_prompt()

Exclua solicitações inteiras ou versões específicas

register_prompt ()

Cria um novo prompt ou adiciona uma nova versão a um prompt existente.

Python
mlflow.genai.register_prompt(
name: str,
template: str,
commit_message: str,
tags: dict = None
) -> PromptVersion

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

name

str

Sim

Nome do Unity Catalog (catalog.schema.prompt_name)

template

str

Sim

Prompt padrão com {{variables}} para placeholders

commit_message

str

Não

Descrição das alterações (como as mensagens do git commit )

tags

dict

Não

tags de valor-chave para esta versão

Devoluções

PromptVersion objeto contendo:

  • name: O nome do prompt
  • version: O número da versão (incrementado automaticamente)
  • template: O padrão imediato
  • commit_message: A mensagem commit
  • creation_timestamp: Quando a versão foi criada

Exemplo

Python
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 ()

Recupera uma solicitação por número de versão ou alias.

Python
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

name_or_uri

str

Sim

O nome do prompt ou o URI no formato " prompts: /name/version "

version

Optional[Union[str, int]]

Não

A versão do prompt (necessária ao usar o nome, não permitida ao usar URI)

allow_missing

bool

Não

Se verdadeiro, retorne None em vez de gerar Exception se o prompt especificado não for encontrado

Formatos URI

Python
# 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

Python
# 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.render(
question="What is MLflow?",
context="MLflow is an open source platform..."
))

prompts de pesquisa ()

Lista os prompts no Unity Catalog por catálogo e esquema.

Python
mlflow.genai.search_prompts(
filter_string: str,
max_results: int = None
) -> PagedList[Prompt]

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

filter_string

str

Sim

É necessário especificar o catálogo e o esquema: "catalog = 'name' AND schema = 'name'"

max_results

int

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:

Python
# 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:

Python
# 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 ()

Cria ou atualiza um alias apontando para uma versão específica.

Python
mlflow.genai.set_prompt_alias(
name: str,
alias: str,
version: int
) -> None

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

name

str

Sim

Nome do prompt do Unity Catalog

alias

str

Sim

Nome do alias (por exemplo, " production ", " staging ")

version

int

Sim

Número da versão para a qual apontar o alias

Exemplo

Python
# 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 ()

Remove um alias sem afetar a versão subjacente.

Python
mlflow.genai.delete_prompt_alias(
name: str,
alias: str
) -> None

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

name

str

Sim

Nome do prompt do Unity Catalog

alias

str

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 ()

Exclui uma versão específica de um prompt:

Python
from mlflow import MlflowClient

client = MlflowClient()
client.delete_prompt_version(name: str, version: str) -> None

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

name

str

Sim

Nome do prompt do Unity Catalog

version

str

Sim

Versão a ser excluída (como cadeias de caracteres)

delete_prompt ()

Exclui uma solicitação inteira do registro:

Python
from mlflow import MlflowClient

client = MlflowClient()
client.delete_prompt(name: str) -> None

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

name

str

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 usando delete_prompt_version().
  • Para outros tipos de registro, delete_prompt() funciona normalmente sem verificação de versão.

Exemplo

Python
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

Modelo de dados de registro imediato

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:

Python
# 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.render(
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

Python
# 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

Python
# 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

Python
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

Python
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