Os sistemas MRKL (Raciocínio Modular, Conhecimento e Linguagem, ou Modular Reasoning, Knowledge and Language, em inglês) são uma arquitetura neuro-simbólica que combinam LLMs (computação neural) e ferramentas externas como calculadoras (computação simbólica) para resolver problemas complexos.
Um sistema MRKL é composto por um conjunto de módulos (por exemplo, uma calculadora, API de clima, banco de dados, etc.) e um roteador que decide como "rotear" as consultas em linguagem natural para o módulo apropriado.
Um exemplo simples de um sistema MRKL é um LLM que pode usar um aplicativo de calculadora. Este é um sistema de módulo único, onde o LLM é o roteador. Quando perguntado, Quanto é 100*100?
, o LLM pode escolher extrair os números da solicitação e, em seguida, informar ao sistema MRKL para usar um aplicativo de calculadora para calcular o resultado. Isso pode parecer o seguinte:
Quanto é 100*100?
CALCULADORA[100*100]
O sistema MRKL veria a palavra CALCULADORA e inseriria 100*100 na calculadora. Essa ideia simples pode ser facilmente expandida para várias ferramentas de computação simbólica.
Considere os seguintes exemplos adicionais de aplicativos:
Qual o preço do stock da Apple nesse exato momento?
O preço do stock da Apple nesse momento é DATABASE[SELECT price FROM stock WHERE company = "Apple" AND time = "now"].
Como é o clima em Nova York?
O clima é WEATHER_API[New York].
Eu reproduzi um exemplo de Sistema MRKL do artigo original, usando o Dust.tt, disponível aqui. O sistema lê um problema matemático (por exemplo, Qual é o resultado de 20 vezes 5^6?
), extrai os números e as operações, e os formata a fim de que possam ser utilizados em uma calculadora (por exemplo, 20*5^6
). Em seguida, ele envia a equação reformatada para a calculadora do Google e retorna o resultado. Observe que o artigo original faz um ajuste fino na consulta (no roteador, que é o LLM), mas eu não faço isso neste exemplo. Vamos ver como isso funciona:
Primeiro, eu criei um dataset simples na aba Datasets
do Dust.
Depois, eu mudei para a aba Specification
e inclui o dataset acima usando um bloco do tipo input
.
Em seguida, criei um bloco do tipo lmm
que extrai os números e operações matemática. Note que quando eu crio o promt eu passo que estou usando a calculadora do Google. O modelo que eu usei (GPT-3) provavelmente tem algum conhecimento da calculadora do Google devido ao seu pré-treinamento.
Então eu criei um block do tipo code
, no qual incluí um código em javascript bem simples para remover os espaços da resposta.
Finalmente, eu criei um bloco do tipo search
que manda a equação formatada para a calculadora do Google.
Abaixo você pode ver os resultando, que estão todos corretos!
Fique à vontade para copiar e brincar com esse código aqui.
MRKL foi desenvolvido por AI21, o qual originalmente usaram o LMM J-1 (Jurassic 1).
Confira esse exemplo de um sistemas MRKL construído com LangChain.
Sander Schulhoff is the Founder of Learn Prompting and an ML Researcher at the University of Maryland. He created the first open-source Prompt Engineering guide, reaching 3M+ people and teaching them to use tools like ChatGPT. Sander also led a team behind Prompt Report, the most comprehensive study of prompting ever done, co-authored with researchers from the University of Maryland, OpenAI, Microsoft, Google, Princeton, Stanford, and other leading institutions. This 76-page survey analyzed 1,500+ academic papers and covered 200+ prompting techniques.
Karpas, E., Abend, O., Belinkov, Y., Lenz, B., Lieber, O., Ratner, N., Shoham, Y., Bata, H., Levine, Y., Leyton-Brown, K., Muhlgay, D., Rozen, N., Schwartz, E., Shachaf, G., Shalev-Shwartz, S., Shashua, A., & Tenenholtz, M. (2022). ↩
Lieber, O., Sharir, O., Lentz, B., & Shoham, Y. (2021). Jurassic-1: Technical Details and Evaluation, White paper, AI21 Labs, 2021. URL: Https://Uploads-Ssl. Webflow. Com/60fd4503684b466578c0d307/61138924626a6981ee09caf6_jurassic_ Tech_paper. Pdf. ↩