本文作者:阿里云无影技术专家 李岳冰
📌 TL;DR - 1 分钟速读版
问题: 想了解 AI Agent 开发的最新动态,但手动浏览技术网站太慢?
方案: AgentBay 云端并发 + LlamaIndex 智能分析
效果:
- ⚡ 3 分钟采集 134 篇高质量文章(手动需要 2+ 小时)
- 🎯 AI 自动推荐 Top 10 最有价值文章
- 💡 智能问答系统,自然语言查询知识
技术亮点:
- 🌐 AgentBay: 云端浏览器,5 个 Session × 5 个 Tab = 25倍并发
- 🧠 LlamaIndex: RAG 知识库 + LLM 智能分析
- 🔧 工具集成: AgentBay 封装为 LlamaIndex 工具,Agent 可自主调用
一句话总结: AgentBay 作为 LlamaIndex 工具,用云端并发采集数据,用 AI 提炼价值。
🎬 实际运行效果预览
在深入技术细节之前,先看看这个方案的实际效果视频。
🎯 智能推荐 - Top 10 文章
- LLM 应用评估综合指南(多轮对话系统、RAG、AI Agent) - InfoQ
- 评分: 14.35
- 推荐理由: 深入探讨LLM应用评估方法,涵盖多轮对话、RAG、智能体的关键评估维度
- 企业将 Agentic AI 工作负载投入生产的 3 条可行之路 - InfoQ
- 评分: 10.60
- 推荐理由: 探讨AI投资回报率、数据基础、安全治理等关键要素
- LangChain搭建Agent | 使用initialize_agent - CSDN
- 评分: 10.30
- 推荐理由: 详细讲解LangChain中Agent的构建方法和实践
- Agent在智能客服的实践(AI agent、记忆、快捷回复) - CSDN
- 评分: 10.30
- 推荐理由: 智能客服场景下的Agent实际应用案例
- AI 智能体未来之争:GPTs vs Skills - InfoQ
- 评分: 10.10
- 推荐理由: 对比GPTs和Skills的不同架构和设计理念
💬 智能问答示例
问题 1: "Qwen相关"
回答: Qwen是一个推理模型,具有强大的语言理解和推理能力。Qwen3-Max-Thinking是Qwen3-Max-Preview的增强版本,能在高水平数学推理竞赛中实现100%的正确率。该模型支持多种任务,包括编程、常识推理、对话生成等。Qwen3-Max-Preview在多项测试中表现出色,速度快且在推理任务上优于其他SOTA模型。此外,Qwen3-Max-Preview已成为开源编程工具AnyCoder中的默认选项,展示了其在不同领域的广泛应用和受欢迎程度。
参考来源(共 2 篇文章):
- 【Agent】Qwen-Agent框架代码解读和MCP应用 (CSDN, 相关度: 0.558)
- Qwen"半成品"推理模型刷下 AIME 满分,俘获大批国外开发者 (InfoQ, 相关度: 0.510)
问题 2: "Agent相关"
回答: Agent是指智能体,通常用于指代AI Agent,是一种具有智能和自主能力的软件程序或机器人。在智能客服领域,Agent可以用于实现智能客服服务,包括记忆用户信息、提供快捷回复等功能。Agent的开发流程包括需求分析、设计、实现和测试等步骤。在安装Agent时,需要配置相关的服务器和部署Agent,通常会涉及到配置文件和安装步骤。在Agent的使用过程中,可以通过一些高亮数组来提高可视性,例如在Zabbix监控系统中,Agent的下载安装步骤可以帮助用户更好地实现监控和管理任务。
参考来源(共 3 篇文章):
- Agent下载安装步骤 (CSDN, 相关度: 0.555)
- Agent 学习手记(三):Agent开发流程 (CSDN, 相关度: 0.510)
- 【LLM】Agent在智能客服的实践(AI agent、记忆、快捷回复 | ReAct) (CSDN, 相关度: 0.487)
看到这些实际效果后,你是否好奇这是如何实现的?让我们开始技术之旅 ↓
一、从需求到技术选型: 为什么选择这个技术组合?
1.1 起点: 一个简单的需求
初始需求: 我想了解"AI Agent 开发"这个主题的最新技术动态。
最直接的做法:
- 打开 CSDN、InfoQ、OSChina 等技术网站
- 搜索相关关键词
- 逐个浏览文章,筛选有价值的内容
问题: 手动操作效率低,重复劳动多。每次想了解一个新技术领域,都要重复这个过程,花费大量时间。
第一个想法: 能不能让程序自动完成这个过程?
1.2 需求演进与技术选型
这个案例是专门为展示 AgentBay SDK + LlamaIndex 的组合能力而设计的。让我们看看需求是如何一步步驱动技术选型的:
🎯 需求 1: 自动浏览网页,采集文章
技术挑战:
- 需要模拟浏览器行为(搜索、点击、滚动)
- 需要解析动态加载的网页内容
- 需要处理不同网站的 HTML 结构
技术选型: AgentBay Browser Use 能力
为什么选择 AgentBay?
传统方案(本地 Playwright)的问题:
- 需要在本地安装浏览器驱动
- 需要处理各种环境配置问题
- 资源受限于本地机器
AgentBay 的优势:
- ✅ 云端浏览器: 无需本地配置,开箱即用
- ✅ CDP 兼容: 与 Playwright 无缝集成
- ✅ 稳定可靠: 云端资源,不受本地环境影响
代码示例:
from agentbay import AgentBay from agentbay.session_params import CreateSessionParams from agentbay.browser import BrowserOption from playwright.async_api import async_playwright # 创建云端浏览器环境 agent_bay = AgentBay() params = CreateSessionParams(image_id="browser_latest") session = agent_bay.create(params).session # 初始化浏览器 await session.browser.initialize_async(BrowserOption()) endpoint = session.browser.get_endpoint_url() # 用 Playwright 连接云端浏览器 async with async_playwright() as p: browser = await p.chromium.connect_over_cdp(endpoint) context = browser.contexts[0] page = await context.new_page() # 现在可以像本地浏览器一样操作 await page.goto("https://www.csdn.net") # ... 采集逻辑
解决了什么:
- ✅ 自动化浏览网页
- ✅ 提取文章链接和内容
- ✅ 无需本地环境配置
🎯 需求 2: 提高采集速度
新的挑战:
- 单个浏览器串行采集太慢(134 篇文章需要 60+ 分钟)
- 需要同时采集多个网站
- 需要并发处理多篇文章
技术选型: AgentBay Session 多开 + Browser 多 Tab 并发
为什么 AgentBay 适合并发?
传统方案的限制:
- 本地资源有限,开多个浏览器会卡顿
- Selenium Grid 需要搭建集群,运维成本高
AgentBay 的优势:
- ✅ 弹性扩展: 需要多少 Session 就创建多少
- ✅ 资源隔离: 每个 Session 独立,互不影响
- ✅ 多 Tab 支持: 每个 Session 可以开多个 Tab 并发工作
并发架构:
阶段 1: Session 级并发(采集链接) ├── Session 1 → CSDN (100 篇) ├── Session 2 → OSChina (100 篇) } 3 个 Session 并发 └── Session 3 → InfoQ (100 篇) 阶段 2: Session 复用 + 动态扩展(采集内容) ├── 复用 Session 1-3 (来自阶段1) ├── 新建 Session 4-5 (动态扩展) └── 5 个 Session × 5 Tabs = 25 倍并发
代码示例:
# 阶段 1: 并发创建 3 个 Session 并采集链接 tasks = [ create_session_and_collect(agent_bay, "CSDN", 100), create_session_and_collect(agent_bay, "OSChina", 100), create_session_and_collect(agent_bay, "InfoQ", 100), ] sessions, endpoints, links = await asyncio.gather(*tasks) # 阶段 2: 复用 3 个 Session + 新建 2 个 Session # 将 184 篇链接分配给 5 个 Session for session in range(5): if session < 3: # 复用阶段 1 的 Session reuse_session(sessions[session]) else: # 动态创建新 Session new_session = await create_additional_session() # 每个 Session 使用 5 个 Tab 并发采集 await collect_with_tabs(session, articles_batch, tabs=5)
解决了什么:
- ✅ 采集速度从 60+ 分钟降到 3 分钟
- ✅ 约 20 倍速度提升
- ✅ Session 复用,节省创建时间
- ✅ 动态扩展,灵活调整并发度
- ✅ 实际采集 134 篇高质量文章
🎯 需求 3: 对文章进行智能分析和推荐
新的挑战:
- 采集了 100+ 篇文章,如何筛选出最有价值的?
- 如何生成文章摘要和推荐理由?
- 如何评估文章质量?
技术选型: LlamaIndex 大模型接入能力
为什么选择 LlamaIndex?
直接调用 OpenAI API 的问题:
- 需要手动处理 Prompt 工程
- 需要自己管理上下文和 Token
- 缺少结构化的数据处理流程
LlamaIndex 的优势:
- ✅ 统一接口: 支持多种 LLM(OpenAI、Anthropic、本地模型等)
- ✅ 简化调用: 封装了 Prompt 管理和上下文处理
- ✅ 结构化输出: 便于后续处理
代码示例:
from llama_index.llms.openai import OpenAI # 配置 LLM llm = OpenAI(model="gpt-3.5-turbo", temperature=0.3) # 分析文章并生成推荐 for article in top_articles: prompt = f""" 请分析这篇技术文章: 标题: {article['title']} 内容: {article['content'][:1500]} 请提供: 1. 内容摘要(2-3句话) 2. 推荐理由(2-3个要点) """ response = llm.complete(prompt) article['summary'] = extract_summary(response) article['reasons'] = extract_reasons(response)
解决了什么:
- ✅ 自动生成文章摘要
- ✅ AI 驱动的推荐理由
- ✅ 多因子评分和排序
🎯 需求 4: 沉淀知识,支持智能问答
新的挑战:
- 采集的文章内容如何长期保存和利用?
- 如何支持用户用自然语言查询知识?
- 如何确保答案基于真实内容,不产生"幻觉"?
技术选型: LlamaIndex RAG 能力
为什么需要 RAG?
直接用 LLM 的问题:
- LLM 的知识有时效性(训练数据截止日期)
- 可能产生"幻觉"(编造不存在的信息)
- 无法访问私有数据
RAG 的优势:
- ✅ 知识更新: 基于最新采集的文章
- ✅ 准确可靠: 答案基于真实文档,可追溯来源
- ✅ 语义检索: 理解用户意图,找到相关内容
RAG 工作原理:
传统 LLM: 问题 → LLM → 答案(可能不准确) RAG 系统: 问题 → Embedding → 向量检索 → 相关文档 ↓ 答案 ← LLM ← 问题 + 相关文档
代码示例:
from llama_index.core import Document, VectorStoreIndex, Settings from llama_index.embeddings.openai import OpenAIEmbedding # 1. 配置 Embedding 模型 Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-large") # 2. 转换为 Document documents = [ Document( text=f"Title: {a['title']}\n\nContent: {a['content']}", metadata={'title': a['title'], 'url': a['url']} ) for a in articles_data ] # 3. 构建向量索引(自动完成: 分块 → Embedding → 存储) index = VectorStoreIndex.from_documents(documents) # 4. 智能问答 query_engine = index.as_query_engine(llm=llm, similarity_top_k=5) response = query_engine.query("AI Agent 开发有哪些最佳实践?") print(response)
解决了什么:
- ✅ 构建可查询的知识库
- ✅ 支持自然语言问答
- ✅ 答案可追溯到原文
1.3 技术组合的价值
AgentBay SDK + LlamaIndex 的完美组合:
AgentBay SDK LlamaIndex ↓ ↓ 数据采集层 --------→ 数据理解层 (Browser Use) (LLM + RAG) ↓ ↓ 并发加速层 --------→ 知识沉淀层 (Session 多开) (Vector Index)
集成方式: AgentBay 作为 LlamaIndex 的工具集成
LlamaIndex 提供了强大的工具集成机制,允许 AI Agent 调用外部工具。本案例中,我们将 AgentBay SDK 封装为 LlamaIndex 工具:
from llama_index.tools.agentbay import ( create_browser_agent_tools, # 浏览器自动化工具集 create_code_agent_tools, # 代码执行工具集 ) # 创建 AgentBay 浏览器工具 browser_tools = create_browser_agent_tools() # 创建 LlamaIndex Agent,配置工具 from llama_index.core.agent import ReActAgent agent = ReActAgent.from_tools(browser_tools, llm=llm) # Agent 可以自主调用 AgentBay 工具 response = agent.chat("采集 CSDN 上关于 AI Agent 的文章")
集成价值:
- 🔧 工具化: AgentBay 能力封装为 LlamaIndex 工具
- 🤖 Agent 驱动: AI Agent 自主决策何时使用 AgentBay
- 🔄 无缝协作: 数据采集 → 知识构建 → 智能问答一气呵成
组合优势:
- 分工明确: AgentBay 负责"采集",LlamaIndex 负责"理解"
- 优势互补: AgentBay 的并发能力 + LlamaIndex 的 AI 能力
- 完整闭环: 从数据获取到知识应用的完整链路
- 易于扩展: 可以轻松扩展到更多数据源和应用场景
- 资源优化: Session 复用 + 动态扩展,灵活高效
这就是为什么我们选择这个技术组合!
二、AgentBay 深度解析: 云端自动化的核心能力
2.1 AgentBay 是什么?
官方定义: 无影 AgentBay 是阿里云提供的云端自动化环境服务,支持浏览器自动化、代码执行、桌面 UI 自动化、移动端测试等多种场景。
核心概念:
1. Session(会话): 你在云端的临时工作环境
- 就像租用一台云服务器,用完即删
- 每个 Session 是独立隔离的
- 按使用时长计费
2. Image(镜像): 决定你的环境类型
browser_latest: 浏览器自动化环境(本案例使用)code_latest: 代码执行环境windows_latest: Windows 桌面环境mobile_latest: Android 模拟器环境linux_latest: 通用 Linux 环境(默认)
3. SDK: 多语言支持
- Python:
pip install wuying-agentbay-sdk - TypeScript:
npm install wuying-agentbay-sdk - Golang:
go get github.com/aliyun/wuying-agentbay-sdk/golang
基础使用模式:
from agentbay import AgentBay from agentbay.session_params import CreateSessionParams # 1. 创建客户端 agent_bay = AgentBay() # 2. 创建浏览器环境 params = CreateSessionParams(image_id="browser_latest") session = agent_bay.create(params).session # 3. 使用环境 # ... 业务逻辑 ... # 4. 清理资源(重要!) agent_bay.delete(session)
2.2 Browser Use 能力详解
本案例的核心: AgentBay Browser Use
Browser Use 是 AgentBay 提供的浏览器自动化能力,专为网页自动化场景设计。
核心特性:
1. 云端浏览器环境
- 预装 Chromium/Chrome 浏览器
- 无需本地安装和配置
- 稳定的云端资源
2. CDP 协议兼容
- 通过 Chrome DevTools Protocol 暴露端点
- 与 Playwright/Puppeteer 无缝集成
- 支持所有标准浏览器操作
3. 高级配置选项
- 自定义 User-Agent
- 设置 Viewport 尺寸
- 代理和指纹伪装
- 隐身模式
集成 Playwright 的标准流程:
from agentbay import AgentBay from agentbay.session_params import CreateSessionParams from agentbay.browser import BrowserOption, BrowserViewport from playwright.async_api import async_playwright async def main(): # Step 1: 创建 AgentBay 客户端 agent_bay = AgentBay(api_key="your-api-key") # Step 2: 创建浏览器 Session params = CreateSessionParams(image_id="browser_latest") session_result = agent_bay.create(params) if session_result.success: session = session_result.session print(f"Session created: {session.session_id}") # Step 3: 初始化浏览器(可选配置) browser_option = BrowserOption( user_agent="Mozilla/5.0 ...", # 自定义 UA viewport=BrowserViewport(width=1920, height=1080) # 自定义视口 ) if await session.browser.initialize_async(browser_option): print("Browser initialized successfully") # Step 4: 获取 CDP 端点 endpoint_url = session.browser.get_endpoint_url() # Step 5: 用 Playwright 连接 async with async_playwright() as p: browser = await p.chromium.connect_over_cdp(endpoint_url) context = browser.contexts[0] page = await context.new_page() # Step 6: 像本地浏览器一样操作 await page.goto("https://www.example.com") title = await page.title() print(f"Page title: {title}") await browser.close() # Step 7: 清理资源 agent_bay.delete(session)
关键 API:
API |
说明 |
返回值 |
|
初始化浏览器 |
bool |
|
获取 CDP 端点 |
str |
|
检查浏览器状态 |
bool |
为什么通过 CDP 而不是直接操作?
- ✅ 标准化: CDP 是 Chrome 官方协议,生态成熟
- ✅ 兼容性: 支持 Playwright、Puppeteer 等主流工具
- ✅ 灵活性: 用户可以选择熟悉的自动化框架
- ✅ 功能完整: CDP 支持所有浏览器操作
2.3 Session 并发能力
本案例的性能关键: Session 多开
AgentBay 支持同时创建多个 Session,每个 Session 是独立的云端环境。
并发优势:
1. 弹性扩展
- 需要多少 Session 就创建多少
- 不受本地资源限制
- 云端资源按需分配
2. 资源隔离
- 每个 Session 独立运行
- 互不影响,稳定可靠
- 单个 Session 失败不影响其他
3. 并发控制
- 可以精确控制并发数量
- 避免超过 API 限制
- 合理控制成本
本案例的并发策略:
# 创建 3 个 Session,分别采集 3 个网站 async def create_sessions(): agent_bay = AgentBay() # 并发创建 3 个 Session tasks = [ create_session_for_platform(agent_bay, "CSDN"), create_session_for_platform(agent_bay, "OSChina"), create_session_for_platform(agent_bay, "InfoQ"), ] # 等待所有 Session 创建完成 sessions = await asyncio.gather(*tasks) return sessions # 每个 Session 内部使用 5 个 Tab 并发 async def collect_with_tabs(session, endpoint, articles): async with async_playwright() as p: browser = await p.chromium.connect_over_cdp(endpoint) context = browser.contexts[0] # 分批处理,每批 5 个 Tab for i in range(0, len(articles), 5): batch = articles[i:i+5] # 并发创建 5 个 Tab tasks = [ ] for article in batch: page = await context.new_page() task = collect_article(page, article) tasks.append(task) # 等待当前批次完成 await asyncio.gather(*tasks)
并发层次:
阶段 1: Session 级并发(3x) ├── Session 1 (CSDN) → 采集链接 ├── Session 2 (OSChina) → 采集链接 └── Session 3 (InfoQ) → 采集链接 ↓ 收集文章链接 阶段 2: Session 复用 + 扩展 + Tab 并发 ├── Session 1 (复用) ─┬─ Tab 1-5 ├── Session 2 (复用) ─┼─ Tab 1-5 ├── Session 3 (复用) ─┼─ Tab 1-5 ├── Session 4 (新建) ─┼─ Tab 1-5 └── Session 5 (新建) ─┴─ Tab 1-5 总并发度: 5 × 5 = 25x 实际采集: 134 篇高质量文章 平台分布: CSDN 58篇 | OSChina 53篇 | InfoQ 23篇
为什么阶段 1 用 3 个 Session?
- 本案例有 3 个网站需要采集
- 每个 Session 专注一个网站,逻辑清晰
- Session 创建后立即工作,无等待时间
为什么阶段 2 扩展到 5 个 Session?
- 大量文章需要更多并发度
- 复用阶段 1 的 3 个 Session,节省创建时间
- 动态新建 2 个 Session,灵活调整并发度
- 5 个 Session 是性能和成本的平衡点
- 最终采集 134 篇高质量文章
为什么每个 Session 用 5 个 Tab?
- 实测发现 5 个 Tab 是性能和稳定性的平衡点
- 太多 Tab 会导致浏览器资源竞争
- 可以根据实际情况调整
三、AgentBay 集成 LlamaIndex: 从数据到知识
3.1 为什么需要 LlamaIndex?
回顾需求 3 和 4:
- 需求 3: 对文章进行智能分析和推荐
- 需求 4: 沉淀知识,支持智能问答
LlamaIndex 解决的问题:
1. 统一的 LLM 接入
- 支持 OpenAI、Anthropic、本地模型等
- 简化 Prompt 管理
- 统一的调用接口
2. RAG 系统构建
- 自动化的文本分块
- 向量 Embedding 和索引
- 语义检索和问答
3. 工具集成框架
- 提供标准的工具接口
- 支持 AI Agent 自主调用工具
- 本案例中将 AgentBay 封装为 LlamaIndex 工具
LlamaIndex 在本案例中的作用:
AgentBay 工具集成 ↓ 采集的文章(AgentBay) ↓ 转换为 Document ↓ 构建向量索引(LlamaIndex) ↓ 智能分析和推荐(LLM) ↓ 知识问答(RAG)
3.2 AgentBay 工具集成
llama-index-tools-agentbay 包
为了让 LlamaIndex Agent 能够使用 AgentBay 的能力,我们开发了 llama-index-tools-agentbay 集成包:
from llama_index.tools.agentbay import ( create_browser_agent_tools, # 浏览器自动化工具 create_code_agent_tools, # 代码执行工具 AgentBaySessionManager, # Session 管理器 ) # 方式1: 使用预配置的工具集(推荐) browser_tools = create_browser_agent_tools() code_tools = create_code_agent_tools() # 方式2: 自定义 Session 管理 session_manager = AgentBaySessionManager(api_key="your-key") browser_tools = create_browser_agent_tools(session_manager)
工具集说明:
1. 浏览器工具集 (create_browser_agent_tools)
browser_navigate: 导航到指定 URLbrowser_get_content: 获取页面 HTML 内容browser_info: 获取浏览器 CDP 端点信息file_read/write/list: 文件操作command_execute: 命令执行
2. 代码执行工具集 (create_code_agent_tools)
python_run_code: 执行 Python 代码javascript_run_code: 执行 JavaScript 代码file_read/write/list: 文件操作command_execute: 命令执行
集成到 Agent:
from llama_index.core.agent import ReActAgent from llama_index.llms.openai import OpenAI # 创建工具 tools = create_browser_agent_tools() # 创建 Agent llm = OpenAI(model="gpt-3.5-turbo") agent = ReActAgent.from_tools(tools, llm=llm, verbose=True) # Agent 自主使用工具 response = agent.chat("访问 example.com 并提取主标题")
本案例的实现方式:
虽然本案例为了展示并发能力,直接使用了 AgentBay SDK 而非通过 Agent 调用,但在实际应用中,可以让 Agent 自主决策:
# Agent 驱动的方式(未来可能) agent = ReActAgent.from_tools( create_browser_agent_tools(), llm=llm ) # Agent 自主规划和执行 response = agent.chat(""" 从 CSDN、OSChina、InfoQ 采集关于 AI Agent 的文章, 构建知识库,并推荐 Top 10 最有价值的文章。 """)
3.3 核心能力总结
LlamaIndex 的核心价值:
- ✅ 简化 RAG 构建: 几行代码完成复杂的 RAG 系统
- ✅ 灵活的 LLM 接入: 支持多种 LLM 提供商
- ✅ 工具集成机制: AgentBay 可作为工具被 Agent 调用
- ✅ 企业级特性: 支持多种向量数据库、缓存、评估等
四、完整实现: 从采集到问答
4.1 构建 RAG 知识库
完整流程:
from llama_index.core import Document, VectorStoreIndex, Settings from llama_index.embeddings.openai import OpenAIEmbedding from llama_index.llms.openai import OpenAI print("\n" + "="*80) print("🧠 Step 2: Building RAG Knowledge Base") print("="*80) # Step 1: 配置 Embedding 模型 print("\n1️⃣ Configuring embedding model...") Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-large") Settings.chunk_size = 1024 # 文本分块大小 Settings.chunk_overlap = 100 # 块之间的重叠 print(f" • Model: text-embedding-3-large") print(f" • Chunk size: 1024") print(f" • Chunk overlap: 100") # Step 2: 转换为 LlamaIndex Document print("\n2️⃣ Converting to documents...") documents = [ ] for article in articles_data: # 判断是否 AI 相关 is_ai_related = any( keyword.lower() in article['title'].lower() for keyword in ['AI', 'Agent', 'LLM', '大模型', 'RAG'] ) doc = Document( text=f"Title: {article['title']}\n\nContent: {article['content']}", metadata={ 'title': article['title'], 'url': article['url'], 'source': article['source'], 'content_length': len(article['content']), 'is_ai_related': is_ai_related, } ) documents.append(doc) ai_count = sum(1 for doc in documents if doc.metadata['is_ai_related']) print(f" ✅ Created {len(documents)} documents") print(f" • AI/Agent related: {ai_count}") print(f" • Other: {len(documents) - ai_count}") # Step 3: 构建向量索引 print("\n3️⃣ Building vector index...") print(" (This may take 1-2 minutes)") index = VectorStoreIndex.from_documents(documents) print(" ✅ Knowledge base built successfully!")
背后发生了什么?
1. 文本分块(Chunking)
原始文章(5000 字符) ↓ chunk_size=1024, overlap=100 Chunk 1: [0:1024] Chunk 2: [924:1948] # 重叠 100 字符 Chunk 3: [1848:2872] Chunk 4: [2772:3796] Chunk 5: [3696:4720]
为什么需要分块?
- Embedding 模型有输入长度限制(通常 8192 tokens)
- 小块更精确,检索更准确
- 平衡上下文完整性和检索精度
2. Embedding
每个 Chunk ↓ text-embedding-3-large 1536 维向量
每个文本块被转换为一个 1536 维的向量,这个向量捕获了文本的语义信息。
3. 索引构建
所有向量 ↓ 向量索引(内存)
所有向量被存储到一个可以快速检索的索引结构中。
为什么需要重叠?
- 避免关键信息被切断
- 提高检索召回率
- 保持语义连贯性
4.2 智能推荐实现
需求 3: 对文章进行智能分析和推荐
本案例实现了一个智能推荐系统,从 134 篇文章中推荐 Top 10 最有价值的文章。
实现思路(简要说明):
1. 多因子评分
# 计算综合评分 total_score = ( relevance_score * 0.5 + # AI 相关性(50%) quality_score * 0.25 + # 内容质量(25%) source_score * 0.15 + # 来源可信度(15%) title_score * 0.1 # 标题质量(10%) )
2. LLM 增强分析
from llama_index.llms.openai import OpenAI llm = OpenAI(model="gpt-3.5-turbo", temperature=0.3) # 为 Top 10 文章生成摘要和推荐理由 for article in top_10_articles: prompt = f""" 请分析这篇技术文章: 标题: {article['title']} 内容: {article['content'][:1500]} 请提供: 1. 内容摘要(2-3句话) 2. 推荐理由(2-3个要点) """ response = llm.complete(prompt) # 解析响应,提取摘要和理由
3. 推荐结果示例 (基于实际运行结果)
Top 10 Recommended Articles: 1. LLM 应用评估综合指南(多轮对话系统、RAG、AI Agent) 来源: InfoQ | 评分: 14.35 📝 内容简介: 深入探讨LLM应用评估方法,涵盖多轮对话、RAG、智能体的关键评估维度 💡 推荐理由: • 深入探讨了现代LLM应用的评估方法 • 提供了对主流评估框架的功能比较 • 涵盖传统NLP评估指标到现代LLM基准测试的演进 2. 企业将 Agentic AI 工作负载投入生产的 3 条可行之路 来源: InfoQ | 评分: 10.60 📝 内容简介: 探讨AI投资回报率、数据基础、安全治理等关键要素 💡 推荐理由: • 深入探讨了企业AI投资回报率、数据基础和安全治理 • 提供了构建生产就绪型智能体的策略 • 强调了数据基础的重要性 3. LangChain搭建Agent | 使用initialize_agent 来源: CSDN | 评分: 10.30 📝 内容简介: 详细讲解LangChain中Agent的构建方法和实践 💡 推荐理由: • 与AI Agent开发直接相关 • 提供了详细的实现指导和示例 • 适合开发者快速获取关于LangChain Agent构建的信息 ... (完整 Top 10 列表见文章开头的实际运行效果)
注: 推荐算法不是本文重点,这里只展示 LlamaIndex 的 LLM 接入能力。完整实现见示例代码。
4.3 智能问答实现
需求 4: 沉淀知识,支持智能问答
RAG 查询流程:
# 配置查询引擎 llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1) query_engine = index.as_query_engine( llm=llm, similarity_top_k=5 # 检索 Top-5 相关文档 ) # 查询示例 (基于实际运行结果) question = "Qwen相关" response = query_engine.query(question) # 输出结果: # 🤔 问题: Qwen相关 # # 💡 回答: # Qwen是一个推理模型,具有强大的语言理解和推理能力。 # Qwen3-Max-Thinking是Qwen3-Max-Preview的增强版本,能在高水平 # 数学推理竞赛中实现100%的正确率。该模型支持多种任务,包括编程、 # 常识推理、对话生成等... # # 📚 参考来源(共 2 篇文章): # [1] 【Agent】Qwen-Agent框架代码解读和MCP应用 # 来源: CSDN | 相关度: 0.558 # [2] Qwen"半成品"推理模型刷下 AIME 满分... # 来源: InfoQ | 相关度: 0.510
查询过程详解:
1. 问题 Embedding "AI Agent 开发有哪些最佳实践?" ↓ text-embedding-3-large 1536 维向量 2. 向量相似度检索 问题向量 vs 所有文档向量 ↓ 余弦相似度 Top-5 最相关的文档块 3. 构建 Prompt System: 你是一个AI助手... Context: [Top-5 文档内容] Question: AI Agent 开发有哪些最佳实践? 4. LLM 生成答案 GPT-3.5-turbo ↓ 基于文档的准确答案
RAG 的优势:
1. 准确性
- 答案基于真实文档
- 可以追溯到原文
- 避免 LLM "幻觉"
2. 时效性
- 使用最新采集的文章
- 不受 LLM 训练数据截止日期限制
3. 可解释性
- 显示引用来源
- 用户可以验证答案
示例输出 (基于实际查询结果):
问题: LLM相关 答案: LLM是指大语言模型(Large Language Model),是一种人工智能模型。LLM模型具有 定义清晰、特点明显和应用前景广阔的特点。通过深度解析LLM,可以更好地理解其 在自然语言处理领域的重要性和应用前景。近期有关LLM的文章涵盖了从入门到精通 的详细介绍,包括模型原理、算法、大数据等方面的内容,帮助读者全面了解和掌握 这一技术。 📚 参考来源(共 4 篇文章): 1. 一文搞懂LLM大模型!LLM从入门到精通万字长文(2024.12月最新) 来源: CSDN | 相关度: 0.582 2. 一文搞懂LLM大模型!LLM从入门到精通万字长文,看这篇就够了(2025.8月最新) 来源: CSDN | 相关度: 0.528 3. 用中学数学理解 LLM 来源: OSChina | 相关度: 0.513 4. LLM(大语言模型)深度解析:定义、特点与应用前景 来源: CSDN | 相关度: 0.504
五、更多应用场景: 技术组合的无限可能
通过文章采集这个案例,我们验证了 AgentBay + LlamaIndex 组合的可行性。这个技术方案可以扩展到更多场景,核心思路是:
AgentBay 负责"数据获取"层 + LlamaIndex 负责"数据理解"层 = 完整的智能应用
5.1 应用场景
场景 1: 竞品监控系统
AgentBay Browser Use ↓ 定期采集竞品官网和文档 LlamaIndex RAG ↓ 构建竞品知识库 LLM 分析 ↓ 生成竞品分析报告
应用价值:
- 自动追踪竞品动态
- 识别功能差异
- 生成对比分析报告
场景 2: 技术文档助手
AgentBay Browser Use ↓ 采集开源项目文档 LlamaIndex RAG ↓ 构建文档知识库 智能问答 ↓ 开发者自然语言查询
应用价值:
- 快速查找文档内容
- 理解复杂技术概念
- 提供代码示例
场景 3: 价格监控
AgentBay Browser Use ↓ 采集电商平台价格 LlamaIndex ↓ 构建价格历史数据库 LLM 分析 ↓ 价格趋势预测
应用价值:
- 实时价格监控
- 历史价格分析
- 最佳购买时机推荐
场景 4: 内容审核
AgentBay Browser Use ↓ 采集用户生成内容 LlamaIndex + LLM ↓ 内容分类和审核 自动标记 ↓ 违规内容处理
应用价值:
- 自动化内容审核
- 减少人工成本
- 提高审核效率
场景 5: 学术论文助手
AgentBay Browser Use ↓ 采集 arXiv 等论文 LlamaIndex RAG ↓ 构建论文知识库 LLM 分析 ↓ 论文摘要和关联分析
应用价值:
- 快速了解研究领域
- 发现相关论文
- 生成文献综述
5.2 技术组合的核心价值
分工明确:
- AgentBay: 云端自动化执行层(浏览器、代码、命令)
- LlamaIndex: 数据理解和知识管理层(RAG、LLM 集成)
- 两者结合: 从数据获取到智能应用的完整链路
应用特点:
- 🚀 快速: 云端并发,大幅提升效率
- 🧠 智能: AI 驱动的数据分析和决策
- 🔄 自动化: 减少人工干预,持续运行
- 📈 可扩展: 云原生架构,按需扩展
六、总结与资源
6.1 核心要点回顾
本文通过一个完整的实战案例,展示了 AgentBay SDK + LlamaIndex 的组合能力:
技术选型逻辑:
- ✅ 需要自动浏览网页 → AgentBay Browser Use
- ✅ 需要提高采集速度 → AgentBay Session 多开 + 多 Tab 并发
- ✅ 需要智能分析推荐 → LlamaIndex LLM 接入
- ✅ 需要知识沉淀问答 → LlamaIndex RAG
关键收获:
- AgentBay 提供云端自动化能力,弹性扩展,开箱即用
- 通过 CDP 协议与 Playwright 无缝集成
- Session 复用 + 动态扩展实现约 20 倍速度提升
- AgentBay 作为工具集成到 LlamaIndex,Agent 可自主调用
- LlamaIndex 简化 RAG 系统构建
- 两者组合形成完整的数据采集和理解链路
实际成果:
- 3 分钟采集 134 篇高质量文章
- 构建完整的 RAG 知识库
- 智能推荐 Top 10 文章
- 支持自然语言智能问答