Introdução
E se os modelos de linguagem pudessem lidar com problemas complexos usando a mesma abordagem passo a passo que os humanos usam? No universo dos grandes modelos de linguagem (LLMs), a estratégia de Prompting do Menos para o Mais oferece uma solução promissora. Referenciando o artigo “Least-To-Most Prompting Enables Complex Reasoning in Large Language Models”, este blog explora como esse método inovador aprimora as capacidades de raciocínio dos LLMs. Ao dividir tarefas complexas em subproblemas gerenciáveis, o Prompting do Menos para o Mais guia os LLMs por uma sequência progressiva da simplicidade à complexidade.
O que é o Prompting do Menos para o Mais?
O prompting do menos para o mais é uma estratégia inovadora introduzida no artigo “Least-To-Most Prompting Enables Complex Reasoning in Large Language Models” para aprimorar as capacidades de raciocínio dos grandes modelos de linguagem (LLMs). Este método é projetado para ajudar os LLMs a resolver problemas complexos, dividindo-os em uma série de subproblemas mais simples e gerenciáveis. O processo envolve duas etapas principais:

- Decomposição: O problema complexo é decomposto em uma lista de subproblemas mais fáceis. Esta etapa usa exemplos constantes que demonstram o processo de decomposição, seguidos pela pergunta específica que precisa ser dividida.
- Resolução de Subproblemas: O modelo é então solicitado a resolver esses subproblemas sequencialmente. A solução de cada subproblema é facilitada pelas respostas dos subproblemas já resolvidos. Esta etapa inclui exemplos de como os subproblemas são resolvidos, uma lista de subperguntas já respondidas e suas soluções, e a próxima pergunta a ser tratada.
Os prompts são construídos de forma a guiar o modelo por uma sequência progressiva, dos aspectos mais simples do problema aos mais complexos, daí o nome “do menos para o mais”.
Por que Precisamos do Prompting do Menos para o Mais?
A necessidade do prompting do menos para o mais surge das limitações observadas nas técnicas de prompting existentes, particularmente o prompting de cadeia de pensamento (chain-of-thought).
O prompting de cadeia de pensamento é uma abordagem que incentiva os grandes modelos de linguagem a articular seu raciocínio passo a passo, de forma semelhante a como um humano pensaria sobre um problema. Este método envolve o modelo explicitamente declarando cada passo lógico que dá para progredir desde o entendimento da pergunta até chegar à resposta final. Ao dividir o problema em uma série de etapas intermediárias de raciocínio, o modelo fornece um caminho de solução transparente e justificável.
Embora o prompting de cadeia de pensamento tenha mostrado melhorias significativas de desempenho para várias tarefas de raciocínio em linguagem natural, ele tende a ter dificuldade em generalizar para resolver problemas mais complexos do que os exemplos fornecidos nos prompts.
Como o Prompting do Menos para o Mais Pode Habilitar Raciocínio Complexo em LLMs?
O design experimental no artigo “Least-To-Most Prompting Enables Complex Reasoning in Large Language Models” pode ser dividido no seguinte processo passo a passo:
Identificar o Objetivo da Pesquisa
O objetivo é permitir que grandes modelos de linguagem realizem tarefas de raciocínio complexo que exijam resolver problemas mais difíceis do que aqueles demonstrados nos exemplos de treinamento.
Selecionar as Tarefas
Os pesquisadores escolheram tarefas representativas de diferentes tipos de raciocínio, incluindo manipulação simbólica, generalização composicional e raciocínio matemático.
Tarefa 1: Manipulação Simbólica (Tarefa de Concatenação da Última Letra):
- Problema: Dada uma lista de palavras, a tarefa é gerar a concatenação das últimas letras de cada palavra na lista.
- Exemplo: Para a entrada “think, machine, learning,” a saída correta é “keg.”
- Prompting do Menos para o Mais:
- Decompor o problema: Dividir a lista em sublistas sequenciais (“think,” “think, machine,” “think, machine, learning”).
- Resolver subproblemas: Concatenar as últimas letras das palavras em cada sublista (“think” gera “k,” “machine” gera “e,” e “learning” gera “g”).
- Combinar soluções: Usar as soluções dos subproblemas para construir a resposta final (“k” + “e” = “ke” e “ke” + “g” = “keg”).
Tarefa 2: Generalização Composicional (Benchmark SCAN):
- Problema: Mapear comandos em linguagem natural para sequências de ações. O desafio é generalizar para sequências de ações mais longas do que as vistas durante o treinamento.
- Exemplo: O comando “look opposite right thrice after walk” deve ser traduzido para a sequência de ações “TURN RIGHT, TURN RIGHT, LOOK, WALK.”
- Prompting do Menos para o Mais:
- Decompor o comando: Dividir o comando complexo em partes mais simples (“look opposite right thrice” e “walk”).
- Mapear para ações: Traduzir cada parte em ações (“look opposite right thrice” torna-se “TURN RIGHT, TURN RIGHT, LOOK” repetido três vezes, e “walk” permanece “WALK”).
- Combinar ações: Executar sequencialmente as ações para formar a sequência final.
Tarefa 3: Raciocínio Matemático (Datasets GSM8K e DROP):
- Problema: Resolver problemas matemáticos descritos em texto que podem exigir várias etapas de raciocínio.
- Exemplo: “Elsa tem 5 maçãs. Anna tem 2 maçãs a mais que Elsa. Quantas maçãs elas têm juntas?”
- Prompting do Menos para o Mais:
- Decompor o problema: Identificar os subproblemas (Quantas maçãs Anna tem? Quantas maçãs elas têm juntas?).
- Resolver subproblemas: Calcular as maçãs de Anna (5 + 2 = 7) e depois o total (5 + 7 = 12).
- Resposta final: Concluir que Elsa e Anna têm 12 maçãs juntas.
Projetar as Estratégias de Prompting
Duas estratégias principais de prompting são comparadas:
- Prompting de Cadeia de Pensamento: Isso envolve fornecer ao modelo exemplos que demonstram um processo de raciocínio passo a passo para resolver um problema.

- Prompting do Menos para o Mais: Esta nova estratégia envolve dividir um problema complexo em subproblemas mais simples e resolvê-los sequencialmente, usando as soluções dos subproblemas anteriores para facilitar a solução do próximo.

Criar Exemplos de Prompt
Para cada estratégia de prompting, os pesquisadores elaboraram exemplos que demonstram como abordar as tarefas. Para o prompting do menos para o mais, isso inclui exemplos tanto de decomposição de problemas quanto de resolução de subproblemas.
Implementar o Prompting no Modelo
O modelo de linguagem recebe esses prompts como entrada. Para o prompting do menos para o mais, isso envolve duas etapas:
- Etapa de Decomposição: O modelo é solicitado a dividir o problema original em uma série de subproblemas mais simples.
- Etapa de Resolução de Subproblemas: O modelo é então solicitado a resolver esses subproblemas sequencialmente, usando as respostas dos subproblemas anteriores para informar a solução do próximo.
Construir os Conjuntos de Teste
Para cada tarefa, os pesquisadores criaram conjuntos de teste com níveis variados de dificuldade.
Tarefa 1: Manipulação Simbólica (Tarefa de Concatenação da Última Letra):
- O conjunto de teste para esta tarefa envolveu gerar listas de palavras com comprimentos variados para testar a capacidade do modelo de concatenar as últimas letras de cada palavra na lista.
- Os pesquisadores usaram uma lista das 10.000 palavras inglesas mais comuns do Wiktionary, excluindo palavras obscenas, resultando em uma lista de 9.694 palavras.
- Para cada tamanho de lista desejado (variando de 4 a 12 palavras), eles geraram 500 sequências aleatórias dessas palavras. Cada sequência serviu como entrada, e a saída correspondente era a sequência das últimas letras das palavras.
Tarefa 2: Generalização Composicional (Benchmark SCAN):
- O benchmark SCAN consiste em comandos em linguagem natural que precisam ser mapeados para sequências de ações. O conjunto de teste desafia o modelo a generalizar de sequências de ações mais curtas para mais longas.
- Os pesquisadores usaram as divisões existentes do dataset SCAN, focando particularmente na divisão de comprimento, que contém sequências de ações mais longas do que as do conjunto de treinamento.
- Eles também garantiram que o conjunto de teste abrangesse uma variedade de comandos para avaliar a capacidade do modelo de lidar com diferentes tipos de generalização composicional.
Tarefa 3: Raciocínio Matemático (Datasets GSM8K e DROP):
- Para raciocínio matemático, os pesquisadores usaram problemas textuais do dataset GSM8K e o subconjunto de raciocínio numérico do dataset DROP.
- O conjunto de teste incluiu problemas que exigiam números variados de etapas de raciocínio para serem resolvidos, permitindo que os pesquisadores avaliassem quão bem o modelo conseguia generalizar de problemas mais simples para mais complexos.
- Os problemas foram selecionados para representar uma gama de níveis de dificuldade e para garantir que alguns problemas exigissem mais etapas do que aquelas demonstradas nos prompts.
Ao construir conjuntos de teste dessa maneira, os pesquisadores puderam avaliar rigorosamente a estratégia de prompting do menos para o mais e comparar sua eficácia com técnicas de prompting padrão em diferentes tarefas de raciocínio.
Executar Experimentos e Coletar Resultados
Os pesquisadores executaram experimentos usando o modelo GPT-3 (especificamente a versão code-davinci-002) com ambas as estratégias de prompting. Eles registraram a precisão das respostas do modelo nos conjuntos de teste.
Analisar os Resultados
Os pesquisadores compararam o desempenho do modelo usando diferentes estratégias de prompting. Eles analisaram a precisão geral e também dividiram os resultados pelo número de etapas de raciocínio necessárias para resolver os problemas.
Análise de Erros
Para o prompting do menos para o mais, os pesquisadores realizaram uma análise detalhada de erros para entender erros comuns, como decomposição incorreta de problemas ou resolução incorreta de subproblemas.
Quanto Melhor é o Desempenho dos LLMs com o Prompting do Menos para o Mais?
O artigo “Least-To-Most Prompting Enables Complex Reasoning in Large Language Models” demonstra a eficácia do prompting do menos para o mais em várias tarefas e compara seu desempenho com o prompting de cadeia de pensamento e métodos padrão de prompting. Aqui está um resumo das melhorias de desempenho para cada tarefa, conforme detalhado no artigo:
Manipulação Simbólica (Tarefa de Concatenação da Última Letra):
O prompting do menos para o mais superou significativamente o prompting de cadeia de pensamento, especialmente quando o comprimento das listas de palavras aumentou.
Para listas com comprimentos variando de 4 a 12 palavras, a precisão do prompting do menos para o mais com o modelo GPT-3 code-davinci-002 variou de 74,0% a 94,0%, o que foi substancialmente maior que a precisão do prompting de cadeia de pensamento, que variou de 31,8% a 84,2%.

Generalização Composicional (Benchmark SCAN):
O prompting do menos para o mais alcançou uma precisão de 99,7% sob a condição de divisão de comprimento usando apenas 14 exemplos, um resultado notável considerando que modelos neurais-simbólicos especializados, treinados em todo o dataset de mais de 15.000 exemplos, frequentemente têm dificuldade com essa tarefa.
Em contraste, o prompting de cadeia de pensamento alcançou apenas 16,2% de precisão com o mesmo modelo na condição de divisão de comprimento.
Raciocínio Matemático (Datasets GSM8K e DROP):
No dataset GSM8K, o prompting do menos para o mais melhorou ligeiramente em relação ao prompting de cadeia de pensamento, com uma precisão geral de 62,39% contra 60,87% do prompting de cadeia de pensamento.
No entanto, para problemas que exigem pelo menos 5 etapas para resolver, o prompting do menos para o mais mostrou uma melhora significativa, com precisão de 45,23% contra 39,07% do prompting de cadeia de pensamento.
No dataset DROP, o prompting do menos para o mais superou o prompting de cadeia de pensamento por uma margem grande, com precisões de 82,45% e 74,77% para os subconjuntos de não-futebol e futebol, respectivamente, contra 58,78% e 59,56% do prompting de cadeia de pensamento.
Esses resultados indicam que o prompting do menos para o mais é particularmente eficaz em tarefas que exigem que o modelo generalize de exemplos mais simples para problemas mais complexos. A estratégia de dividir problemas complexos em uma série de subproblemas mais simples e resolvê-los sequencialmente permite que o modelo alcance taxas de precisão mais altas em diferentes tarefas de raciocínio.
Como Integrar o Prompting do Menos para o Mais ao Meu Próprio LLM?
Com base nas abordagens apresentadas pelos autores de “Least-To-Most Prompting Enables Complex Reasoning in Large Language Models”, criamos este guia passo a passo para você:
Passo 1: Obter uma API de LLM
Primeiro, você precisa ter acesso a um LLM que possa usar para sua tarefa. A Novita AI LLM API fornece aos desenvolvedores muitas opções de LLM econômicas, incluindo Llama3–8b, Llama3–70b, Mythomax-13b, etc.

Aqui está um exemplo de como fazer uma chamada à API Chat Completion com a Novita AI LLM API:
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# Get the Novita AI API Key by referring: https://novita.ai/get-started/Quick_Start.html#_3-create-an-api-key
api_key="<YOUR Novita AI API Key>",
)
model = "Nous-Hermes-2-Mixtral-8x7B-DPO"
stream = True # or False
max_tokens = 512
chat_completion_res = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": "Act like you are a helpful assistant.",
},
{
"role": "user",
"content": "Hi there!",
}
],
stream=stream,
max_tokens=max_tokens,
)
if stream:
for chunk in chat_completion_res:
print(chunk.choices[0].delta.content or "", end="")
else:
print(chat_completion_res.choices[0].message.content)
Passo 2: Preparar o Prompt para Decomposição
Crie um conjunto de exemplos de prompts que demonstrem como decompor um problema complexo em uma série de subproblemas mais simples. Os exemplos devem mostrar a estrutura da decomposição, mas não necessariamente o conteúdo específico dos subproblemas.
Passo 3: Preparar o Prompt para Resolução de Subproblemas
Crie um conjunto de exemplos de prompts que demonstrem como resolver os subproblemas individuais. Esses exemplos devem mostrar o processo de construção da solução passo a passo, usando os resultados dos subproblemas já resolvidos.
Passo 4: Implementar o Algoritmo de Prompting do Menos para o Mais
As etapas principais do algoritmo de Prompting do Menos para o Mais são:
a. Passar o problema original para o prompt de decomposição e obter a lista de subproblemas.
b. Para cada subproblema, construir um prompt que inclua as soluções dos subproblemas anteriores (se houver) e o subproblema atual, e passá-lo ao LLM para obter a solução.
c. Combinar as soluções dos subproblemas para obter a solução final do problema original.
Passo 5: Integrar com Sua Aplicação
Incorpore o algoritmo de Prompting do Menos para o Mais no fluxo de trabalho da sua aplicação. Isso pode envolver o pré-processamento da entrada, a construção dos prompts, a chamada à API do LLM e o pós-processamento das saídas.
Passo 6: Avaliar e Iterar
Teste sua implementação em uma variedade de tarefas e dificuldades de problema. Analise os erros e refine o design dos prompts ou o algoritmo de prompting conforme necessário.
Este é um exemplo de alto nível criado por LLM, e você pode precisar adaptá-lo ao seu caso de uso e LLM específicos.
import openai
# Set the Novita AI API key
openai.api_key = "<YOUR Novita AI API Key>"
openai.base_url = "https://api.novita.ai/v3/openai"
def decomp_prompt(original_problem):
"""
Generates a prompt to decompose the original problem into a series of subproblems.
Args:
original_problem (str): The original problem to be decomposed.
Returns:
str: The prompt for decomposing the problem.
"""
return f"""
Please decompose the following problem into a series of subproblems that can be solved step-by-step:
{original_problem}
Subproblems:
{{{decomp_steps}}}
"""
def solve_prompt(prev_solutions, subproblem):
"""
Generates a prompt to solve a specific subproblem, given the previously solved subproblems.
Args:
prev_solutions (str): The previously solved subproblems.
subproblem (str): The subproblem to be solved.
Returns:
str: The prompt for solving the subproblem.
"""
return f"""
Given the following previously solved subproblems:
{prev_solutions}
Please solve the following subproblem:
{subproblem}
"""
def solve_problem(original_problem):
"""
Solves the original problem using the Least-to-Most Prompting algorithm.
Args:
original_problem (str): The original problem to be solved.
Returns:
list: A list of solutions for the subproblems.
"""
# Decompose the original problem into subproblems
decomp_result = openai.Completion.create(
engine="text-davinci-002",
prompt=decomp_prompt(original_problem),
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
decomp_steps = decomp_result.choices[0].text.strip()
# Solve the subproblems one by one
solutions = []
for step in decomp_steps.split("\
"):
step = step.strip()
if step:
solve_result = openai.Completion.create(
engine="text-davinci-002",
prompt=solve_prompt("\
".join(solutions), step),
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
solutions.append(solve_result.choices[0].text.strip())
return solutions
# Example usage
original_problem = "Solve a complex math problem step-by-step."
solutions = solve_problem(original_problem)
print("\
".join(solutions))
Quais São as Limitações do Prompting do Menos para o Mais?
Especificidade de Domínio:
Os prompts de decomposição são frequentemente adaptados a domínios específicos e podem não generalizar bem para diferentes tipos de problemas. Um prompt que funciona bem para problemas matemáticos textuais pode não ser eficaz para problemas de raciocínio de senso comum ou de outros domínios.
Desafio de Generalização Intra-Domínio:
Mesmo dentro do mesmo domínio, generalizar o processo de decomposição pode ser difícil. Os prompts precisam ser cuidadosamente projetados para demonstrar a decomposição correta para que o modelo alcance o desempenho ideal.
Complexidade da Decomposição:
Alguns problemas complexos podem exigir um entendimento sofisticado de como dividi-los em subproblemas mais simples. Projetar prompts que guiem efetivamente o modelo por esse processo pode ser desafiador.
Dependência Sequencial:
Os subproblemas gerados no prompting do menos para o mais são frequentemente dependentes e precisam ser resolvidos em uma ordem específica. Esse requisito sequencial pode tornar o processo de prompting mais complexo em comparação com subproblemas independentes.
Propagação de Erros:
Se o modelo cometer um erro nas etapas iniciais da decomposição do problema ou na resolução de subproblemas, esse erro pode se propagar pelas etapas subsequentes, levando a uma solução final incorreta.
Desempenho Específico do Modelo:
O desempenho do prompting do menos para o mais pode variar entre diferentes modelos ou versões do mesmo modelo. Alguns modelos podem ser mais adequados para lidar com a natureza iterativa e recursiva da tarefa.
Engenharia de Prompt:
A eficácia do prompting do menos para o mais pode depender fortemente da qualidade da engenharia de prompts. Criar prompts eficazes que levem a uma decomposição precisa e geração de soluções requer consideração cuidadosa e expertise.
Escalabilidade:
Embora o prompting do menos para o mais possa ser eficaz, pode não escalar tão bem para problemas muito grandes ou altamente complexos devido ao aumento da dificuldade em projetar prompts adequados e ao potencial de propagação de erros.
Falta de Interação Bidirecional:
Os autores sugerem que o prompting, em geral, pode não ser o método ideal para ensinar habilidades de raciocínio aos LLMs porque é uma forma de comunicação unidirecional. Uma progressão mais natural poderia envolver a evolução do prompting para conversas totalmente bidirecionais, que permitem feedback imediato e aprendizado mais eficiente.
Conclusão
Ao decompor problemas complexos em etapas mais simples e resolvê-los sequencialmente, os LLMs com Prompting do Menos para o Mais não apenas aprimoram seu raciocínio, mas também demonstram desempenho notável em várias tarefas — desde manipulação simbólica até generalização composicional e raciocínio matemático.
No entanto, é importante reconhecer os desafios que acompanham este método. A especificidade de domínio, as dificuldades de generalização intra-domínio e a complexidade da decomposição podem apresentar obstáculos. Além disso, a dependência sequencial dos subproblemas e a potencial propagação de erros destacam a necessidade de engenharia cuidadosa de prompts e considerações específicas do modelo.
À medida que continuamos a explorar novas fronteiras no desenvolvimento de IA, o Prompting do Menos para o Mais se destaca como uma estratégia fundamental que capacita os LLMs a enfrentar os desafios de tarefas de raciocínio complexo com precisão e eficiência sem precedentes, ao mesmo tempo que estimula pesquisas contínuas para otimizar sua aplicação em diversos domínios de problemas.
Referências
Zhou, D., Schärli, N., Hou, L., Wei, J., Scales, N., Wang, X., Schuurmans, D., Cui, C., Bousquet, O., & Chi, E. (2023). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. In Proceedings of the International Conference on Learning Representations.
Novita AI é a plataforma completa em nuvem que impulsiona suas ambições de IA. Com APIs perfeitamente integradas, computação sem servidor e aceleração de GPU, fornecemos as ferramentas econômicas que você precisa para construir e escalar rapidamente seu negócio orientado por IA. Elimine dores de cabeça de infraestrutura e comece gratuitamente — a Novita AI torna seus sonhos de IA realidade.
