开发框架

BeamAI · Erlang/OTP 的 AI Agent 框架

BeamAI 是框架的核心库,提供构建 Agent 的三样基础:ChatClient、统一的 LLM 客户端和 SimpleAgent。设计借鉴 Semantic Kernel:ChatClient 本身无状态,不记录消息,会话历史交给 Memory Filter 按 conversation_id 管理。

Erlang/OTP 的轻量进程与监督树,让 Agent 适合长时间运行、高并发的服务端场景。工具库、RAG、MCP、A2A、AG-UI 等扩展放在 BeamAI Extra。

ChatClient · Filter · LLM 客户端 · SimpleAgent

Erlang:创建 LLM 配置并对话
LLM = beamai_chat_model:create(zhipu, #{
    model => <<"glm-4.7">>,
    api_key => list_to_binary(os:getenv("ZHIPU_API_KEY"))
}),

{ok, Response} = beamai_chat_model:chat(LLM, [
    {role, user, content, <<"你好!"/utf8>>}
]).

功能

能做什么

  • 统一 LLM 客户端

    OpenAI、Anthropic、DeepSeek、智谱、DashScope、Ollama 六家统一的同步与流式接口;支持多模态输入、Anthropic 缓存 / Web Search / 引用、速率限制头、按 Retry-After 重试,错误结构统一。

  • ChatClient 与工具

    语义化的工具注册与调用:用一个 map 声明名称、说明、参数与处理函数,ChatClient 负责交给模型、执行调用、回填结果。

  • 洋葱式 Filter

    around 模型的拦截链:在模型调用与工具调用前后插入日志、校验、改写与安全检查,彼此独立可组合。

  • 会话记忆

    对话历史与 ChatClient 解耦:每次只传最新一条消息,历史由 Memory Filter 按 conversation_id 管理;存储可插拔(ETS、DETS 持久化或自定义 behaviour),滑动窗口由 Agent 侧提供。

  • SimpleAgent

    以 ReAct 为主的 Agent:多轮对话、回调钩子、中断与恢复,适合需要人工确认的工具调用。

  • 结构化输出

    Output Parser 把模型输出解析成 JSON、XML、CSV,解析失败自动重试。

规格

技术规格

运行环境Erlang/OTP 27+,rebar3 构建
组成beamai_core(ChatClient、Filter、Tool)、beamai_llm(LLM 客户端)、beamai_agent(SimpleAgent)
扩展工具、RAG、MCP、A2A、AG-UI 见 BeamAI Extra
许可Apache License 2.0

常见问题

你可能想问

BeamAI 和 BeamAI Extra 是什么关系?

BeamAI 是核心库,提供 ChatClient、LLM 客户端与 SimpleAgent;BeamAI Extra 在核心库之上提供工具库、RAG、MCP、A2A 与 AG-UI 等扩展,按需引入。

支持哪些模型厂商?

内置 OpenAI、Anthropic、DeepSeek、智谱、DashScope(通义千问)与 Ollama,同步和流式接口一致。兼容这些协议的其他服务可以通过 base_url 接入。

会话历史存在哪里?

由 Memory Filter 按 conversation_id 管理,存储后端可插拔:ETS(内存)、DETS(持久化),或实现 behaviour 接入你自己的存储。

许可协议是什么?

Apache License 2.0,可用于商业项目。

开源

Apache 2.0 协议开源

引擎、测试、基准与设计文档都在仓库里,欢迎读、改、提 issue。

相关框架

BeamAI Extra · BeamAI 的工具、RAG 与协议扩展

基于 BeamAI 核心库的扩展:文件 / Shell / 人机交互工具与中间件、RAG、MCP 客户端与服务端、A2A 协议、AG-UI 事件流服务端。