EcoAssistant: usando o assistente LLM de maneira mais econômica e precisa
Confira nosso blog no site AutoGen!
Uma versão simplificada com o AutoGen mais recente está em simplified_demo.py
EcoAssistant é uma estrutura que pode tornar o assistente LLM mais acessível e preciso para respostas a perguntas baseadas em código. Baseia-se na ideia de hierarquia assistente e demonstração de soluções . Ele é baseado no AutoGen.
O assistente LLM é um agente assistente apoiado por LLM conversacional, como ChatGPT e GPT-4, e é capaz de atender às dúvidas do usuário em uma conversa.
A resposta a perguntas orientada por código é uma tarefa que exige que o assistente LLM escreva código para chamar APIs externas para responder à pergunta. Por exemplo, dada a pergunta “Qual a temperatura média da cidade X nos próximos 5 dias?”, o assistente precisa escrever um código para obter as informações meteorológicas através de determinados APIS e calcular a temperatura média da cidade X nos próximos 5 dias. 5 dias.
A resposta a perguntas baseada em código requer codificação iterativa, porque, assim como o ser humano, o LLM dificilmente consegue escrever o código correto na primeira tentativa. Portanto, o assistente precisa interagir com o usuário para obter feedback e revisar o código iterativamente até que esteja correto. Construímos nosso sistema em uma estrutura de conversação de dois agentes , onde o assistente LLM é acoplado a um agente executor de código que pode executar automaticamente o código e retornar a saída ao assistente LLM.
Hierarquia de assistentes é uma hierarquia de assistentes, onde os assistentes LLM são classificados pelo seu custo (por exemplo, GPT-3.5-turbo -> GPT-4). Ao responder a uma consulta do usuário, o EcoAssistant primeiro pede ao assistente mais barato para responder à consulta. Somente quando falha é que invocamos o assistente mais caro. Ele foi projetado para economizar custos, reduzindo o uso de assistentes caros.
A demonstração da solução é uma técnica que aproveita o par de código de consulta bem-sucedido anterior para ajudar consultas futuras. Sempre que uma consulta é abordada com sucesso, salvamos o par código-consulta em um banco de dados. Quando surge uma nova consulta, recuperamos a consulta mais semelhante do banco de dados e, em seguida, usamos a consulta e seu código associado como demonstração no contexto. Ele foi projetado para melhorar a precisão, aproveitando os pares de código de consulta bem-sucedidos anteriores.
A combinação de hierarquia assistente e demonstração de solução amplifica os benefícios individuais porque a solução do modelo de alto desempenho seria naturalmente aproveitada para guiar um modelo mais fraco sem designs específicos.
Para consultas sobre clima, estoque e locais, o EcoAssistant supera o assistente GPT-4 individual em 10 pontos de taxa de sucesso com menos de 50% do custo do GPT-4. Mais detalhes podem ser encontrados em nosso artigo.
Todos os dados estão incluídos neste repositório.
Você só precisa definir suas chaves de API em keys.json
Instale as bibliotecas necessárias (recomendamos Python3.10):
pip3 install -r requirements.txt
Usamos o conjunto de dados Mixed-100 como exemplo. Para outro conjunto de dados, basta alterar o nome do conjunto de dados para google_places/stock/weather/mixed_1/mixed_2/mixed_3 nos comandos a seguir.
Os resultados de saída podem ser encontrados na pasta de results
.
Os comandos a seguir são para sistemas autônomos sem feedback humano descritos na Seção 4.5.
Execute o assistente GPT-3.5-turbo
python3 run.py --data mixed_100 --seed 0 --api --model gpt-3.5-turbo
Execute o assistente GPT-3.5-turbo + Cadeia de Pensamento
ligue o cot
python3 run.py --data mixed_100 --seed 0 --api --cot --model gpt-3.5-turbo
Execute o assistente GPT-3.5-turbo + demonstração da solução
ativar solution_demonstration
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo
Execute a hierarquia do assistente (GPT-3.5-turbo + GPT-4)
definir model
para gpt-3.5-turbo,gpt-4
python3 run.py --data mixed_100 --seed 0 --api --model gpt-3.5-turbo,gpt-4
Execute o EcoAssistant: hierarquia de assistentes (GPT-3.5-turbo + GPT-4) + demonstração da solução
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo,gpt-4
Habilite feedback humano
Para sistemas com julgamento humano, defina eval
como human
(que é por padrão llm
) como o comando de exemplo a seguir.
python3 run.py --data mixed_100 --seed 0 --api --solution_demonstration --model gpt-3.5-turbo,gpt-4 --eval human
Execute o código ouro para Mixed-100 que coletamos conforme descrito na Seção 4.4
Este script imprimiria as saídas do código.
python3 run_gold_code_for_mix_100.py
Se você achar este repositório útil, considere citar:
@article { zhang2023ecoassistant ,
title = { EcoAssistant: Using LLM Assistant More Affordably and Accurately } ,
author = { Zhang, Jieyu and Krishna, Ranjay and Awadallah, Ahmed H and Wang, Chi } ,
journal = { arXiv preprint arXiv:2310.03046 } ,
year = { 2023 }
}