Article image
Antonio Oliveira
Antonio Oliveira14/05/2025 05:57
Compartilhe

Inteligência Artificial Colaborativa: Criando Sistemas Multiagentes com Python, LLMs e CrewAI

  • #Machine Learning
  • #Python
  • #Inteligência Artificial (IA)

Introdução

Na era da Inteligência Artificial generativa, estamos acostumados a interagir com modelos poderosos como o ChatGPT. Mas, e se em vez de depender de um único agente superinteligente, pudéssemos distribuir responsabilidades entre vários agentes especializados, cada um com seu foco e expertise? Essa é a proposta da arquitetura multiagente com Python e IA.

Neste artigo, vamos mostrar como combinar Python, CrewAI, LangChain, LLMs como OpenAI GPT e Groq LLaMA, para criar sistemas inteligentes colaborativos. Veremos também aplicações práticas, com destaque para o projeto Trip Planner Crew, uma solução que exemplifica o poder dessa abordagem, ao utilizar agentes autônomos para tarefas como recomendação de cidades, planejamento de roteiros e sugestões locais baseadas em clima e eventos.

O Que é uma Arquitetura Multiagente?

Uma arquitetura multiagente é composta por diversas entidades inteligentes chamadas agentes, que colaboram para atingir um objetivo comum. Cada agente tem uma função bem definida e pode utilizar ferramentas, consultar modelos de linguagem e tomar decisões autônomas. Esses agentes se comunicam e compartilham informações para compor soluções complexas.

Por exemplo, em um sistema de planejamento de viagens, podemos ter:

  • Um agente responsável por identificar a melhor cidade com base em clima, custo e preferências.
  • Um agente especialista em montar roteiros dia a dia.
  • Um guia local virtual para sugerir atrações escondidas e dicas culturais.

Essa colaboração é orquestrada usando CrewAI, uma biblioteca Python que permite definir agentes, tarefas e controladores. Os agentes são alimentados por LLMs como GPT e LLaMA, acessados via LangChain, que fornece uma camada de abstração poderosa para integração com ferramentas, contexto e memória.

Vamos examinar, na prática, como isso é feito com Python:

Definindo Agentes com CrewAI

from crewai import Agent
from langchain_openai import ChatOpenAI

agent = Agent(
 role="Especialista em Destinos",
 backstory="Expert em recomendações baseadas em interesses e sazonalidade",
 goal="Identificar a melhor cidade para o viajante com base em dados atualizados",
 tools=[SerperDevTool(), WebsiteSearchTool()],
 verbose=True,
 llm=ChatOpenAI(model="gpt-3.5-turbo")
)

Neste exemplo:

  • role define o papel do agente.
  • goal define sua missão.
  • tools são recursos externos que o agente pode usar (busca, scraping, etc).
  • llm é o modelo de linguagem que executará as inferências.

Definindo Tarefas com CrewAI

from crewai import Task

task = Task(
 description="Selecionar a melhor cidade com base nas preferências do usuário",
 agent=agent,
 expected_output="Cidade recomendada com justificativas sobre clima, custo e atrações",
)

Tarefas são unidades de trabalho atribuídas a agentes. Elas contêm instruções específicas e definem o resultado esperado.

Como CrewAI e LangChain Trabalham Juntos

CrewAI gerencia a orquestração de múltiplos agentes e tarefas. Já o LangChain atua nos bastidores:

  • Formatando prompts complexos.
  • Gerenciando a memória conversacional do agente.
  • Chamando ferramentas adicionais (APIs, busca, web scraping).

Isso significa que você pode criar agentes inteligentes com "superpoderes": eles conversam com modelos LLMs, buscam informações em tempo real e executam raciocínio contextual.

Exemplo Real Integrado

controller = TripController()
result = controller.run_trip_plan(
 origin="São Paulo",
 cities=["Paris", "Lisboa", "Barcelona"],
 date_range="2025-06-10 to 2025-06-17",
 interests="arte, gastronomia"
)

Neste trecho, o controlador coordena a execução de tarefas com os seguintes agentes:

  • City Selection Expert: compara cidades.
  • Expert Travel Agent: monta o itinerário.
  • Local Tour Guide: coleta informações culturais e logísticas.

O resultado final é uma estrutura JSON com sumários, planos diários, recomendações personalizadas e previsões.

Coordenação e Execução com CrewAI

O coração da execução multiagente está na classe Crew, que recebe a lista de agentes e tarefas. Ao chamar kickoff(), cada agente realiza sua tarefa e retorna sua saída, que pode ser utilizada por outros agentes ou pelo sistema.

from crewai import Crew

crew = Crew(
 agents=[expert_travel_agent, city_selection_expert, local_tour_guide],
 tasks=[plan_itinerary, identify_city, gather_city_info],
 verbose=True,
)

result = crew.kickoff()

A saída (result) contém:

  • Sumário final com recomendações cruzadas.
  • Resultados individuais por tarefa.
  • Uso de tokens e logs úteis para auditoria.

Resultado Estruturado

structured_result = {
 "final_summary": result.raw,
 "task_outputs": [
{
 "description": task.description,
 "expected_output": task.expected_output,
 "summary": task.summary,
 "raw": task.raw,
 "agent": task.agent.role
}
for task in result.tasks_output
 ],
 "token_usage": result.metrics,
}

Esse formato facilita o uso do sistema em interfaces como Streamlit, Dash ou integrações com APIs externas.

Interface com o Usuário: Streamlit em Ação

Uma das grandes vantagens de usar Python é poder transformar rapidamente um backend complexo em uma interface amigável. Utilizando Streamlit, podemos disponibilizar o sistema para qualquer pessoa de forma visual e interativa:

import streamlit as st

def run_ui(controller):
st.title("✈️ Your Trip Details")

with st.sidebar:
  st.header("✈️ Details of your trip")
  origin = st.text_input("Origin")
  cities = st.text_input("Cities to consider")
  date_range = st.text_input("Travel period (e.g. 2025-06-10 to 2025-06-17)")
  interests = st.text_input("Interests (e.g. culture, food, nature)")

if st.button("Generate Itinerary"):
  if not all([origin, cities, date_range, interests]):
    st.error("❌ Please fill out all fields.")
  else:
    with st.spinner("⏳ Generating your itinerary..."):
      result = controller.run_trip_plan(origin, cities, date_range, interests)

    if "final_summary" in result and result["final_summary"]:
      st.subheader("✅ Final Summary from the AI")
      st.markdown(result["final_summary"])

    if "task_outputs" in result and result["task_outputs"]:
      st.subheader("📋 Completed Tasks")
      for i, task in enumerate(result["task_outputs"]):
        with st.expander(f"{i+1}. {task.get('agent', 'Agente')}"):
          st.markdown(f"**Task Description:** {task['description']}")
          st.markdown(f"**Result:**\n\n{task['raw']}")

    if "token_usage" in result and result["token_usage"]:
      st.subheader("📊 Token Usage")
      st.json(result["token_usage"])

Arquitetura Multiagente: Diagrama de Funcionamento

image

Esse diagrama ajuda a visualizar o fluxo de trabalho: entrada do usuário → delegação de tarefas → colaboração entre agentes → composição da resposta final.

Conclusão e Próximos Passos

Sistemas multiagentes com Python, LLMs e CrewAI representam uma nova geração de soluções inteligentes. Ao dividir responsabilidades entre agentes especializados, é possível resolver problemas complexos com mais clareza, modularidade e precisão.

Se você trabalha com projetos que envolvem múltiplos critérios, decisões baseadas em contexto ou recomendações, essa arquitetura pode elevar a capacidade do seu sistema. E o melhor: com Python, tudo isso se torna acessível.

Dicas para Expandir:

  • Adapte para saúde: agentes especialistas em sintomas, histórico médico, tratamentos.
  • Use na educação: agentes que montam planos de estudo, explicam conteúdo e avaliam.
  • Aplique em negócios: agentes financeiros, de mercado, de compliance.

Referências

Compartilhe
Comentários (0)