ERNIE-SDK
百度文心大模型 Agent 开发框架,10行代码构建智能体应用,支持 Function Calling、多工具编排、RAG
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
百度文心大模型 Agent 开发框架,10行代码构建智能体应用,支持 Function Calling、多工具编排、RAG
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,让 AI 帮你完成一个完整的工作流程——比如自动搜索资料、筛选信息、撰写报告——全都不需要手动干预?大多数 Agent 框架入门门槛很高,代码量动辄上千行,配置复杂到让人想放弃。但 ERNIE SDK 告诉你:10 行代码,就能跑起来一个可用的 AI 智能体。

图1:ERNIE SDK 项目 Logo,来自 PaddlePaddle 官方仓库
2023年,随着 ChatGPT 带起的 Agent 风潮,各家大厂纷纷推出自己的 LLM 开发框架。百度作为国内最早布局大模型的企业之一,在 ERNIE 4.0 全面开放的背景下,推出了 ERNIE SDK。
这个项目的独特之处在于它不是一个简单的 API 封装库,而是一个完整的 Agent 编排框架。ERNIE Bot Agent 基于文心大模型的 Function Calling 能力,实现了多工具编排和自动调度——开发者不需要自己写 ReAct 循环,不需要手写工具注册逻辑,只需几行代码,大模型就能自动决定调用哪些工具、如何组合工具来完成复杂任务。
ERNIE SDK 仓库实际上是一个双组件单体仓库(monorepo):
两个组件相互独立,又存在依赖关系——Agent 层的底层就是 Bot 层。这种设计让项目既有深度(Agent 编排能力),又有广度(基础 LLM 调用能力)。
ERNIE SDK 的代码架构可以用「积木化」来形容。整个项目分为两大子包:
ERNIE Bot 是整个项目的底层能力层,提供了对百度文心大模型的统一封装。代码结构清晰:
resources/chat_completion.py:对话补全,封装了 ChatCompletion.create() 接口resources/embedding.py:文本向量化,Embedding.create() 接口resources/image.py:文生图,Image.create() 接口backends/aistudio.py:AI Studio 后端适配backends/qianfan.py:千帆平台后端适配backends/bce.py:百度云 BCE 后端适配auth.py:认证体系,支持 AK/SK 和 Access Token 两种方式后端抽象层的设计非常标准——每新增一个百度系平台,只需实现 BaseBackend 接口即可。这种方式与 LangChain 的 provider 扩展模式如出一辙,但更贴近百度自身的生态。
这是项目的精华所在。核心模块包括:
agents/function_agent.py:FunctionAgent,基于 Function Calling 的智能体实现,默认 5 步推理上限agents/function_agent_with_retrieval.py:带检索增强的 FunctionAgentagents/mixins/gradio_mixin.py:Gradio 集成 mixin,给 Agent 一键附加 Web UIchat_models/erniebot.py:Agent 层的大模型客户端tools/remote_toolkit.py:远程工具包,解析 OpenAPI YAML 动态生成工具,支持从 AI Studio 工具中心加载 30+ 预置工具memory/messages.py:消息模型(AIMessage、HumanMessage、FunctionMessage)memory/whole_memory.py:全量记忆管理memory/sliding_window_memory.py:滑动窗口记忆(节省 token)retrieval/baizhong_search.py:百中知识库检索tools/baizhong_tool.py、image_generation_tool.py、calculator_tool.py、current_time_tool.py:内置工具集extensions/langchain/:LangChain 兼容层(chat_models、embeddings、llms)最值得关注的是 RemoteToolkit 的实现。它能根据 OpenAPI YAML 规范动态生成工具类,这意味着 AI Studio 工具中心的任何新增 API,都能通过一行代码无缝接入 Agent。这种设计避免了硬编码工具的维护负担。
ERNIE SDK 不仅仅是玩具级别的演示项目。在 applications/ 目录下,藏着几个相当实用的完整应用:
这是一个多 Agent 协作系统的典型案例。整个流程由 6 个 Agent 组成:
这套系统的设计思路非常接近 AutoGPT 的规划-执行-反思模式,但针对中文语境做了优化,并通过 Gradio 提供了完整的 Web 界面。
erniebot/examples/quick_start/gradio_demo.py 提供了一个完整的多 Tab Gradio 界面,集成了:
这个 demo 的 RAG 实现值得细看:使用 FAISS 构建本地向量索引,通过 ernie-text-embedding 模型将文本转为向量,检索时用余弦相似度找最相关的片段,最后将检索结果喂给 LLM 生成回答。整个流程约 200 行代码,是学习 RAG 入门的好材料。
eb-agent-qa-bot 提供了一个开箱即用的问答机器人,支持向量数据库初始化和问答功能。
| 层次 | 技术选型 |
|---|---|
| 编程语言 | Python 3.8+ |
| 异步框架 | aiohttp(erniebot)、Python asyncio(agent) |
| 数据验证 | Pydantic v2 |
| Agent 编排 | 原生 Function Calling + 自研框架 |
| 知识库 | LangChain、LlamaIndex、FAISS、百中知识库 |
| Web UI | Gradio |
| LLM 后端 | 文心 4.0/3.5/ turbo、AI Studio、千帆平台 |
| 向量模型 | ernie-text-embedding |
| 文生图模型 | ernie-vilg-v2 |
项目遵循 Apache-2.0 许可证,代码质量整体较高——有完整的类型注解、详细的 docstring、Codecov 覆盖率追踪。不过由于项目文档主要面向已熟悉百度 AI 生态的开发者,对外部用户的入门引导还有提升空间。
ERNIE SDK 最大的亮点是极低的上手门槛。文档中给出的核心示例仅需约 30 行代码(包括 asyncio 框架):
import asyncio
from erniebot_agent.agents import FunctionAgent
from erniebot_agent.chat_models import ERNIEBot
from erniebot_agent.tools import RemoteToolkit
async def main():
llm = ERNIEBot(model="ernie-3.5") # 初始化大语言模型
tts_tool = RemoteToolkit.from_aistudio("texttospeech").get_tools()
agent = FunctionAgent(llm=llm, tools=tts_tool)
result = await agent.run("把上一轮的自我介绍转成语音")
print(result.text)
asyncio.run(main())
安装只需两条命令:
pip install ./erniebot # 先装底层
pip install ./erniebot-agent # 再装 Agent 层
# 或一键
pip install erniebot-agent # 自动包含erniebot依赖
Gradio UI 通过 pip install 'erniebot-agent[gradio]' 可选安装。
但有两点需要特别注意:
ERNIE SDK 的局限也比较明显:
此外,作为企业主导的开源项目,ERNIE SDK 的社区活跃度与 LangChain、AutoGen 等国际热门框架相比还有差距。但对于已经在使用百度 AI 生态的团队来说,这无疑是最无缝的 Agent 开发方案。
ERNIE SDK 的出现,反映了一个重要趋势:大模型战场正从「模型能力」转向「应用生态」。百度通过开源 Agent 框架,将开发者锁定在文心大模型生态中——你用 ERNIE SDK 越深,就越离不开文心 API。这是一种教科书级的平台战略。
从技术角度看,项目对 Function Calling 的原生支持、RemoteToolkit 的动态工具加载机制,以及多框架(LangChain/LlamaIndex)兼容性设计,都代表了 2024 年 Agent 框架的主流方向。对于希望了解 Agent 内部实现细节的开发者,研究 ERNIE SDK 的源码是很好的起点——代码量适中(erniebot-agent 约 73 个文件),架构清晰,没有太多历史包袱。
如果你是 AI 应用开发者,正在寻找快速构建智能体应用的方案,ERNIE SDK 的「10 行代码」哲学值得一试。如果你需要的是更通用、更不受平台限制的方案,可以继续关注 LangChain、AutoGen 或 DSPy。但有一点可以确定:大模型应用开发的门槛,正在以肉眼可见的速度下降。

图2:PaddlePaddle 官方标识