Após 18 meses de construção, reescrita e repensação, o Jido 2.0 foi lançado. Está disponível no Hex agora.
Jido começou como uma plataforma de bot chamada BotHive em 2024. Então a onda de IA chegou e tudo mudou. Eu já estava usando o Elixir e resolvi fazer uma aposta: o BEAM é o melhor runtime para sistemas agentes.
As estruturas de agente TypeScript pareciam brinquedos. Loops de eventos de thread único tentando conciliar agentes simultâneos com promessas e orações. Os agentes Python se saíram um pouco melhor, mas depois de muito tempo não conseguiram mais ficar acordados. O BEAM foi construído exatamente para esse tipo de trabalho.
Depois de trabalhar com agentes no BEAM durante 18 meses, essa aposta certamente parece estar valendo a pena.
De 1,0 a 2,0
O Jido 1.0 foi lançado em março passado, mas reconhecidamente tinha engenharia excessiva. Eu ainda estava aprendendo OTP em profundidade e isso ficou evidente. Adicionei abstrações que não faziam sentido na prática. Isso criou muito atrito para fazer coisas básicas que outras estruturas de agentes facilitaram imediatamente.
O feedback foi claro e consistente. As pessoas queriam construir agentes, não lutar contra a estrutura. Peguei todo esse feedback e resolvi isso no 2.0. APIs mais simples. Menos cerimônia. BEAM-primeiro desde o início.
Aqui está o que enviamos:
Um núcleo de agente forte e durável
A base do Jido 2.0 é uma arquitetura de agente puramente funcional. Agentes são dados. Uma estrutura com estado, ações e ferramentas que podem ser executadas dentro de um GenServer. É isso.
Tudo flui através de uma única função: cmd/2. As ações entram. Um agente atualizado e uma lista de diretivas são publicados. O agente é sempre apenas dados. Os efeitos colaterais são descritos como diretivas, estruturas de dados digitadas que o tempo de execução executa. Isso torna mais fácil aos agentes raciocinar, testar e depurar.
Aqui está um exemplo:
defmodule MyAgent do
use Jido.Agent,
name: "my_agent",
description: "A simple agent",
strategy: Jido.Agent.Strategy.Direct,
actions: [MyApp.Actions.ProcessOrder],
schema: [
order_count: [type: :integer, default: 0]
]
end
# Pure function - no processes, no side effects, fully testable
{:ok, updated_agent, directives} = Jido.Agent.cmd(agent, {ProcessOrder, order_id: "123"})Você pode testar cada decisão que um agente toma sem tocar em uma rede, um banco de dados ou um LLM.
Cada recurso do Jido é construído em torno deste conceito básico.
Jido.AgentServer envolve qualquer agente em um GenServer supervisionado com roteamento de sinal, execução de diretivas e hierarquias de agente pai-filho. É o tempo de execução do agente para tudo o que se segue.
As estratégias são o principal ponto de extensão. Eles controlam como o cmd/2 processa ações e são conectáveis. Dois navios com Jido principal: Direct (execução sequencial) e FSM (máquinas de estado com guardas de transição). Eles cobrem muito terreno sem qualquer envolvimento de IA.
É também assim que o Jido AI se conecta. O ReAct, o Chain-of-Thought e outras estratégias de raciocínio são apenas implementações de estratégia que adicionam chamadas LLM ao loop. Mesmo contrato cmd/2, mesmo sistema de diretivas, mesmo agente. A camada de IA é uma extensão, não um mundo separado.
jido_behaviortree é outro exemplo. Ele adiciona execução de árvore de comportamento aos agentes Jido, sem necessidade de LLM. A mesma interface de estratégia, modelo de execução completamente diferente.
Na versão 2.0, também dividimos ações e sinais em seus próprios pacotes focados:
jido_action é o contrato de ação universal. Cada capacidade que um agente possui é um Jido.Action, um comando validado e combinável com validação de esquema em tempo de compilação, ganchos de ciclo de vida e conversão automática para o formato de ferramenta do ReqLLM para ampla compatibilidade do provedor. Ele vem com mais de 25 ferramentas pré-construídas e um planejador de fluxo de trabalho baseado em DAG para execução complexa em várias etapas.
jido_signal é o sistema nervoso de mensagens. Construído com base na especificação CloudEvents v1.0.2, ele fornece envelopes de sinal padronizados, um roteador baseado em teste de alto desempenho, barramento pub/sub e nove adaptadores de despacho. Sinais baseados em padrões significam que você pode integrar-se com qualquer coisa. Não é um protocolo personalizado, nem um formato proprietário.
Jido A.I.
No topo do núcleo do agente está o Jido AI, uma camada robusta de integração de IA que transforma chamadas LLM brutas em inteligência estruturada do agente.
Seis estratégias de raciocínio vêm prontas para uso. ReAct é o mais comum e lida com a maioria dos casos de uso de chamadas de ferramentas. Cadeia de Pensamentos, Árvore de Pensamentos, Gráfico de Pensamentos, TRM e Adaptativo existem para situações que precisam de diferentes compensações entre custo, profundidade e qualidade.
defmodule MyApp.SupportAgent do
use Jido.AI.Agent,
name: "support_agent",
description: "Customer support agent with tool access",
tools: [
MyApp.Tools.LookupOrder,
MyApp.Tools.CheckInventory,
MyApp.Tools.CreateTicket
],
model: "anthropic:claude-sonnet-4-20250514",
max_iterations: 6,
system_prompt: """
You are a customer support agent. Use the available tools
to look up orders, check inventory, and create tickets.
Be concise and helpful.
"""
end
# Start the agent and ask a question
{:ok, pid} = Jido.AgentServer.start_link(agent: MyApp.SupportAgent)
{:ok, answer} = MyApp.SupportAgent.ask_sync(
pid,
"Order #4521 hasn't arrived. Can you check on it and open a ticket?",
timeout: 60_000
)O agente executa um loop ReAct: raciocina sobre a pergunta, chama as ferramentas, envia os resultados ao LLM e repete até obter uma resposta. As ferramentas são apenas módulos Jido.Action, então qualquer coisa que você possa definir como uma ação se torna uma ferramenta que o LLM pode chamar.
Jido AI é construído em ReqLLM, meu cliente Elixir LLM, que tive que construir como uma missão paralela porque não existia. Streaming prioritário, multiprovedor, com 11 implementações de provedores cobrindo mais de 665 modelos. Às vezes, a missão secundária se transforma em sua própria aventura. ReqLLM está agora na versão 1.6 com uma comunidade crescente de colaboradores e várias empresas executando-o em produção.
Um ecossistema em crescimento
É aqui que as coisas ficam emocionantes. Jido não é mais apenas um framework. Está se tornando um ecossistema.
Uma comunidade crescente de construtores está usando o BEAM para construir agentes. O impulso é real. As pessoas estão construindo assistentes de codificação, orquestradores de fluxo de trabalho, agentes de pesquisa e sistemas de suporte à produção com base no Jido. E está surgindo um conjunto crescente de pacotes para abordar outras partes da pilha de IA: automação de navegadores, sistemas de memória, sistemas de avaliação, integração de MCP. Tudo construído em torno do núcleo do Jido.
Suporte Ash Framework de primeira classe
ash_jido enviado com 2.0. Se você está desenvolvendo Ash, os agentes agora são cidadãos de primeira classe. Adicione um bloco Jido DSL a qualquer recurso Ash e suas ações CRUD se tornarão ferramentas que podem ser chamadas por IA com políticas de autorização, camadas de dados e segurança de tipo preservadas. E ash_ai está migrando para ReqLLM como seu cliente LLM, o que significa que os dois ecossistemas estão convergindo.
Você pode explorar o ecossistema completo em jido.run/ecosystem.
Obrigado
Esta versão existe por causa da comunidade Elixir. O ecossistema no qual construímos – Phoenix, LiveView, Ash, Req, Telemetry, NimbleOptions – é de classe mundial. Cada uma dessas bibliotecas tornou o Jido melhor por existir.
Para os primeiros testadores e colaboradores que experimentaram o Jido quando ele estava difícil e deram feedback honesto, às vezes desconfortável: obrigado. 2.0 é resultado direto dessa honestidade. Estamos gratos por estar construindo aqui.
Comece a construir
# mix.exs
def deps do
[
{:jido, "~> 2.0"},
{:jido_ai, "~> 2.0"}
]
endFonte: theverge
