Graph of Thoughts (PT)

From Systems analysis wiki
Jump to navigation Jump to search

Graph-of-Thoughts (GoT) — é um conceito na área de trabalho com grandes modelos de linguagem (LLM, Large Language Models), que propõe a representação do processo de raciocínio de um modelo como um grafo arbitrário de "pensamentos" interconectados (passos intermediários da solução)[1]. Esta abordagem foi proposta por um grupo de pesquisadores liderado por Maciej Besta da ETH Zurich e publicada em 2024 na conferência AAAI[2]. O objetivo do Graph-of-Thoughts é expandir as capacidades da engenharia de prompts (prompt engineering) para além dos esquemas existentes, como Chain-of-Thought (cadeia de pensamentos) e Tree-of-Thoughts (árvore de pensamentos)[1]. Diferentemente deles, a abordagem GoT permite que qualquer fragmento de raciocínio gerado pelo modelo (um pensamento) se refira a qualquer outro, formando uma rede de ideias em vez de uma estrutura estritamente linear ou arbórea[3]. Isso, segundo os autores, reflete com mais precisão a natureza complexa e não linear do pensamento humano e potencialmente aproxima o mecanismo de raciocínio dos LLMs do funcionamento do cérebro humano (com suas conexões neurais recorrentes)[1][1].

Graph-of-Thoughts é um framework de prompting (método de formulação de prompts), ou seja, não exige treinamento adicional ou ajuste fino (fine-tuning) do modelo em si — em vez disso, ele organiza o diálogo com o LLM de uma maneira específica, guiando o modelo através de uma série de passos-"pensamentos" conectados em um esquema de grafo[1]. Essa estrutura permite combinar e reutilizar diferentes ramos de raciocínio: por exemplo, o modelo pode considerar várias hipóteses ou partes de um problema em paralelo e, em seguida, unir as mais bem-sucedidas em uma única solução[1]. Em um estilo enciclopédico, o Graph-of-Thoughts pode ser definido como uma generalização das estratégias anteriores de raciocínio estruturado com LLMs, oferecendo máxima flexibilidade na organização dos processos de pensamento dentro de uma única consulta complexa[1].

Pré-requisitos: Chain-of-Thought e Tree-of-Thoughts

A abordagem fundamental é o Chain-of-Thought (CoT) – "cadeia de pensamentos". No método CoT, o usuário é incentivado a incluir no prompt para o modelo não apenas a declaração do problema, mas também os passos intermediários do raciocínio que levam à resposta[1]. Pesquisas mostraram que essa forma de apresentar o material melhora significativamente a capacidade dos LLMs de resolver tarefas complexas, como problemas matemáticos ou quebra-cabeças lógicos, e isso sem alterar os parâmetros do próprio modelo[1]. Na prática, o CoT incentiva o modelo a decompor um problema complexo em etapas mais simples, imitando um fluxo de pensamento sequencial.

Uma evolução dessa ideia foi a técnica de Self-Consistency: em vez de uma única cadeia de pensamentos, várias cadeias independentes são geradas, e a mais convincente delas é selecionada[1]. Isso permite que o modelo considere diferentes abordagens para a solução e reduz o risco de obter uma resposta errada ao seguir uma única linha de raciocínio incorreta. No entanto, mesmo múltiplas cadeias CoT não oferecem a possibilidade de "unir ideias": cada cadeia é tratada isoladamente, e o modelo apenas escolhe a melhor, sem combinar seus conteúdos.

Para superar essa limitação, foi proposto o esquema Tree-of-Thoughts (ToT) – "árvore de pensamentos"[1]. No ToT, o processo de raciocínio é organizado como uma árvore: em cada ponto, o modelo pode gerar várias opções para o desenvolvimento do pensamento (ramificações), após as quais esses estados intermediários são avaliados e os mais promissores são selecionados para aprofundamento[1]. Usando a busca em árvore (por exemplo, busca em largura — BFS, ou busca em profundidade – DFS) e a capacidade de retroceder aos nós e desenvolver outro ramo, o Tree-of-Thoughts oferece ao modelo de linguagem um mecanismo mais poderoso para resolver problemas complexos do que o CoT linear[1]. Novas possibilidades surgem, como retrocesso e revisão: se um ramo leva a um beco sem saída, é possível retornar a um nó anterior e tentar um caminho diferente[1]. Essa metodologia provou sua eficácia na resolução de problemas lógicos e de busca, onde a exploração de variantes e o planejamento desempenham um papel importante.

No entanto, a árvore de pensamentos também impõe restrições rígidas: cada pensamento (nó da árvore) pertence a apenas um ramo, a interação ocorre apenas entre nós pais e filhos, e diferentes ramos não podem se fundir ou trocar informações[3]. Em outras palavras, a troca cruzada de ideias (cross-pollination) entre diferentes hipóteses dentro de uma única solução é dificultada: os ramos da árvore se desenvolvem de forma independente e se unem apenas na raiz, quando a melhor cadeia de raciocínio é selecionada[3]. No pensamento criativo ou analítico real, no entanto, uma pessoa frequentemente retorna a uma ideia considerada anteriormente e a combina com outro ramo de raciocínio. Esse entrelaçamento de pensamentos vai além da estrutura de uma árvore[1].

Essas observações levaram os pesquisadores à ideia de uma estrutura mais flexível – um grafo, onde as conexões entre os pensamentos não são limitadas e podem formar uma rede complexa. Como observado em uma revisão analítica de 2024, o surgimento de cadeias, árvores e grafos de pensamentos reflete o surgimento de uma nova classe de métodos capazes de aprimorar significativamente as capacidades dos LLMs por meio da estruturação explícita do processo de raciocínio[4]. Em particular, prompts estruturados permitiram melhorar significativamente os resultados dos LLMs em muitas áreas — desde a resolução de problemas matemáticos e quebra-cabeças lógicos até o planejamento e até mesmo a escrita criativa[4]. Foi nesse contexto geral que o esquema Graph-of-Thoughts surgiu como o próximo passo no desenvolvimento de métodos de prompting estruturado.

O Conceito de Graph-of-Thoughts: Estrutura de Grafo dos Pensamentos

O Graph-of-Thoughts propõe representar o processo de execução de tarefas por um modelo de linguagem como um grafo direcionado arbitrário. Formalmente, um grafo de pensamentos no GoT é um conjunto de vértices (pensamentos) e arestas (dependências entre pensamentos)[1]. O vértice do grafo é um pensamento individual do modelo – este termo se refere a qualquer unidade de conteúdo significativa, dependente do contexto da tarefa: pode ser uma afirmação, um passo da solução, um fragmento de texto, um parágrafo, um bloco de código, etc., formado pelo modelo em resposta a um prompt[1][1]. Uma aresta entre vértices significa que um pensamento foi usado para gerar outro — ou seja, o prompt indica explicitamente que o modelo deve se basear em um resultado anterior específico para obter um novo[1]. Assim, as arestas registram dependências: de quais dados obtidos anteriormente o passo atual do raciocínio depende.

A diferença mais importante do GoT em relação a estruturas mais simples é a possibilidade de agregação e fusão de pensamentos. Em um grafo, é permitido que um vértice (um novo pensamento) tenha múltiplos predecessores[1]. Isso corresponde a uma situação em que duas ou mais cadeias de raciocínio separadas são combinadas: o modelo recebe como entrada vários fragmentos gerados anteriormente e, com base neles, forma uma saída sintetizada[1]. Por exemplo, ao resolver um problema, o modelo pode considerar duas hipóteses em paralelo e, em seguida, criar um novo pensamento que combina os pontos positivos de ambas as hipóteses e elimina suas desvantagens[1][1]. Tais operações de agregação eram impossíveis dentro do esquema de árvore (onde cada nó tem apenas um pai), mas são naturalmente implementadas em um grafo[1]. Além da fusão de ideias, o grafo também permite a introdução de laços de feedback (feedback loops): em princípio, a estrutura do GoT não proíbe ciclos, o que significa que o modelo pode retornar um resultado a um estágio anterior do raciocínio para reprocessamento ou refinamento[1]. Os autores associam isso a uma analogia com as conexões recorrentes nas redes neurais do cérebro, onde a saída de um grupo de neurônios pode influenciar de volta as camadas anteriores, formando circuitos fechados de reflexão[1].

Na prática, a implementação do Graph-of-Thoughts requer uma organização especial do diálogo com o modelo. Os pesquisadores desenvolveram um framework de arquitetura modular para o GoT[1]. Ele distingue componentes para: (1) controle fino sobre os passos individuais (pensamentos) — um "controlador" gerencia a ordem e a lógica da geração de pensamentos; (2) formação dinâmica de prompts – para cada passo, um módulo especial forma um prompt com base no contexto atual e nos vértices selecionados do grafo (predecessores); (3) análise (parsing) e avaliação das respostas do modelo — os fragmentos recebidos do LLM são analisados e avaliados quanto à qualidade, utilidade ou conformidade com os critérios da tarefa[5]. A arquitetura do GoT permite, assim, construir um grafo de raciocínio de forma interativa: após cada passo, é tomada uma decisão sobre quais novos vértices adicionar, como conectá-los aos anteriores, e quais ramos continuar ou unir. Graças à sua modularidade, tal framework pode ser estendido com novos tipos de "transformações de pensamentos" (por exemplo, operações especiais com o grafo) e adaptado para diferentes modelos (os autores testaram com sucesso o GoT com LLMs das famílias GPT-3.5, GPT-4, LLAMA 2, entre outros)[1]. Uma propriedade importante é que o GoT não requer a alteração dos parâmetros do próprio modelo de linguagem — todas as melhorias são alcançadas através de uma construção mais inteligente de prompts e do processamento das respostas[1]. Isso significa que os poderosos LLMs existentes podem ser usados "como estão", com o Graph-of-Thoughts atuando como uma camada superior que gerencia seu funcionamento.

Deve-se notar que o termo Graph-of-Thought também apareceu em outro desenvolvimento independente, distinto da abordagem de Besta e colegas. Em 2023, Yao Yao e coautores propuseram uma metodologia para melhorar o raciocínio (reasoning) em LLMs através de um módulo adicional codificador de grafo de pensamentos, o que exigia o retreinamento do modelo[6]. Seu trabalho, intitulado «Beyond Chain-of-Thought, Effective Graph-of-Thought Reasoning in Language Models», descreve uma arquitetura de duas etapas: primeiro, é gerado um grafo de afirmações intermediárias interconectadas; em seguida, ele é transformado por um codificador especial e integrado ao modelo através de um mecanismo de fusão controlada (gated fusion)[6]. Essa abordagem híbrida com treinamento demonstrou algum aumento na precisão em tarefas como o conjunto de dados multimodal ScienceQA, onde a precisão aumentou de 85,2% para 87,6% ao usar o modelo T5-base[6]. No entanto, essa abordagem, embora semelhante em nome, é fundamentalmente diferente: ela requer modificação do modelo (fine-tuning) e não é um esquema de engenharia de prompts. Os autores da abordagem GoT original (AAAI 2024) afirmam explicitamente que não consideram o modelo de Yao et al. em seu trabalho, pois se concentram em métodos que não atualizam os parâmetros do LLM[1]. Portanto, Graph-of-Thoughts, no contexto desta revisão, é especificamente um framework no nível de prompts, e não uma modificação da arquitetura da rede neural.

Aplicação e resultados

Os autores do GoT demonstraram suas vantagens em uma série de tarefas difíceis de resolver com um único prompt direto (input-output prompting) ou mesmo com uma cadeia de pensamentos. Uma característica dessas tarefas é que elas podem ser decompostas em várias partes (subtarefas), resolvidas separadamente, e depois ter seus resultados parciais sintetizados em uma resposta completa[1]. Entre os exemplos considerados estão: ordenação de uma lista não ordenada, contagem de palavras-chave em um texto (por exemplo, para resumir um documento), execução de operações com conjuntos (união, interseção de listas, etc.), e fusão de documentos de texto (combinação de informações de várias fontes)[1]. Em todos esses casos, o Graph-of-Thoughts permite decompor a tarefa de forma natural. Por exemplo, para a ordenação, a lista é dividida em partes, cada parte é ordenada separadamente como um ramo de pensamentos independente, e depois os resultados são combinados (imitando um algoritmo como o merge sort); ou, na análise de textos, o modelo pode extrair informações de diferentes documentos em paralelo e, em seguida, consolidá-las.

Resultados experimentais confirmam a eficácia do esquema GoT. De acordo com o relatório de Besta e colegas, na tarefa de ordenação, o grafo de pensamentos permitiu um aumento significativo na qualidade da solução em comparação com abordagens anteriores[1]. A precisão da ordenação usando GoT foi 70% maior do que com uma simples cadeia de pensamentos (CoT) e 62% maior do que com a árvore de pensamentos (ToT)[1]. Ao mesmo tempo, o método reduz o custo de recursos computacionais: o número de chamadas ao modelo (e, consequentemente, o volume de tokens dos prompts) diminuiu em 31% em comparação com o Tree-of-Thoughts para a mesma tarefa[1]. Isso significa que a organização do raciocínio em grafo não apenas melhorou o resultado final, mas também tornou a solução mais econômica, evitando cálculos redundantes através da combinação inteligente de conclusões intermediárias. Ganhos semelhantes foram obtidos em outras tarefas de teste, especialmente aquelas que exigem a agregação de informações heterogêneas. Os pesquisadores observam que o GoT é mais eficaz especificamente para tarefas compostas, que consistem em vários elementos: «Graph-of-Thoughts é particularmente adequado para tarefas que se decompõem naturalmente em subtarefas menores, que podem ser resolvidas separadamente com a subsequente combinação dos resultados»[1]. Em tais casos, o grafo de pensamentos é capaz de abranger todos os aspectos do problema e sintetizar uma solução mais completa do que ao seguir uma única linha de raciocínio.

Para uma compreensão mais sutil de por que uma forma de construir um prompt é melhor que outra, o trabalho de 2024 propõe uma métrica especial – o "volume de um pensamento" (volume of a thought)[1]. O volume é definido para cada pensamento individual (vértice do grafo) como o número de outros pensamentos dos quais ele pode ser alcançado seguindo as arestas direcionadas (em termos simples, a quantos passos intermediários ele deve sua informação)[1]. Em uma Chain-of-Thought, qualquer pensamento se baseia em apenas um predecessor, então seu volume é 1 (uma cadeia linear). Em uma árvore de pensamentos, o volume pode ser maior, mas ainda é limitado pela estrutura de um ramo individual. Em um grafo, no entanto, graças à agregação, um único vértice pode acumular a contribuição de muitos outros — seu "volume" é significativamente maior[1]. Foi demonstrado que o GoT permite que as conclusões finais se baseiem em um volume consideravelmente maior de pensamentos anteriores, unindo seus conteúdos. Este fato reflete uma cobertura mais profunda do espaço de soluções e serve como uma explicação quantitativa das vantagens do raciocínio em grafo sobre esquemas mais simples.

Comparação e importância

Atualmente, o Graph-of-Thoughts representa a forma mais generalizada de prompting estruturado para LLMs. Em tabelas de comparação de diferentes esquemas (CoT, CoT com autocoerência, ToT e GoT), é destacado que apenas o GoT suporta uma topologia arbitrária do processo de pensamento[1]. Ele incorpora as capacidades de todas as abordagens anteriores: pode funcionar como uma única cadeia, como uma árvore com ramificações, e como uma combinação de múltiplas cadeias, se isso for adequado para resolver a tarefa[1]. O ponto principal é que não há restrições rígidas na conexão entre os passos, o que teoricamente torna o espaço de possíveis estratégias de raciocínio o mais amplo possível[1].

É importante entender que a flexibilidade do GoT vem ao custo de uma maior complexidade de controle. A implementação de um grafo de pensamentos requer um algoritmo orquestrador externo que decidirá quando e quais pensamentos gerar, quais selecionar ou combinar, quando parar o processo e fornecer uma resposta. Em um CoT simples, tais decisões não são necessárias — o modelo gera por si só um raciocínio linear até o fim. No ToT, parte do controle recai sobre o algoritmo de busca em árvore (por exemplo, a escolha do nó a ser expandido). No GoT, o grau de liberdade é maior, e a eficácia do método depende da qualidade das heurísticas que avaliam os resultados intermediários e da construção correta dos prompts em cada passo[1]. Assim, o Graph-of-Thoughts pode ser visto não apenas como um formato de prompt, mas como uma estrutura de raciocínio imposta ao processo de interação com um LLM — uma espécie de plano dinâmico segundo o qual o modelo resolve a tarefa, enquanto o usuário (ou um programa controlador) dirige esse processo.

O surgimento do Graph-of-Thoughts reflete o esforço para tornar o trabalho dos grandes modelos de linguagem mais interpretável e controlável. Ao definir explicitamente a estrutura da solução, os pesquisadores não apenas alcançam uma melhor qualidade, mas também ganham a capacidade de analisar como o modelo chegou a uma determinada conclusão. Isso aproxima as abordagens em PLN dos métodos clássicos de busca algorítmica e planejamento, mas agora a execução dos passos é delegada a um modelo de rede neural. Vários especialistas consideram os prompts estruturados (cadeias, árvores, grafos de pensamentos) uma direção promissora, capaz de superar as limitações da "caixa-preta" em modelos profundos e aumentar a confiabilidade de seu desempenho em tarefas complexas[4][4].

A metodologia Graph-of-Thoughts continua a se desenvolver ativamente. O código e exemplos para a implementação do GoT foram disponibilizados publicamente pelos autores[1], permitindo que a comunidade experimentasse a nova abordagem. Extensões também estão surgindo: por exemplo, versões multimodais do grafo de pensamentos, que combinam texto com imagens e outros tipos de dados[3][3], bem como tentativas de integrar as ideias do GoT diretamente na arquitetura dos modelos (como no trabalho mencionado de Yao et al., 2023). Em 2025, foi publicada uma revisão-taxonomia detalhada dos métodos Chain-of-Thought, Tree-of-Thoughts e Graph-of-Thoughts, sistematizando o conhecimento acumulado и descrevendo os fundamentos teóricos de tais abordagens[4][4]. Tudo isso indica um grande interesse da comunidade científica no gerenciamento estruturado do pensamento dos LLMs. O Graph-of-Thoughts já se estabeleceu como uma ferramenta eficaz para resolver problemas complexos e provavelmente se tornará a base para futuras inovações na área de soluções de IA que combinam o poder dos grandes modelos de linguagem com a transparência e a lógica dos algoritmos clássicos.

Literatura

  • Besta, M. et al. (2024). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Yao, Y. et al. (2023). Beyond Chain-of-Thought: Effective Graph-of-Thought Reasoning in Language Models. arXiv:2305.16582.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Wei, J. et al. (2024). Demystifying Chains, Trees, and Graphs of Thoughts. arXiv:2401.14295.
  • Huang, S. et al. (2023). Language Is Not All You Need: Aligning Perception with Language Models (Kosmos-1). arXiv:2302.14045.
  • Mitra, C. et al. (2024). Compositional Chain-of-Thought Prompting for Large Multimodal Models. In CVPR 2024. PDF.
  • Zheng, G. et al. (2023). DDCoT: Duty-Distinct Chain-of-Thought Prompting for Multimodal Reasoning in Language Models. arXiv:2310.16436.
  • Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. arXiv:2304.08467.

Notas

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 Besta, Maciej et al. «Graph of Thoughts: Solving Elaborate Problems with Large Language Models». ar5iv.labs.arxiv.org. [1]
  2. Besta, Maciej et al. «Graph of Thoughts: Solving Elaborate Problems with Large Language Models». arXiv. [2]
  3. 3.0 3.1 3.2 3.3 3.4 Grygiel, Jacek. «Multimodal Graph-of-Thoughts: How Text, Images, and Graphs Lead to Better Reasoning». Deepgram. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 Wei, Jason et al. «Demystifying Chains, Trees, and Graphs of Thoughts». arXiv. [4]
  5. Wo, Jacek. «LLMs Graph of Thoughts Framework. Case study». Medium. [5]
  6. 6.0 6.1 6.2 Yao, Yuqing et al. «Beyond Chain-of-Thought, Effective Graph-of-Thought Reasoning in Language Models». arXiv. [6]