3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐

简介: 结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。

本文作者:阿里云无影技术专家 李岳冰


📌 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 文章

  1. LLM 应用评估综合指南(多轮对话系统、RAG、AI Agent) - InfoQ
  • 评分: 14.35
  • 推荐理由: 深入探讨LLM应用评估方法,涵盖多轮对话、RAG、智能体的关键评估维度
  1. 企业将 Agentic AI 工作负载投入生产的 3 条可行之路 - InfoQ
  • 评分: 10.60
  • 推荐理由: 探讨AI投资回报率、数据基础、安全治理等关键要素
  1. LangChain搭建Agent | 使用initialize_agent - CSDN
  • 评分: 10.30
  • 推荐理由: 详细讲解LangChain中Agent的构建方法和实践
  1. Agent在智能客服的实践(AI agent、记忆、快捷回复) - CSDN
  • 评分: 10.30
  • 推荐理由: 智能客服场景下的Agent实际应用案例
  1. 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
  • 🔄 无缝协作: 数据采集 → 知识构建 → 智能问答一气呵成

组合优势:

  1. 分工明确: AgentBay 负责"采集",LlamaIndex 负责"理解"
  2. 优势互补: AgentBay 的并发能力 + LlamaIndex 的 AI 能力
  3. 完整闭环: 从数据获取到知识应用的完整链路
  4. 易于扩展: 可以轻松扩展到更多数据源和应用场景
  5. 资源优化: 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

说明

返回值

browser.initialize_async(option)

初始化浏览器

bool

browser.get_endpoint_url()

获取 CDP 端点

str

browser.is_initialized()

检查浏览器状态

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: 导航到指定 URL
  • browser_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 的组合能力:

技术选型逻辑:

  1. ✅ 需要自动浏览网页 → AgentBay Browser Use
  2. ✅ 需要提高采集速度 → AgentBay Session 多开 + 多 Tab 并发
  3. ✅ 需要智能分析推荐 → LlamaIndex LLM 接入
  4. ✅ 需要知识沉淀问答 → LlamaIndex RAG

关键收获:

  • AgentBay 提供云端自动化能力,弹性扩展,开箱即用
  • 通过 CDP 协议与 Playwright 无缝集成
  • Session 复用 + 动态扩展实现约 20 倍速度提升
  • AgentBay 作为工具集成到 LlamaIndex,Agent 可自主调用
  • LlamaIndex 简化 RAG 系统构建
  • 两者组合形成完整的数据采集和理解链路

实际成果:

  • 3 分钟采集 134 篇高质量文章
  • 构建完整的 RAG 知识库
  • 智能推荐 Top 10 文章
  • 支持自然语言智能问答

6.2 相关链接

6.3 系列文章

相关文章
|
自然语言处理 测试技术 API
打通Agent最后一公里: 用阿里云无影AgentBay+LangChain实现浏览器自动化
langchain-agentbay-integration 是一个连接 LangChain 与阿里云无影 AgentBay 的工具包,支持浏览器自动化、代码执行等云端操作,助力开发者高效构建智能代理应用。
575 5
|
24天前
|
数据采集 数据库 Python
Python异步编程入门:asyncio让你的代码飞起来
Python异步编程入门:asyncio让你的代码飞起来
234 114
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
320 116
|
24天前
|
IDE PHP 开发工具
PHP严格类型声明:告别类型“惊喜”的利器
PHP严格类型声明:告别类型“惊喜”的利器
193 115
|
9天前
|
弹性计算 Prometheus Cloud Native
从CPU到RPS:HPA避坑指南,让弹性伸缩不再“空转”
从CPU到RPS:HPA避坑指南,让弹性伸缩不再“空转”
157 115
|
9天前
|
人工智能 前端开发 安全
告别重复劳动:用 AI 代码助手重构你的组件库
告别重复劳动:用 AI 代码助手重构你的组件库
180 114
|
15天前
|
前端开发 JavaScript
告别回调地狱:如何用Promise链优化异步代码
告别回调地狱:如何用Promise链优化异步代码
156 114
|
1月前
|
人工智能 供应链 算法
1688开店必看丨新手商家人手一份的运营指南!
在中国电商的宏大叙事中,当大众的目光多聚焦于淘宝、京东等直面消费者的零售巨头时,一条潜行于幕后的“超级供应链动脉”正以前所未有的力量重塑着中国商业的毛细血管。这便是阿里巴巴集团旗下的核心B2B平台——1688。
486 99
|
5天前
|
人工智能 自然语言处理 人机交互
《智能词汇》:十进制编码驱动的构词体系与极简语法应用机制研究
摘要 《智能词汇》作为一套创新性人工语言的词汇系统,其核心优势集中体现于词汇构词体系与语法应用机制的逻辑化设计。本文聚焦《智能词汇》的核心功能,系统解析其基于十进制编码的构词方法(语义场层级分类、词汇关系网络构建、无限扩展规则)与极简语法应用机制(词本位原则、无形态变化特征、语序主导语义表达)。研究表明,《智能词汇》以“道生万物”哲学思想为内核,以十进制数学逻辑为骨架,构建了“编码即语义、关系即规则、语法即秩序”的完整体系,实现了词汇构词的规则化、语义关联的精准化与语法应用的简洁化,为人工语言的词汇与语法设计提供了新范式,兼具语言学习的高效性与跨场景应用的适配性。
178 114
《智能词汇》:十进制编码驱动的构词体系与极简语法应用机制研究