Introdução
Não quer gastar dinheiro com APIs ou está preocupado com privacidade? Ou você só quer executar LLMs localmente? Não se preocupe; este guia ajudará você a construir agentes e frameworks multiagentes com LLMs locais que são completamente gratuitos para uso. Exploraremos como construir frameworks agênticos com CrewAI e Ollama e daremos uma olhada nos múltiplos LLMs disponíveis da Ollama.

Visão geral
- Este guia se concentra na construção de estruturas de agentes e sistemas multiagentes usando LLMs locais com CrewAI e Ollama, fornecendo uma solução gratuita e que preserva a privacidade.
- Ele apresenta conceitos-chave de agentes e estruturas multiagentes, enfatizando seu papel na resolução autônoma e colaborativa de problemas em vários setores.
- O CrewAI é destacado como uma estrutura avançada para orquestrar tarefas entre agentes. Ele usa papéis estruturados, objetivos e gerenciamento de memória para melhorar a execução de tarefas.
- O Ollama permite a execução native de modelos de linguagem como Llama2, Llama3 e LLaVA, permitindo que os usuários ignorem serviços de nuvem para tarefas de IA.
- O artigo inclui um exemplo prático de construção de um sistema multiagente para classificação de imagens, descrição e recuperação de informações usando CrewAI e Ollama.
- A conclusão destaca os benefícios de usar diferentes LLMs para tarefas especializadas e mostra a flexibilidade de combinar CrewAI e Ollama em ambientes locais.
Agentes, estruturas de agentes e CrewAI
A IA generativa passou de básica grandes modelos de linguagem (LLM) para sistemas multiagentes avançados. Em teoria, Agentes são sistemas autônomos capazes de planejar, raciocinar e agir sem intervenção humana. Esses agentes visam reduzir o envolvimento humano enquanto expandem a funcionalidade.
Estruturas de Agentes
Essas estruturas utilizam múltiplos agentes trabalhando em conjunto, permitindo colaboração, comunicação e resolução de problemas que excedem as capacidades de agentes de uso único. Nessas estruturas, os agentes têm papéis e objetivos distintos e podem executar tarefas complexas. Estruturas multiagentes são essenciais para resolução de problemas em larga escala, dinâmicas e distribuídas, tornando-as adaptáveis em setores como robótica, finanças, saúde e além.
Principais componentes das estruturas Agentic
- Arquitetura do Agente: Outline a estrutura interna dos agentes, incluindo planejamento, raciocínio e protocolos de comunicação.
- Protocolos de Comunicação: Métodos para colaboração de agentes por meio de mensagens e troca de dados.
- Design de interação com agentes: Mecanismos para colaboração de agentes, incluindo alocação de tarefas e resolução de conflitos.
- Ambiente: O cenário onde os agentes interagem, geralmente incluindo ferramentas e recursos externos.
Essas estruturas permitem sistemas modulares e escaláveis, facilitando a modificação ou adição de agentes para adaptação a requisitos em evolução.
Estrutura CrewAI
tripulaçãoAI é uma estrutura multiagente avançada, permitindo que vários agentes (chamados de “equipe”) colaborem por meio da orquestração de tarefas. A estrutura divide os agentes em três atributos — função, objetivo e história de fundo — garantindo uma compreensão completa da função de cada agente. Essa abordagem estruturada atenua o risco de subespecificação, melhorando a definição e a execução de tarefas.
Principais pontos fortes da CrewAI
- Definição explícita de tarefa: As tarefas são bem definidas, garantindo clareza no que cada agente faz.
- Uso de ferramentas: Ferramentas específicas de tarefas têm precedência sobre ferramentas de nível de agente, criando um conjunto de ferramentas mais granular e controlado.
- Processos de interação do agente: O crewAI oferece suporte a processos de colaboração de agentes sequenciais e hierárquicos.
- Gerenciamento avançado de memória:A estrutura fornece memória de curto e longo prazo, de entidade e contextual, facilitando o raciocínio e o aprendizado sofisticados.
Ollama
Ollama é uma estrutura para construir e executar modelos de linguagem em máquinas locais. É fácil de usar, pois podemos executar modelos diretamente em dispositivos sem a necessidade de serviços baseados em nuvem. Não há preocupação com privacidade.
Para interagir com Ollama:
Podemos executar o pip set up ollama
comando para integrar Ollama com Python.
Agora, podemos baixar modelos com o ollama pull
comando para baixar os modelos.
Vamos executar estes:
ollama pull llama2
ollama pull llama3
ollama pull llava
Agora, temos 3 dos Grandes Modelos de Linguagem (LLMs) localmente:
- Lhama 2: Um modelo de linguagem grande e de código aberto da Meta.
- Lhama 3: A mais recente iteração da série Llama da Meta, refinando ainda mais os recursos para tarefas complexas de geração de linguagem com maior tamanho de parâmetro e eficiência.
- LLaVA: Um modelo de visão e linguagem projetado para tarefas de compreensão de imagens e textos.
Podemos usar esses modelos localmente executando ollama run model-name
aqui está um exemplo:

Você pode pressionar ctrl + d
para sair.
Leia também: Como executar modelos LLM localmente com o Ollama?
Construindo um Sistema Multiagente
Vamos trabalhar na construção de um sistema Agentic que recebe uma imagem como entrada e fornece alguns fatos interessantes sobre o animal no sistema.
Objetivos
- Crie um sistema multiagente para classificação de imagens, descrição e recuperação de informações usando CrewAI.
- Automatize a tomada de decisões: Os agentes realizam tarefas específicas, como identificar animais em imagens, descrevê-los e buscar fatos relevantes.
- Sequenciamento de tarefas: Coordenar agentes por meio de tarefas em um sistema de agentes passo a passo.
Componentes
- Agente Classificador: Identifica se a imagem de entrada contém um animal usando o modelo llava:7b.
- Descrição Agente: Descreve o animal na imagem, também fornecido por llava:7b.
- Agente de recuperação de informações: Obtém fatos adicionais sobre o animal usando llama2.
- Definições de tarefas:Cada tarefa está vinculada a um agente específico, orientando sua ação.
- Gestão de Tripulação: A equipe coordena as ações dos agentes, executa tarefas e agrega resultados com base na imagem de entrada

Por padrão, as tarefas são executadas sequencialmente no CrewAI. Você pode adicionar um gerenciador de tarefas para controlar a ordem de execução. Além disso, o recurso allow_delegation permite que um agente peça ao seu agente anterior para regenerar uma resposta, se necessário. Definir reminiscence como True permite que os agentes aprendam com interações anteriores, e você pode, opcionalmente, configurar tarefas para pedir suggestions humano sobre a saída.
Leia também: Construindo agentes de IA colaborativos com CrewAI
Vamos construir nosso sistema multiagente
Antes de começar, vamos instalar todos os pacotes necessários:
pip set up crewai
pip set up 'crewai(instruments)'
pip set up ollama
1. Importar bibliotecas necessárias
from crewai import Agent, Job, Crew
import pkg_resources
# Get the model of CrewAI
crewai_version = pkg_resources.get_distribution("crewai").model
print(crewai_version)
0.61.0
2. Defina os agentes
Aqui, definimos três agentes com papéis e objetivos específicos. Cada agente é responsável por uma tarefa relacionada à classificação e descrição de imagens.
- Agente Classificador: Verifica se a imagem contém um animal, usa o modelo llava:7b para classificar o animal.
- Descrição Agente: Descreve o animal na imagem. Isso também usa o mesmo modelo llava:7b como o agente anterior.
- Agente de recuperação de informações: Este agente recupera informações adicionais ou fatos interessantes sobre o animal. Ele usa llama2 para fornecer essas informações.
# 1. Picture Classifier Agent (to test if the picture is an animal)
classifier_agent = Agent(
function="Picture Classifier Agent",
aim="Decide if the picture is of an animal or not",
backstory="""
You could have a watch for animals! Your job is to establish whether or not the enter picture is of an animal
or one thing else.
""",
llm='ollama/llava:7b' # Mannequin for image-related duties
)
# 2. Animal Description Agent (to explain the animal within the picture)
description_agent = Agent(
function="Animal Description Agent {image_path}",
aim="Describe the animal within the picture",
backstory="""
You like nature and animals. Your job is to explain any animal primarily based on a picture.
""",
llm='ollama/llava:7b' # Mannequin for image-related duties
)
# 3. Data Retrieval Agent (to fetch additional information in regards to the animal)
info_agent = Agent(
function="Data Agent",
aim="Give compelling details about a sure animal",
backstory="""
You might be excellent at telling fascinating info.
You do not give any improper info if you do not know it.
""",
llm='ollama/llama2' # Mannequin for common information retrieval
)
3. Defina tarefas para cada agente
Cada tarefa é vinculada a um dos agentes. As tarefas descrevem a entrada, a saída esperada e qual agente deve lidar com isso.
- Tarefa 1: Classifique se a imagem contém um animal.
- Tarefa 2:Se a imagem for classificada como um animal, descreva-o.
- Tarefa 3: Forneça informações adicionais sobre o animal com base na descrição.
# Job 1: Verify if the picture is an animal
task1 = Job(
description="Classify the picture ({image_path}) and inform me if it is an animal.",
expected_output="If it is an animal, say 'animal'; in any other case, say 'not an animal'.",
agent=classifier_agent
)
# Job 2: If it is an animal, describe it
task2 = Job(
description="Describe the animal within the picture.({image_path})",
expected_output="Give an in depth description of the animal.",
agent=description_agent
)
# Job 3: Present extra details about the animal
task3 = Job(
description="Give further details about the described animal.",
expected_output="Present a minimum of 5 fascinating info or details about the animal.",
agent=info_agent
)
4. Gerenciando agentes e tarefas com uma equipe
Uma Crew é configurada para gerenciar os agentes e tarefas. Ela coordena as tarefas sequencialmente e fornece os resultados com base na cadeia de pensamentos dos agentes.
# Crew to handle the brokers and duties
crew = Crew(
brokers=(classifier_agent, description_agent, info_agent),
duties=(task1, task2, task3),
verbose=True
)
# Execute the duties with the offered picture path
end result = crew.kickoff(inputs={'image_path': 'racoon.jpg'})

Forneci uma imagem de um guaxinim para a estrutura crewAI e esta é a saída que obtive:
Observação: certifique-se de que a imagem esteja no diretório de trabalho ou você pode fornecer o caminho completo.
SAÍDA
# Agent: Picture Classifier Agent## Job: Classify the picture (racoon.jpg) and inform me if it is an animal.
# Agent: Picture Classifier Agent
## Closing Reply:
Based mostly on my evaluation, the picture (racoon.jpg) incorporates a raccoon, which is
certainly an animal. Due to this fact, the ultimate reply is 'animal'.# Agent: Animal Description Agent racoon.jpg
## Job: Describe the animal within the picture.(racoon.jpg)
# Agent: Animal Description Agent racoon.jpg
## Closing Reply:
The picture (racoon.jpg) contains a raccoon, which is a mammal identified for its
agility and flexibility to numerous environments. Raccoons are characterised
by their distinct black "masks" across the eyes and ears, in addition to a
grayish or brownish coat with white markings on the face and paws. They've
a comparatively brief tail and small rounded ears. Raccoons are omnivorous and
have a extremely dexterous entrance paw that they use to control objects. They
are additionally identified for his or her intelligence and talent to resolve issues, equivalent to
opening containers or climbing bushes.# Agent: Data Agent
## Job: Give further details about the described animal.
# Agent: Data Agent
## Closing Reply:
Listed here are 5 fascinating info in regards to the raccoon:
1. Raccoons have distinctive dexterity of their entrance paws, which they use to
manipulate objects with exceptional precision. In truth, research have proven
that raccoons are in a position to open containers and carry out different duties with a
stage of talent rivaling that of people!2. Regardless of their cute look, raccoons are formidable hunters and may
catch all kinds of prey, together with fish, bugs, and small mammals.
Their delicate snouts assist them find meals at nighttime waters or
underbrush.3. Raccoons are extremely adaptable and might be present in a spread of habitats,
from forests to marshes to city areas. They're even identified to climb bushes
and swim in water!4. Along with their intelligence and problem-solving abilities, raccoons
have a wonderful reminiscence and are in a position to acknowledge and work together with
particular person people and different animals. They will additionally be taught to carry out methods
and duties by coaching.5. In contrast to many different mammals, raccoons don't hibernate in the course of the winter
months. As an alternative, they enter a state of dormancy generally known as torpor, which
permits them to preserve vitality and survive harsh climate situations. Throughout
this time, their coronary heart charge slows dramatically, from round 70-80 beats per
minute to simply 10-20!I hope these fascinating info will present a complete understanding of
the fascinating raccoon species!
O classificador confirmou que period um animal, e então o agente com o modelo llava:7b descreveu o animal e a imagem e os passou sequencialmente para o agente de informação. Apesar do agente de informação usar llama2, um modelo baseado em texto, ele foi capaz de usar o contexto do agente anterior e dar informações sobre um guaxinim.
Leia também: Construindo um Chatbot Responsivo com Llama 3.1, Ollama e LangChain
Conclusão
Usar vários LLMs de acordo com seus pontos fortes é bom porque modelos diferentes se destacam em tarefas diferentes. Usamos CrewAI e Ollama para demonstrar colaboração multiagente e também usamos LLMs localmente do Ollama. Sim, os modelos Ollama podem ser mais lentos em comparação aos modelos baseados em nuvem por razões óbvias, mas ambos têm seus prós e contras. A eficácia da estrutura de agente depende dos fluxos de trabalho e do uso das ferramentas e LLMs certos para otimizar os resultados.
Perguntas frequentes
Resposta: Quando definido como True, é um parâmetro crewAI que permite que agentes atribuam tarefas a outros, permitindo fluxos de tarefas complexos e colaboração.
O Ans. crewAI usa objetos Pydantic para definir e validar estruturas de dados de entrada/saída de tarefas, garantindo que os agentes recebam e produzam dados no formato esperado.
O Ans. crewAI gerencia isso organizando agentes e tarefas em um objeto ‘Crew’, coordenando tarefas sequencialmente com base em dependências definidas pelo usuário.
Resposta. Sim, ambos suportam LLMs personalizados. Para crewAI, especifique o caminho/nome do modelo ao criar um Agente. Para Ollama, siga a documentação para criar e executar modelos personalizados.