开发框架
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
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,可用于商业项目。
相关框架
BeamAI Extra · BeamAI 的工具、RAG 与协议扩展
基于 BeamAI 核心库的扩展:文件 / Shell / 人机交互工具与中间件、RAG、MCP 客户端与服务端、A2A 协议、AG-UI 事件流服务端。