本项目展示了如何运用 SmolAgents 库构建一个 AI 助手,该助手可进行网络搜索,抓取并爬取网站。这一功能通过集成 Brave Search 和 Crawl4ai 模型上下文协议(MCP)服务器得以实现。
在运行此项目前,请确保已安装以下依赖项:
smolagents
python-dotenv
mcp
@modelcontextprotocol/server-brave-search
(通过 npm/npx 全局安装)litellm
您可以使用 pip 安装 Python 包:
pip install -r requirements.txt
同时,请确保已安装 Node.js、npm/npx 以及 uv,以便运行 MCP 服务器。
在项目根目录下创建一个 .env
文件,并添加以下变量:
BRAVE_API_KEY=your_brave_api_key
OPENAI_API_KEY=your_openai_api_key
请将 your_brave_api_key
和 your_openai_api_key
替换为您实际的 API 密钥。
smolagent_with_mcp.py
)。python smolagent_with_mcp.py
exit
或 quit
可终止会话。代码将代理的初始化和主要交互循环封装在 Python 类 (SmolAgentWithMCP
) 中,这种面向对象的方法实现了模块化设计,便于扩展代理功能,例如集成更多的 MCP 服务器及其工具。
SmolAgentWithMCP
类中,方便扩展功能。使用以下命令安装 Python 依赖:
pip install -r requirements.txt
同时,要确保系统已安装 Node.js、npm/npx 以及 uv,用于运行 MCP 服务器。
在项目根目录创建 .env
文件,并添加 API 密钥:
BRAVE_API_KEY=your_brave_api_key
OPENAI_API_KEY=your_openai_api_key
以下是一个完整的示例脚本 smolagent_with_mcp.py
:
from smolagents import SmolAgentWithMCP
from modelcontextprotocol.server_brave_search import StdioServerParameters
def main():
# 定义 MCP 服务器参数
brave_server_params = StdioServerParameters()
crawl4ai_server_params = StdioServerParameters()
# 初始化代理并运行
agent = SmolAgentWithMCP([brave_server_params, crawl4ai_server_params])
agent.run()
if __name__ == "__main__":
main()
smolagent_with_mcp.py
文件的结构支持以模块化方式轻松添加更多的 MCP 服务器和工具。要添加新的 MCP 服务器,可按以下步骤操作:
StdioServerParameters
,需指定运行服务器的命令、参数以及必要的环境变量(类似于 brave_server_params
和 crawl4ai_server_params
的定义方式)。main
函数中的 server_list
中。BraveSearchAgentApp
类会自动初始化新的服务器,并将其工具纳入代理的能力范围。示例:
# 定义新服务器的参数(用实际命令和参数替换)
new_server_params = StdioServerParameters(
command="your_server_command",
args=["arg1", "arg2"],
env={"YOUR_API_KEY": os.getenv("YOUR_API_KEY")},
)
def main():
# 定义 MCP 服务器参数列表
server_list = [
brave_server_params,
crawl4ai_server_params,
new_server_params
]
# 初始化代理并运行
agent = SmolAgentWithMCP(server_list)
agent.run()
if __name__ == "__main__":
main()
npx
已安装且可在系统 PATH 中使用,因为运行 Brave Search MCP 服务器需要它。ToolCallingAgent
会以结构化格式(如 JSON)输出工具调用,这些调用随后由环境执行(在本例中为主脚本中的主要循环使用 MCPClient
执行)。要添加新的 MCP 服务器,可参考以下步骤:
StdioServerParameters
,指定运行命令、参数和环境变量。main
函数的 server_list
中。该项目采用 MIT 许可证,您可自由使用、修改和分发代码。