Step-back prompting
step_back() gera, a partir de uma pergunta específica, uma pergunta
conceitualmente mais ampla. É uma técnica de transformação de query para RAG:
a pergunta mais genérica recupera documentos de contexto amplo (princípios,
categorias, fundamentos) que a busca pela pergunta original sozinha costuma
perder. O padrão é buscar com as duas e juntar os trechos.
from jangada_ai import LLM, step_back
llm = LLM("openai", "gpt-4o-mini")
ampla = step_back(llm, "Quais são as opções de tratamento para catarata?")
print(ampla)
# "Quais são as abordagens cirúrgicas e farmacológicas para o manejo da
# opacidade do cristalino?"É só LLM + structured output, então funciona em qualquer provider — não
depende de visão nem do extra [rag].
Uso típico com RAG
Busque o contexto com a pergunta original e com a step-back, e una os resultados antes de responder:
from jangada_ai import LLM, step_back
from jangada_ai.rag import RAG, vector_store
llm = LLM("openai", "gpt-4o-mini")
emb = LLM("openai", "text-embedding-3-small")
rag = RAG(emb, vector_store("postgresql://..."), chat=llm)
pergunta = "Quais são as opções de tratamento para catarata?"
ampla = step_back(llm, pergunta)
especificos = rag.search(pergunta)
gerais = rag.search(ampla)
# combine `especificos` + `gerais` (deduplique) e responda com o contexto unido.Parâmetros
step_back(
llm,
query, # a pergunta específica
instructions="Foco em medicina; responda em pt-BR.", # ACRESCENTA ao prompt padrão
prompt=None, # sobrescreve a instrução inteira (opcional)
params={"temperature": 0.2}, # params de geração (opcional)
)instructionssoma ao prompt padrão — útil para fixar domínio, idioma ou o que enfatizar, sem perder o formato garantido pelo schema.promptsubstitui a instrução inteira (o schema ainda garante a saída). Ao sobrescrever, inclua a pergunta no seu texto — o{query}só é interpolado no prompt padrão.
Versão async: await astep_back(llm, query, ...).
Robustez
A leitura é tolerante: usa o structured output quando vem válido, cai no
texto cru se o modelo ignorar o schema e, em último caso, devolve a própria
query — nunca retorna vazio.
Veja também RAG e Structured output.