Aprendizagem pessoal com IA
e orientação prática

Adeus LangChain! A Atomic Agents está pegando fogo!

assemelhar-seLangChaineCrewAIresponder cantandoAutoGenEssas estruturas são populares por fornecerem abstrações de alto nível para a criação de sistemas de IA. No entanto, muitos desenvolvedores, inclusive eu, descobriram que essas ferramentas fazem mais mal do que bem, muitas vezes acrescentando complexidade desnecessária e frustração ao processo de desenvolvimento.

entrar emAgentes atômicos- Uma estrutura modular e simplificada projetada para eliminar os problemas associados às ferramentas de desenvolvimento de IA existentes. Modelo de entrada-processo-saída (IPO)responder cantandoatomicidadefornecendo uma nova abordagem que prioriza a simplicidade, a flexibilidade e o controle do desenvolvedor.


Neste artigo, veremos mais de perto por que o Atomic Agents foi criado, o paradigma de programação que ele usa e como ele se destaca dos demais. Dê uma olhada no Atomic Agents com amostras de código e exemplos do mundo real e, se você já pensou que o LangChain era muito complicado, vamos dar uma olhada nele juntos!

Problemas com as estruturas de IA existentes

Quando comecei a fazer experiências comLangChainNa época, eu estava muito interessado em simplificar o desenvolvimento de agentes de IA. No entanto, na verdade, não é tão simples assim.

Além da complexidade de classes e métodos, os desenvolvedores da LangChain não parecem entender os desafios práticos do desenvolvimento de IA, talvez valorizando mais a elegância teórica do que a usabilidade no mundo real. A abstração excessiva não só torna o desenvolvimento mais difícil, como também o torna opaco.

Ilusões mágicas no CrewAI e no AutoGen

Da mesma forma.CrewAIresponder cantandoAutoGenEstruturas como essas também tentam fornecer soluções "mágicas" automatizando tarefas complexas. A ideia de implementar enxames de agentes de IA para lidar com tudo de forma autônoma é tentadora, mas, na prática, essas ferramentas geralmente não funcionam adequadamente na metade do tempo. Na prática, elas prometem demais e entregam de menos, deixando os desenvolvedores sobrecarregados com comportamentos imprevisíveis e falta de controle.

Essas estruturas obscurecem os processos subjacentes, dificultando a depuração ou a personalização da funcionalidade. O resultado é que essas ferramentas são mais uma caixa preta do que uma estrutura útil, o que não é ideal para o desenvolvimento de aplicativos que exigem confiabilidade e facilidade de manutenção.

A função de excesso de compromisso: perguntas frequentes

Um problema recorrente com essas estruturas é a tendência deFunção de excesso de comprometimento. Algumas empresas e ferramentas afirmam oferecer soluções que se aproximam da AGI (Inteligência Artificial Geral), mas se você tiver uma longa carreira relacionada ao campo da IA, perceberá que ainda não chegamos lá. O hype geralmente leva a expectativas irrealistas e, quando essas ferramentas inevitavelmente ficam aquém do esperado, os desenvolvedores têm de enfrentar as consequências.

Precisa de uma maneira melhor

Depois de lutar contra esses contratempos, ficou claro para nós que precisávamos de uma estrutura desse tipo:Eliminação de complexidade desnecessáriae camadas de abstração:

  • Eliminação de complexidade desnecessáriae camadas de abstração.
  • Fornecer aos desenvolvedores controle totalsem ocultar a funcionalidade principal por trás de interfaces opacas.
  • Seguir paradigmas de programação confiáveis e testados pelo tempomelhorando a capacidade de manutenção e o dimensionamento.
  • Criado por desenvolvedores, para desenvolvedoresCompreender os desafios práticos enfrentados no desenvolvimento de IA.

Esse entendimento levou aAgentes atômicosO nascimento de.

Introdução aos agentes atômicos

Logotipo da Atomic Agents

Agentes atômicosé uma estrutura de código aberto projetada para ser o mais leve, modular e componível possível. Ela segue o padrãoModelo de entrada-processamento-saída (IPO)responder cantandoatomicidadegarantindo que cada componente seja de propósito único, reutilizável e intercambiável.

Por que existem os agentes atômicos?

Agentes atômicos foi criado para preencher as lacunas das estruturas existentes. Seu objetivo é

  • Fornecendo componentes claros e gerenciáveis.Simplificando o desenvolvimento da inteligência artificial.
  • Eliminar a complexidade redundante que assola outras estruturase abstrações desnecessárias.
  • Promoção da flexibilidade e da coerênciapermitindo que os desenvolvedores se concentrem na criação de aplicativos de IA eficazes, em vez de se envolverem com a própria estrutura.
  • Incentivo às melhores práticasOs desenvolvedores são incentivados a adotar uma estrutura de código modular e de fácil manutenção.

Ao aderir a esses princípios, o Atomic Agents permite que os desenvolvedores criem agentes e aplicativos de IA que são poderosos e fáceis de gerenciar.

O paradigma de programação por trás dos agentes atômicos

Modelo de entrada-processo-saída (IPO)

No centro do Atomic Agents está oModelo de entrada-processo-saída (IPO)que é um paradigma básico de programação que divide a estrutura de um programa em três fases distintas:

  1. EntradaReceber dados de usuários ou de outros sistemas.
  2. ProcessoProcessamento ou conversão de dados.
  3. SaídaOs dados processados são apresentados como resultados.

Esse modelo é claro e conciso e facilita a compreensão e o gerenciamento do fluxo de dados em um aplicativo.

Em Atomic Agents, isso se traduz em

  • Esquemas de entradaUse Pydantic para definir a estrutura dos dados de entrada e as regras de validação.
  • Componentes de processamentoAgentes e ferramentas que realizam operações em dados.
  • Esquemas de saídaGarantir que os resultados sejam estruturados e validados antes de serem retornados.

Atomicidade: blocos de construção funcionais

atomicidadeO conceito consiste em decompor um sistema complexo em suas menores partes funcionais ou "átomos". Cada átomo

  • Ter uma única responsabilidadeIsso facilita a compreensão e a manutenção.
  • ReutilizávelIsso permite que os componentes sejam usados em diferentes partes do aplicativo ou até mesmo em diferentes projetos.
  • Pode ser combinado com outros componentes atômicos para criar funções mais complexas.

Ao se concentrar em componentes atômicos, o Atomic Agents facilita uma arquitetura modular para aumentar a flexibilidade e o dimensionamento.

Como funcionam os agentes atômicos

ingrediente

No Atomic Agents, o agente de IA consiste em vários componentes principais:

  • alerta do sistemaDefinição do comportamento e da finalidade do agente: Definir o comportamento e a finalidade do agente.
  • modo de entradaEstrutura de entrada: Especifica a estrutura esperada dos dados de entrada.
  • modo de saídaDados de saída: Define a estrutura dos dados de saída.
  • memória de acesso aleatório (RAM)Histórico de diálogo: Armazena o histórico do diálogo ou informações de status.
  • programação sensível ao contextoInjeta um contexto dinâmico no prompt do sistema em tempo de execução.
  • artefatoFunções externas ou interfaces de aplicativos disponíveis para o agente.

Cada componente foi projetado para ser modular e intercambiável e segue os princípios de separação de preocupações e responsabilidade única.

Modularidade e capacidade de composição

A modularidade é a essência do Atomic Agents. Ao projetar componentes para serem autônomos e focados em uma única tarefa, os desenvolvedores podem

  • Mudança de ferramentas ou agentessem afetar o restante do sistema.
  • Ajuste fino de componentes individuaiscomo avisos ou modos do sistema, sem criar efeitos colaterais indesejados.
  • Ao ajustar os modos de entrada e saída, oAgentes e ferramentasSem problemas.

Essa abordagem modular não apenas torna o desenvolvimento mais gerenciável, mas também aprimora a capacidade de manutenção e o dimensionamento dos aplicativos de IA.

Fornecimento de contexto: aumento da flexibilidade

programação sensível ao contextoPermitir que os agentes incluam dados dinâmicos nos prompts do sistema e aprimorem as respostas com base nas informações mais recentes.

Exemplo:

de atomic_agents.lib.components.system_prompt_generator import SystemPromptContextProviderBase


def __init__(self, title: str, search_results: List[str]): super().
__init__(title: str, search_results: List[str]): super(). __init__(title=title)
self.search_results = search_results
def get_info(self) -> str.
return "n".join(self.search_results)
# Registre o provedor de contexto com o agente
agent.register_context_provider("search_results", search_results_provider)

Ao injetar dados em tempo real no contexto do agente, você pode criar aplicativos de IA mais dinâmicos e responsivos.

Encadeamento de padrões e agentes

O Atomic Agents simplifica o processo de encadeamento de agentes e ferramentas, ajustando os modos de entrada e saída.

Exemplo: Suponha que você tenha um agente de geração de consultas e uma ferramenta de pesquisa na Web. Ao definir o padrão de saída do agente de consulta para corresponder ao padrão de entrada da ferramenta de pesquisa, você pode encadeá-los diretamente.

de web_search_agent.tools.searxng_search import SearxNGSearchTool

# Inicializar o agente de consulta
query_agent = BaseAgent(
BaseAgentConfig(
# ... outras configurações ...
output_schema=SearxNGSearchTool.input_schema, # Alinhar esquema de saída
)
)

Esse design melhora a reutilização e a flexibilidade, permitindo a fácil substituição de componentes ou a expansão da funcionalidade.

Razões pelas quais os Atomic Agents são melhores do que outros produtos

Eliminação de complexidade desnecessária

Ao contrário das estruturas que introduzem várias camadas de abstração, o Atomic Agents mantém tudo simples e direto. Cada componente tem uma finalidade clara e não há nenhuma mágica oculta a ser descoberta.

  • arquitetura transparenteVocê pode entender completamente como os dados fluem pelo seu aplicativo.
  • Depuração mais fácilIdentificação e correção de problemas são facilitadas pela redução da complexidade.
  • Curva de aprendizado reduzidaDesenvolvedores: Os desenvolvedores podem começar a trabalhar rapidamente sem precisar entender conceitos abstratos complexos.

Criado por desenvolvedores, para desenvolvedores

O Atomic Agents foi projetado tendo em mente os desafios de desenvolvimento do mundo real. Ele usa paradigmas de programação testados e comprovados e prioriza a experiência do desenvolvedor.

  • Sólida base de programaçãoEstrutura de IPO: Ao seguir o modelo de IPO e a atomicidade, a estrutura incentiva as práticas recomendadas.
  • Flexibilidade e controleOs desenvolvedores têm liberdade para personalizar e ampliar os componentes conforme necessário.
  • voltado para a comunidadeComo um projeto de código aberto, ele convida contribuições e colaboração da comunidade de desenvolvedores.

Componentes autônomos e reutilizáveis

Cada parte do Atomic Agents pode ser executada de forma independente, promovendo assim a reutilização e a modularidade.

  • Pode ser testado isoladamenteComponentes: os componentes podem ser testados individualmente para garantir a confiabilidade antes da integração.
  • Reutilizável em vários projetosComponentes atômicos: os componentes atômicos podem ser usados em diferentes aplicações, economizando tempo de desenvolvimento.
  • Manutenção mais fácilO recurso de isolamento reduz o impacto das alterações e simplifica as atualizações.

Criação de um agente de IA simples

Criaremos um agente de IA que responde às consultas do usuário e faz perguntas de acompanhamento.

Etapa 1: Definir modos personalizados de entrada e saída

from pydantic import BaseModel, Field from typing import List from atomic_agents.agents.base_agent import BaseIOSchema

class CustomInputSchema(BaseIOSchema):: chat_message: str = Field(...)
chat_message: str = Field(...) , description="A mensagem de entrada do usuário.")

class CustomOutputSchema(BaseIOSchema): chat_message: str = Field(... , description="A mensagem de entrada do usuário.")
chat_message: str = Field(..., description="A mensagem de entrada do agente.") , description="A mensagem de resposta do agente.")
suggested_questions: List[str] = Field(..., description="Perguntas sugeridas.") , description="Perguntas de acompanhamento sugeridas.")

Etapa 2: Configuração dos alertas do sistema

de atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator

system_prompt_generator = SystemPromptGenerator(
background=[
"Você é um assistente experiente que fornece informações úteis e sugere perguntas de acompanhamento."
],
background=[ "Você é um assistente experiente que fornece informações úteis e sugere perguntas de acompanhamento." ], steps=[
"Analisar a entrada do usuário para entender o contexto e a intenção.", "Fornecer uma resposta relevante e informativa.
"Fornecer uma resposta relevante e informativa.", "Gerar 3 perguntas de acompanhamento sugeridas.
"Gerar 3 perguntas de acompanhamento sugeridas."
],
output_instructions=[
"Garanta clareza e concisão em sua resposta.", "Conclua com 3 sugestões de perguntas relevantes.
"Conclua com 3 sugestões de perguntas relevantes."
]
)

Etapa 3: inicializar o agente

from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig
importar instructor
import openai

# Inicializar o agente
agente = BaseAgent(
config=BaseAgentConfig(
client=instructor.from_openai(openai.OpenAI(api_key='YOUR_OPENAI_API_KEY')),
OpenAI(api_key='YOUR_OPENAI_API_KEY'), model="gpt-4",

input_schema=CustomInputSchema,
output_schema=CustomOutputSchema
)
)

Etapa 4: Uso de proxies

user_input = "Can you explain the benefits of using Atomic Agents?" input_data = CustomInputSchema(chat_message=user_input) response = agent.run( input_data)

print(f "Agente: {response.chat_message}")
print("Perguntas sugeridas:")
for question in response.suggested_questions:
print(f"- {question}")

Resultado esperado:

Agent: Atomic Agents simplifica o desenvolvimento de IA fornecendo componentes modulares e reutilizáveis com base em paradigmas de programação sólidos, como o modelo IPO e a atomicidade.
Perguntas sugeridas.
- Como o Atomic Agents se compara a outras estruturas de IA?
- Você pode fornecer um exemplo de criação de um agente com o Atomic Agents?
- Quais são os principais recursos do Atomic Agents que aumentam a produtividade?

Ferramentas de integração e provedores de contexto

Suponhamos que queremos que o agente realize uma pesquisa na Web com base em uma consulta do usuário.

Etapa 1: Faça o download e configure o SearxNGSearchTool

fazer uso de CLI do Atomic AssemblerPodemos fazer o download da ferramenta de pesquisa:

atômico

Selecione SearxNGSearchTool no menu e siga as instruções para instalar as dependências.

Etapa 2: Integração de ferramentas de pesquisa

de web_search_agent.tools.searxng_search importar SearxNGSearchTool, SearxNGSearchToolConfig

# Inicializar a ferramenta de pesquisa
search_tool = SearxNGSearchTool(config=SearxNGSearchToolConfig(base_url="http://localhost:8080"))

Etapa 3: Atualize o agente para usar a ferramenta

Podemos modificar o agente para decidir quando usar a ferramenta de pesquisa com base na entrada do usuário.

from typing import Union

class OrchestratorOutputSchema(BaseModel):: str = Field(....
tool: str = Field(... , description="A ferramenta a ser usada: 'search' ou 'chat'")
parameters: Union[SearxNGSearchTool.input_schema, CustomInputSchema] = Field(... , description="Parâmetros para 'search' ou 'chat'") , description="Parâmetros para a ferramenta selecionada.")
# Modificar a lógica do agente para gerar OrchestratorOutputSchema
# ...
# Execute a ferramenta selecionada
Se response.tool == "search".
search_results = search_tool.run(response.parameters)
# Processar os resultados da pesquisa
caso contrário.
# usa o agente de bate-papo anterior
passar

Etapa 4: Use um provedor contextual com resultados de pesquisa

def __init__(self, search_results): super().
        __init__(title="Search_results"). __init__(title="Resultados da pesquisa")
        self.search_results = search_results
def get_info(self) -> str.
return "n".join(self.search_results)
# Após obter os resultados da pesquisa
provedor_de_contexto = provedor_de_resultados_da_pesquisa(resultados_da_pesquisa)
agent.register_context_provider("search_results", context_provider)

Com essa integração, os agentes podem fornecer respostas com base em dados de pesquisa na Web em tempo real.

CLI do Atomic Assembler: ferramentas de gerenciamento fáceis

Uma característica distintiva dos agentes atômicos éCLI do Atomic AssemblerEssa é uma ferramenta de linha de comando que simplifica o gerenciamento de ferramentas e agentes.

Inspirado em algumas bibliotecas modernas do Tailwind, como a shadcn, em que, em vez de instalar componentes como dependências, você assume a propriedade deles em seu próprio código-fonte.

Isso significa que, em vez de instalar a ferramenta como uma dependência usando o pip, nós a copiaremos em nosso projeto. Há duas maneiras de fazer isso:

  1. Faça o download da ferramenta manualmente ou copie/cole o código-fonte do repositório do GitHub do Atomic Agents e solte-o no arquivo forja atômica pasta.
  2. Usaremos a CLI do Atomic Assembler para fazer o download da ferramenta.

Agentes atômicos

função-chave

  • Ferramentas de download e gerenciamentoAdicione facilmente novas ferramentas a projetos sem precisar copiar ou resolver dependências manualmente.
  • Evitar a desordem de dependênciasMantenha seu projeto enxuto, instalando apenas as ferramentas necessárias.
  • Ferramenta de modificação fácilCada ferramenta é independente, com seus próprios testes e documentação.
  • Ferramentas de acesso diretoSe desejar, você pode gerenciar manualmente as ferramentas acessando a pasta Tools.

escrever no final

O Atomic Agents traz uma mudança muito necessária para o campo de desenvolvimento de IA, priorizando a simplicidade, a modularidade e o controle do desenvolvedor. Ao adotar paradigmas de programação confiáveis, como o modelo Input-Process-Output e a atomicidade, ele resolve muitos dos problemas que os desenvolvedores enfrentam ao usar LangChain, CrewAI e AutoGen As frustrações encontradas nas estruturas existentes, como a

Com o Atomic Agents, você pode

  • Eliminação de complexidade desnecessáriaque se concentra na criação de aplicativos de IA eficazes.
  • Controle totalcada componente do sistema.
  • Substituir ou modificar componentes com facilidadesem interromper o aplicativo inteiro.
  • Aproveitamento da modularidade e da reutilizaçãoMelhorar a eficiência e a capacidade de manutenção.

Se você está cansado de lutar com estruturas excessivamente complexas que prometem demais e entregam de menos, é hora de experimentar o Atomic Agents.

Aprendizagem fácil com IA

O guia do leigo para começar a usar a IA

Ajuda você a aprender a utilizar as ferramentas de IA com baixo custo e a partir de uma base zero.A IA, assim como o software de escritório, é uma habilidade essencial para todos. Dominar a IA lhe dará uma vantagem em sua busca de emprego e metade do esforço em seu trabalho e estudos futuros.

Ver detalhes>
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Adeus LangChain! A Atomic Agents está pegando fogo!

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil