- Arquitetura de agentes puramente funcional: estado e comportamento são definidos como dados, e os efeitos colaterais são separados como diretivas imperativas (directive), simplificando testes e depuração
- Adota uma API concisa e design centrado no BEAM, separando módulos como
jido_action e jido_signal para fornecer um sistema padronizado de ações e sinais
- A camada superior Jido AI oferece suporte a 6 estratégias de raciocínio, como ReAct e Chain-of-Thought, e permite usar 11 provedores e 665 modelos com a integração de LLM baseada em ReqLLM
- O Jido agora está se expandindo como uma plataforma de ecossistema de agentes e, com a integração ao Ash Framework (
ash_jido), oferece suporte à transformação de CRUD em ferramentas invocáveis por IA
Visão geral do Jido 2.0
- O Jido 2.0 é um framework de agentes baseado em Elixir concluído após 18 meses de desenvolvimento e reformulação
- Inicialmente começou em 2024 como uma plataforma de bots chamada BotHive, e depois adotou o runtime BEAM como base para o sistema de agentes
- Para superar as limitações de frameworks baseados em TypeScript ou Python, aproveita a concorrência e estabilidade do BEAM
Mudanças da versão 1.0 para a 2.0
- O Jido 1.0 tinha usabilidade reduzida devido ao excesso de abstrações, mas na 2.0 isso foi melhorado com uma API simplificada e uma estrutura centrada no BEAM
- Com base no feedback dos usuários, a complexidade desnecessária foi removida e o atrito para executar as funções básicas foi minimizado
- Reflete a demanda de “quero criar agentes, não brigar com o framework”
Um núcleo de agentes poderoso e durável
- O núcleo do Jido 2.0 é uma arquitetura de agentes puramente funcional
- O agente é definido como uma struct simples com estado (
state), ações (actions) e ferramentas (tools)
- Todas as operações são tratadas pela função
cmd/2, que retorna o agente atualizado e uma lista de diretivas de acordo com a ação recebida
- Os efeitos colaterais são expressos como diretivas e executados pelo runtime, facilitando testes e depuração
- O
Jido.AgentServer encapsula o agente em um GenServer supervisionado e oferece suporte a roteamento de sinais e hierarquias de agentes pai-filho
- As estratégias (
strategy) são pontos de extensão, com Direct (execução sequencial) e FSM (máquina de estados) fornecidos por padrão
- Estratégias de IA como ReAct e Chain-of-Thought também operam com a mesma interface
Separação entre módulos de ações e sinais
jido_action: um contrato universal de ações que define todas as funcionalidades do agente
- Inclui validação de esquema em tempo de compilação, hooks de ciclo de vida e conversão automática para o formato de ferramentas do ReqLLM
- Oferece mais de 25 ferramentas pré-construídas e um planejador de workflow baseado em DAG
jido_signal: sistema de mensagens baseado em CloudEvents v1.0.2
- Fornece formato padronizado de sinais, roteador baseado em trie, barramento pub/sub e 9 adaptadores de despacho
- Permite integração com diversos sistemas sem protocolos não padronizados
Camada de integração do Jido AI
jido_ai é uma camada de integração que converte chamadas de LLM em inteligência estruturada de agentes
- Traz embutidas 6 estratégias de raciocínio, incluindo ReAct, Chain-of-Thought, Tree-of-Thoughts, Graph-of-Thoughts, TRM e Adaptive
- Mantém o mesmo contrato
cmd/2 e o sistema de diretivas, integrando a camada de IA como uma extensão, e não como um mundo separado
- Funciona com base em ReqLLM e oferece suporte a 11 provedores e mais de 665 modelos
- Design streaming-first, arquitetura multi-provedor e contribuições ativas da comunidade
Um ecossistema em expansão
- O Jido está evoluindo além de um simples framework para um ecossistema de agentes
- A comunidade está construindo sobre o BEAM assistentes de programação, orquestradores de workflow, agentes de pesquisa e sistemas de suporte operacional, entre outros
- Estão surgindo diversos pacotes, incluindo automação de navegador, sistemas de memória, harnesses de avaliação e integração com MCP
- Integração com Ash Framework (
ash_jido)
- Ao adicionar um bloco DSL
jido a recursos do Ash, ações CRUD são convertidas em ferramentas invocáveis por IA
- Mantém políticas de permissão, camada de dados e segurança de tipos
- O
ash_ai também está migrando para ReqLLM, avançando a convergência entre os dois ecossistemas
Comunidade e agradecimentos
- O Jido 2.0 foi construído sobre o ecossistema da comunidade Elixir
- Fortalecido pelas contribuições de bibliotecas importantes como Phoenix, LiveView, Ash, Req, Telemetry e NimbleOptions
Primeiros passos
1 comentários
Comentários do Hacker News
Ainda não usei o Jido na prática, mas faço questão de acompanhar pelo menos uma vez por mês
Acho que o BEAM combina perfeitamente com frameworks de agentes, mas o ecossistema ainda é limitado, então não consegui me aprofundar muito
Estou animado com a versão 2.0. Aliás, parece que há um problema de escape de entidades em alguns exemplos de código
Gostei muito da abordagem centrada em “dados e funções puras”, enfatizada desde o começo do texto
Vejo com frequência comentários de que o modelo de execução do BEAM é adequado para IA, mas, na prática, a robustez em situações como falha de nó ou rolling deploy muitas vezes é ignorada
Também existe o equívoco de que Elixir oferece transparência de localização, mas não é bem assim. Se um nó cai, os processos dentro dele também são encerrados
Manter um estado do agente claro e puro em cada etapa da chamada de API pode resolver esse problema. Basta salvar o estado no Mnesia ou Redis e retomar em outro nó. No fim, o ponto central é o checkpointing
É por isso que o core do Jido não tem suporte a LLM algum.
Há mais de 40 anos de pesquisa sobre agentes, mas parece que, com a chegada dos LLMs, tudo isso foi esquecido. Então eu quis estudar essa história de novo e incorporá-la ao Jido
Claro que eu gosto de LLMs, mas esse é o papel do pacote Jido AI
O timing é perfeito. Eu misturei gen server com Oban para criar meu próprio framework de agentes, e foi um trabalho realmente doloroso
Parece que este projeto vai reduzir bastante a dor no desenvolvimento. Muito obrigado
Fiquei curioso se isso é parecido com o OpenAI Symphony
Eu acompanho mais o lado de Elixir do que IA, então é interessante ver Elixir e BEAM sendo usados para esse tipo de workload de orquestração
O site está difícil de acessar por causa do pico de tráfego. Então compartilho o link de backup no archive.org
Obrigado por compartilhar! Vou conferir com certeza
Recentemente criei um pacote A2A com LLM, com uma abstração parecida com GenServer
Já existiam outras implementações de A2A, mas o meu pacote tem uma semântica diferente, então publiquei mesmo assim
Quem tiver interesse pode ver aqui
Estou acompanhando este projeto há alguns meses, e Elixir/BEAM é uma plataforma perfeita para executar agentes
O BEAM é realmente leve e eficiente, então, em teoria, daria para rodar milhares de agentes em um único servidor
Estou curioso para ver o que as pessoas que entenderem isso vão construir daqui para frente
Houve até tentativas de implantar o BEAM em bare metal (embarcado) para executar agentes lá dentro
Acho que o futuro vai ficar realmente interessante
Seria bom ver uma captura de tela da árvore de processos com os agentes ativos no
observerPara referência, o observer é uma ferramenta que visualiza os processos Erlang dentro da VM BEAM
Um exemplo de captura de tela pode ser visto na documentação da Fly.io
jido_studio. Ele vai visualizar a estrutura dos processosUma captura de tela teaser pode ser vista aqui
Agentes empacotados com AgentRuntime normalmente funcionam como um único processo GenServer, mas há exceções quando é necessária uma topologia maior
Timing perfeito. Eu também estava criando meu próprio framework de agentes em Erlang, mas isso está muito melhor
Fiquei curioso sobre como a segurança é garantida. Sem isolamento por contêiner, parece difícil evitar vazamento de segredos de produção
Já vi casos de Jido implementados dessa forma
Mas isso depende do caso de uso, e segurança é um tema muito mais amplo do que simplesmente o problema de “agentes dentro de contêineres”
O objetivo do Jido não é resolver segurança diretamente, e sim fornecer ferramentas para que o usuário resolva isso da forma necessária