AI

在 AutoGen AgentChat 与 Studio 中使用 Bright Data’s Web MCP

了解如何使用 Bright Data 的 Web MCP 为 AutoGen AI 代理接入实时网页数据。内容包含 AgentChat 与 AutoGen Studio 的分步指南。
2 分钟阅读
AutoGen AgentChat × Bright Data 的 MCP 集成

在本文中,你将了解:

  • 什么是 AutoGen,以及它的独特之处。
  • 为何应通过 MCP 为你的代理扩展网页数据检索与交互能力。
  • 如何构建一个与 Bright Data’s Web MCP 集成的 AutoGen AgentChat 代理。
  • 如何在可视化 Web 应用 AutoGen Studio 中测试同一个代理。

开始吧!

什么是 AutoGen?

AutoGen 是微软开源的多代理 AI 系统构建框架。它让多个 AI 代理能够彼此协作沟通,以自动或在人工引导下完成复杂任务。

该库已获得广泛关注,在 GitHub 上拥有 5 万+ 星标,并支持 Python 与 C#(.NET)。

主要特性

AutoGen 提供的核心能力包括:

  • 可定制且具对话能力的代理:将 AI 代理与 LLM、人工输入及各类工具集成。你可通过高级 API,甚至使用 JSON,定义自定义行为与对话模式。
  • 人类参与(Human-in-the-loop)工作流:支持在流程多处引入人工反馈。例如,UserProxyAgent 可作为人类代理,实现监督与干预。
  • 工具集成:代理可配备广泛工具,如网页搜索、代码执行、文件处理等函数,也包括对 MCP 集成的支持。
  • 内置代理类型:AutoGen 提供多种预构建代理类型,包括:
    • UserProxyAgent:代表人类用户,并可执行代码。
    • AssistantAgent:通用型、基于 LLM 的助手,能执行任务并使用工具。
    • CodeExecutorAgent:专注于运行与测试代码。
  • 可观测性与调试:内置用于追踪与调试代理交互和工作流的工具,支持 OpenTelemetry 等标准。
  • AutoGen Studio:一个图形化、低代码的 Web 界面,用于快速原型、测试与部署多代理系统。

为什么要用 Bright Data’s Web MCP 扩展 AutoGen 代理

AutoGen 支持多家 AI 模型提供商。但无论选择 OpenAI、Anthropic、Ollama 或其他提供商,所有 LLM 都有一个共同的根本限制:其知识是静态的。

LLM 是在某个时间点的训练数据上训练的,这意味着其知识会很快过时。更重要的是,它们无法原生与在线网站交互或自行访问数据源。

所幸 AutoGen 支持 MCP。这意味着你可以将代理与 Bright Data’s Web MCP 结合。这将扩展 LLM 的能力,让其能直接从网络检索最新、高质量的数据,以及获得其他能力。

更具体地说,Web MCP 是一个开源服务器,提供60 多种开箱即用的 AI 工具,这些工具由 Bright Data 的网页交互与数据采集基础设施驱动。

即使在免费套餐中,你也可以使用以下两款改变游戏规则的工具:

工具 描述
search_engine 以 JSON 或 Markdown 形式获取来自 Google、Bing 或 Yandex 的搜索结果。
scrape_as_markdown 将任意网页抓取为干净的 Markdown 格式,并可绕过机器人检测与验证码。

除此之外,Web MCP 还解锁数十种面向热门平台的结构化数据采集工具,如 Amazon、LinkedIn、TikTok、Google Play、App Store、Yahoo Finance 等。更多信息请查看其官方 GitHub 页面

简而言之,在 AutoGen 中配置 Web MCP,可帮助你构建能与在线网站交互、获取最新网页数据并产出贴合现实洞见的复杂 AI 代理。

如何在 Python 中使用 AutoGen AgentChat 构建集成 Web MCP 工具的 AI 代理

在本节的引导教程中,你将学习如何使用 AutoGen AgentChat(用于构建多代理应用的高级 API)来构建代理。具体来说,代理将能够使用 Web MCP 服务器暴露的全部工具,从而扩展底层 LLM 的能力。

注意:以下代理将使用 Python 编写,但你也可以轻松适配到 .NET

按照以下步骤,在 Python 中创建一个集成 MCP 的 AutoGen 代理!

先决条件

要跟随本教程,请确保你已具备:

你还需要一个带 API Key 的 Bright Data 账号,但别担心,下面会引导你完成。若你对MCP 的工作原理以及Web MCP 暴露的工具有基本了解,也会有所帮助。

步骤一:AutoGen 项目设置

打开终端,为 AutoGen AI 项目创建新目录:

mkdir autogen-mcp-agent

autogen-mcp-agent/ 文件夹将包含用于 MCP 集成代理的 Python 代码。

接着进入项目目录,并在其中初始化虚拟环境

cd autogen-mcp-agent
python -m venv .venv

激活虚拟环境。Linux 或 macOS 执行:

source .venv/bin/activate

Windows 则执行:

.venv/Scripts/activate

在项目中添加一个名为 agent.py 的新文件,此时结构如下:

autogen-mcp-agent/
├── .venv/
└── agent.py

agent.py 将作为你的主 Python 文件,其中包含 AI 代理逻辑。

在你喜欢的 Python IDE 中打开该项目,例如装有 Python 扩展的 Visual Studio Code,或 PyCharm 社区版

在已激活虚拟环境的情况下,安装所需依赖:

pip install autogen-agentchat "autogen-ext[openai]" "autogen-ext[mcp]" python-dotenv

你刚安装的库包括:

注意:如果你不打算使用 OpenAI 模型,请按文档安装你所选 LLM 提供商的对应包

完成!你的 Python 环境已就绪,可用于使用 AutoGen 开发 AI 代理。

步骤二:配置环境变量读取

你的代理需要连接 OpenAI、Bright Data 等第三方服务。要完成鉴权,你需要提供各自的 API Key。与其将密钥硬编码到 agent.py(不安全的做法),不如配置脚本从环境变量读取。

这也是我们安装 python-dotenv 的原因。在 agent.py 中导入该库并调用 load_dotenv() 加载环境变量:

from dotenv import load_dotenv

load_dotenv()

现在,你的助手可以从本地 .env 文件读取变量。

因此,在项目根目录添加 .env 文件:

autogen-mcp-agent/
├── .venv/
├── .env         # <------
└── agent.py

你可以在代码中这样访问环境变量:

import os

os.getenv("ENV_NAME")

很好!你的脚本现已通过环境变量加载第三方集成的密钥。

步骤三:开始使用 Bright Data’s Web MCP

在将代理连接到 Bright Data’s Web MCP 之前,先确保你的机器能运行该服务器。这很重要,因为接下来你将指示 AutoGen 在本地启动 Web MCP,然后代理再连接至它。

如果你还没有 Bright Data 账号,请创建一个。已有账号则直接登录。想要快速设置,可查看你账号中的“MCP”版块:

Bright Data 账号中的 “MCP” 版块

需要更多指引,请按照下述步骤操作。

生成 Bright Data API Key,并安全保存。本文假设该 API Key 具备 Admin 权限,以简化 Web MCP 集成。

通过 npm 全局安装 Web MCP(@brightdata/mcp 包):

npm install -g @brightdata/mcp

然后启动本地 MCP 服务器以验证是否正常工作:

$Env:API_TOKEN="<YOUR_BRIGHT_DATA_API>"; npx -y @brightdata/mcp

或在 Linux/macOS 上等效命令:

API_TOKEN="<YOUR_BRIGHT_DATA_API>" npx -y @brightdata/mcp

<YOUR_BRIGHT_DATA_API> 替换为你的实际 Bright Data API Token。上述命令会设置必需的 API_TOKEN 环境变量并在本地启动 Web MCP。

若成功,你会看到类似如下输出:

Bright Data 的 Web MCP 启动日志

首次启动时,Web MCP 会在你的 Bright Data 账号中自动创建两个默认 Zone:

Web MCP 依赖这两款 Bright Data 产品来驱动其 60+ 工具。

要确认 Zone 已创建,请登录 Bright Data 控制台并进入“Proxies & Scraping Infrastructure”页面。你应能在表格中看到这两个 Zone:

Web MCP 启动时创建的 mcp_unlocker 与 mcp_browser Zone

注意:若你的 API Token 没有 Admin 权限,则不会自动创建这些 Zone。这种情况下,你需在控制台手动创建并通过环境变量在命令中指定它们的名称(详见 GitHub 页面)。

请记住,默认情况下 MCP 服务器仅暴露 search_enginescrape_as_markdown(及其批量版本)。这些工具包含在Web MCP 免费套餐内,因此可免费使用。

如需解锁高级工具(如浏览器自动化与结构化数据源),请启用 Pro 模式。启动 Web MCP 前设置 PRO_MODE="true" 环境变量:

$Env:API_TOKEN="<YOUR_BRIGHT_DATA_API>"; $Env:PRO_MODE="true"; npx -y @brightdata/mcp

或在 Linux/macOS 上:

API_TOKEN="<YOUR_BRIGHT_DATA_API>" PRO_MODE="true" npx -y @brightdata/mcp

Pro 模式将解锁全部 60+ 工具,但不包含在免费套餐内,会产生额外费用

很好!你已验证 Web MCP 服务器可以在本机运行。请停止 MCP 进程,下一步将配置你的 AutoGen AgentChat 代理来启动并连接它。

步骤四:配置 Web MCP 连接

既然你的机器能运行 Web MCP,现在需要在脚本中指示如何连接到该服务器。

首先,将之前获取到的 Bright Data API Key 添加到 .env 文件:

BRIGHT_DATA_API_KEY="<YOUR_BRIGHT_DATA_API_KEY>"

<YOUR_BRIGHT_DATA_API_KEY> 替换为实际的 API Key。

agent.py 中这样读取该值:

BRIGHT_DATA_API_KEY = os.getenv("BRIGHT_DATA_API_KEY")

接着,定义一个 async 函数,并配置连接到本地 Web MCP 进程:

from autogen_ext.tools.mcp import (
    StdioServerParams,
    mcp_server_tools
)

async def main():
    # Configs to connect to the Bright Data Web MCP
    bright_data_mcp_server = StdioServerParams(
        command="npx",
        args=[
            "-y",
            "@brightdata/mcp"
        ],
        env={
            "API_TOKEN": BRIGHT_DATA_API_KEY,
            "PRO_MODE": "true" # Optional
        }
    )

    # Load the tools exposed by the Bright Data Web MCP server
    bright_data_tools = await mcp_server_tools(bright_data_mcp_server)

    # Agent definition...

该配置与上一步的 npx 命令等效,并使用环境变量提供 API Token。注意 PRO_MODE 可选,API_TOKEN 必填。

简而言之,agent.py 将启动一个 Web MCP 进程,并通过 STDIO 连接到它。返回结果是一个工具数组,你可以将其传给 AutoGen 代理使用。

通过列出可用工具验证连接是否成功:

for bright_data_tool in bright_data_tools:

print(f"TOOL: {bright_data_tool.name} - {bright_data_tool.description}n")

若在未启用 Pro 模式下运行脚本,你会看到类似如下输出:

禁用 Pro 模式时的工具列表输出

若启用 Pro 模式,则会看到全部 60+ 工具:

启用 Pro 模式时的工具列表输出

搞定!该输出说明你的 Web MCP 集成工作正常。

步骤五:定义你的 AutoGen 代理

AutoGen AgentChat 提供了一组预设代理,各自具备不同的回复风格。本例中,通用型的 AssistantAgent 最为合适。

在定义代理前,你需要先配置一个 LLM 集成——因为没有底层 AI 模型,代理无法工作。

先将 OpenAI API Key 添加到 .env 文件:

OPENAI_API_KEY="<YOUR_OPENAI_API_KEY>"

然后在代码中这样设置 OpenAI 集成:

from autogen_ext.models.openai import OpenAIChatCompletionClient

model_client = OpenAIChatCompletionClient(
    model="gpt-4o-mini",
)

OpenAIChatCompletionClient 会自动读取 OPENAI_API_KEY 环境变量,因此无需在代码中手动加载。该变量用于对 OpenAI 的底层 API 调用进行鉴权。

注意,上述示例将你的代理连接到 OpenAI 的 GPT-4o 模型。若你计划使用其他模型或 LLM 提供商,请查阅其文档并作相应调整。

注意:在撰文时,autogen-ext[openai] 尚不支持 GPT-5 模型。

现在,将模型与先前加载的 MCP 工具结合,创建助手代理:

from autogen_agentchat.agents import AssistantAgent

agent = AssistantAgent(
    name="web_agent",
    model_client=model_client,
    tools=bright_data_tools,
)

太棒了!你刚刚构建了首个由 OpenAI 提供模型支持、并集成 Bright Data MCP 工具的 AutoGen AgentChat 代理。

步骤六:创建你的 AutoGen 团队

你可以直接将任务传给代理并运行,但体验并非最佳,因为代理在执行单次工具调用后就会停止。你可以通过 max_tool_iterations 调整该行为,但通常更好的做法是定义一个团队(team)。

在 AutoGen 中,团队是多个代理协同实现目标的集合。在你的场景中,团队只包含一个代理(这是完全可行的)。现在就定义团队,未来若要扩展并加入更多代理搭建多代理工作流也会更容易。

常用的设置是 RoundRobinGroupChat 团队,代理会轮流发言。同时你还需要一个结束条件来决定循环何时停止。此处我们使用 TextMentionTermination,当代理回复中出现“TERMINATE”一词时结束流程:

from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat

# Define a termination condition for the loop
text_termination = TextMentionTermination("TERMINATE")

# Create a team with the only agent
team = RoundRobinGroupChat([agent], termination_condition=text_termination)

需要说明的是,这是大多数 AutoGen 示例中的标准设置。

即使只有一个代理,团队也会反复调用该代理,直到任务完成。这对需要多次工具调用、经历多轮交互才能完成的复杂任务尤其有用。

很好!接下来只需运行团队并获取结果。

步骤七:执行任务

要运行你的 AutoGen AgentChat 应用,只需向团队传入一个任务。为测试增强后的网页数据检索能力,试试如下提示:

task = """
Retrieve information from the following app on the App Store:
"https://apps.apple.com/us/app/brave-browser-search-engine/id1052879175"

Based on user reviews, pricing, and all available information, tell me whether you think this app is worth installing and can be trusted.
"""

显然,仅靠 OpenAI 模型无法完成该任务,因为它们不能直接抓取 App Store 的全部数据。这正是 Bright Data 工具派上用场的地方。通过该集成,你的代理可以抓取应用页面、分析评论与价格信息,然后再由 LLM 将这些信息整理成清晰易读的报告。

这是一个在安装前评估应用的实用示例,可帮助发现潜在问题或用户痛点。毕竟,缺乏必要评估就安装应用在安全上存在风险。

现在,在终端中直接流式输出结果:

from autogen_agentchat.ui import Console

await Console(team.run_stream(task=task))

很好!此时团队将启动,任务会交付给你配置的代理。代理可能会进行多次迭代以实现目标。预期结果是代理使用来自 Web MCP 的 Bright Data 工具抓取 App Store 数据,然后由 LLM 将其整理成一份该应用是否值得安装、是否可信的评估。

最后,别忘了在脚本末尾关闭与所选模型的连接:

await model_client.close()

步骤八:整合全部代码

你的 agent.py 文件应如下:

# pip install autogen-agentchat "autogen-ext[openai]" "autogen-ext[mcp]" python-dotenv
import asyncio
from dotenv import load_dotenv
import os
from autogen_ext.tools.mcp import (
    StdioServerParams,
    mcp_server_tools
)
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console

# Load the environment variables from the .env file
load_dotenv()

# Load your Bright Data API key from the envs
BRIGHT_DATA_API_KEY = os.getenv("BRIGHT_DATA_API_KEY")

async def main():
    # Configs to connect to the Bright Data Web MCP
    bright_data_mcp_server = StdioServerParams(
        command="npx",
        args=[
            "-y",
            "@brightdata/mcp"
        ],
        env={
            "API_TOKEN": BRIGHT_DATA_API_KEY,
            "PRO_MODE": "true" # Optional
        }
    )

    # Load the tools exposed by the Bright Data Web MCP server
    bright_data_tools = await mcp_server_tools(bright_data_mcp_server)

    # LLM integration
    model_client = OpenAIChatCompletionClient(
        model="gpt-4o-mini",
    )

    # Define your AI assistant agent powered by the Web MCP tools
    agent = AssistantAgent(
        name="web_agent",
        model_client=model_client,
        tools=bright_data_tools,
    )

    # Define a termination condition for the loop
    text_termination = TextMentionTermination("TERMINATE")

    # Create a team with the only agent
    team = RoundRobinGroupChat([agent], termination_condition=text_termination)

    # The task to be executed by the team
    task = """
    Retrieve information from the following app on the App Store:
    "https://apps.apple.com/us/app/brave-browser-search-engine/id1052879175"

    Based on user reviews, pricing, and all available information, tell me whether you think this app is worth installing and can be trusted.
    """

    # Stream the team's response to the terminal
    await Console(team.run_stream(task=task))

    # Close the AI connection
    await model_client.close()

if __name__ == "__main__":
    asyncio.run(main())

哇!不到 70 行代码,你就构建了一个用于评估 App Store 应用是否值得安装的单代理团队。

运行代理:

python agent.py

你应能在终端看到如下内容:

注意代理执行的工具调用

可以看到,代理正确识别出 web_data_apple_app_store 是完成此任务的合适工具。该工具属于 Pro 工具,用于“快速获取结构化的 Apple App Store 数据”。因此它是一个很好的选择。如果未启用 Pro 模式,代理则会改用 scrape_as_markdown 工具。

工具执行可能需要一些时间。结果会是从 App Store 页面提取的结构化数据(JSON 格式),如预期所示:

注意工具返回的 JSON 结果

随后,LLM 会对该结构化输出进行分析处理,并生成一份 Markdown 报告:

AI 模型生成的报告

注意报告开头提供的详细信息,与目标 App Store 页面上显示的内容完全一致:

目标页面

任务完成!你的代理现已能够从网络获取数据,并对其进行处理以完成有意义的任务。

请记住,这只是一个简单示例。借助 AutoGen AgentChat 中可用的丰富 Bright Data Web MCP 工具,你可以设计面向各类真实场景的更高级代理。

就是这样!你已看到如何在 Python 中将 Bright Data’s Web MCP 集成进 AutoGen AgentChat 代理的强大能力。

在 Agent Studio 中可视化测试集成 Web MCP 的代理

AutoGen 还提供了 Studio,一种低代码、基于浏览器的工具,可视化创建与试验代理。你可以用它以更简化的方式测试已集成 MCP 的代理。来看一下!

先决条件

本教程的可选部分只需安装 AutoGen Studio。在已激活的虚拟环境和项目目录中执行:

pip install -U autogenstudio

AutoGen Studio 会自动从 .env 读取 OPENAI_API_KEY,因此无需在工具内手动配置。

步骤一:获取团队 JSON 配置文件

在 AutoGen 中,任何团队组件都可以用 JSON 表示。AutoGen Studio 构建于 AgentChat 之上,因此你可以将 AgentChat 组件导出为 JSON,再在 AutoGen Studio 中加载。我们就这么做!

先将你之前创建的团队定义导出为本地 JSON 文件:

config = team.dump_component()
with open("bd_mcp_team.json", "w", encoding="utf-8") as f:
    f.write(config.model_dump_json())

这会在你的项目文件夹生成一个 bd_mcp_team.json 文件,请打开它。

该文件包含你的代理的 JSON 表示,其中包括连接 Bright Data Web MCP 工具所需的一切信息。

步骤二:在 AutoGen Studio 中加载该 JSON

本地启动 AutoGen Studio:

autogenstudio ui --port 8080

应用会在浏览器中通过 http://127.0.0.1:8080 访问。打开后你会看到如下 Web 应用:

AutoGen Studio 的默认团队

默认包含一个名为“RoundRobin Team”的团队。要将其配置为你的 MCP 增强代理,切换“Visual Builder”,进入“View JSON”模式:

启用“View JSON”模式

在 JSON 编辑器中,粘贴 bd_mcp_team.json 文件内容,并点击“Save Changes”按钮:

点击“Save Changes”按钮

此时,你更新后的“RoundRobin Team”应如下所示:

更新后的团队

注意,代理名称已变为 web_agent,与代码中的定义一致。现在你可以直接在 AutoGen Studio 中测试集成了 Web MCP 的代理。

步骤三:可视化测试代理

点击右上角“Run”按钮。用于测试团队的聊天区域会出现:

注意右侧的聊天区域

粘贴之前相同的任务提示并执行:

执行与之前相同的任务

如前所述,代理会选择并执行 web_data_apple_app_store 工具。最终输出如下:

代理在 AutoGen Studio 中生成的最终可视化结果

左侧倒数第二条消息包含代理生成的回复。这一次,你也可以看到代理通过自动发送“TERMINATE”消息来终止流程。右侧是执行过程的可视化表示,帮助你逐步理解发生了什么。

即使代理已终止,其上下文仍与团队共享。这意味着你可以像在 ChatGPT 或其他聊天式 AI 界面中那样,继续传入新的任务无缝对话。

这也展示了在 AutoGen Studio 中测试代理的一个重要优势:你可以可视化跟踪代理行为、检查输出,并在多次交互中保持上下文。非常棒!

结语

在本文中,你学习了如何使用 AutoGen AgentChat 构建 AI 代理,并通过 Bright Data’s Web MCP(提供免费套餐!)为其“增压”。你还在 AutoGen Studio 中以聊天式体验对代理进行了可视化测试。

通过该集成,你的代理将获得网页搜索、结构化数据提取、网页数据源访问、网页交互等更多能力。若要构建更高级的 AI 代理,请探索 Bright Data 的 AI 基础设施中更广泛的产品与服务。

立即注册免费的 Bright Data 账号,开始尝试面向 AI 的网页数据工具吧!

支持支付宝等多种支付方式

Antonello Zanini

技术写作

5.5 years experience

Antonello是一名软件工程师,但他更喜欢称自己为技术传教士。通过写作传播知识是他的使命。

Expertise
Web 开发 网页抓取 AI 集成