> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 用实时数据增强AI代理
- URL: https://www.hubwiz.com/blog/augment-ai-agents-with-live-data-feeds/
- Published: 2025-04-25T02:52:57.000Z
- Updated: 2025-04-25T02:52:57.000Z
- Description: 本文介绍如何通过干净的数据集和开源LLM将社交噪声转化为可消化的见解。
- Author: admin
- Tags: APPLICATION, AGENT, BRIGHTDATA, LANGGRAPH, LLM-OLLAMA, STREAMLIT, #Import 2026-10-14 14:41

随着最近关于AI代理和应用的热议，我决定做一个有趣的项目——一个实时内容摘要生成器，它从Reddit和X（前身为Twitter）抓取趋势帖子，并通过本地大型语言模型（LLM）运行，生成简洁的摘要。

这个项目的难点本应是获取数据；抓取似乎太费力且需要太多工作，尤其是之后还需要清理数据。幸运的是，我发现并使用了[Bright Data提供的Reddit和X结构化数据集](https://get.brightdata.com/bd-datasets?utm%5Fcontent=how%5Fi%5Fuse%5Freal%5Ftime%5Fweb%5Fdata%5Fto%5Fbuild%5Fai%5Fagents%5Fthat%5Fare%5F10x%5Fsmarter&ref=hubwiz.com)，这为我提供了干净、高质量且最新的内容，而无需担心常见的问题如速率限制或脆弱的抓取逻辑。

因此，在这篇文章中，我将向您展示如何使用[Bright Data提供的数据集](https://get.brightdata.com/bd-datasets?utm%5Fcontent=how%5Fi%5Fuse%5Freal%5Ftime%5Fweb%5Fdata%5Fto%5Fbuild%5Fai%5Fagents%5Fthat%5Fare%5F10x%5Fsmarter&ref=hubwiz.com)、LangChain、Ollama和Streamlit来构建此工具。

## 1、我们要构建什么

想法很简单：构建一个工具，抓取趋势内容并将其转换为快速易懂的摘要。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-410.png)

可以把它想象成一个个人摘要机器人。它抓取Reddit和X的最新帖子，通过LangChain将它们传递给本地LLM，并输出您可以实际跟上的干净、总结性的观点。目标不是重新发明轮子——而是看看通过连接正确的工具以及更重要的提供正确的数据，我能走多远。

所有内容都在Streamlit应用程序中运行，使其易于交互和迭代。加载后，即可获得新鲜的摘要，随时可用。

没什么复杂的。只是一个小型而专注的项目，展示了好的数据和几个精心挑选的工具的强大之处。

## 2、工具和技术栈

我保持了技术栈的最小化，只使用了从原始内容到可消化摘要所需的基本工具，没有过度工程化。

- **Bright Data 数据集**：这是项目的支柱。我没有处理网络抓取的复杂性，而是使用了[Bright Data提供的结构化Reddit和X数据集](https://get.brightdata.com/bd-datasets?utm%5Fcontent=how%5Fi%5Fuse%5Freal%5Ftime%5Fweb%5Fdata%5Fto%5Fbuild%5Fai%5Fagents%5Fthat%5Fare%5F10x%5Fsmarter&ref=hubwiz.com)。它们提供了干净、最新且可靠的资料，消除了对速率限制、破损HTML和耗时维护的担忧。
- **LangChain**：它处理整个LLM管道。它使构建提示、传递内容并从模型中获取干净摘要变得非常容易。
- **Ollama**：我想保持一切本地化，所以使用Ollama运行LLM。它速度快、轻量级，不需要云API密钥即可开始。非常适合实时摘要。
- **Streamlit**：对于UI，Streamlit几乎太容易了。几行代码，我就有了一个功能齐全、干净的仪表板来显示摘要。

每个工具都发挥了作用，但如果没有来自Bright Data的干净结构化数据，这一切都不会奏效。这就是让整个事情成功的关键所在。

## 3、获取数据：使用Bright Data数据集

以下是获取Reddit和X（前身为Twitter）数据的方法：

### 3.1 登录Bright Data

前往[Bright Data](https://get.brightdata.com/bd7914?utm%5Fcontent=how%5Fi%5Fuse%5Freal%5Ftime%5Fweb%5Fdata%5Fto%5Fbuild%5Fai%5Fagents%5Fthat%5Fare%5F10x%5Fsmarter&ref=hubwiz.com)并登录您的仪表板。如果您没有帐户，可以免费创建一个。

### 3.2 打开数据集市场

在仪表板侧边栏中，单击Web Datasets，然后选择Dataset Marketplace。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-411.png)

### 3.3 搜索Reddit数据集

在搜索栏中输入“Reddit — Posts”。点击匹配的结果，预览数据集并继续购买。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-412.png)

购买后，以**CSV**格式下载数据集。

### 3.4 对X（前身为Twitter）重复相同步骤

重复相同的流程——这次搜索“X（前身为Twitter）— Posts”。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-413.png)

同样，购买并下载该数据集。您可以在购买之前尝试他们的样本数据，看看它的样子并进行试验。

或者，您还可以通过他们的[网页爬虫获取Reddit、X和其他平台的干净数据](https://get.brightdata.com/bd-products-web-scraper?utm%5Fcontent=how%5Fi%5Fuse%5Freal%5Ftime%5Fweb%5Fdata%5Fto%5Fbuild%5Fai%5Fagents%5Fthat%5Fare%5F10x%5Fsmarter&ref=hubwiz.com)，这些爬虫有代码和无代码选项。

### 3.5 探索CSV文件

每个CSV为您提供了一个干净的结构，包括帖子标题、文本、时间戳、参与度指标等字段——非常适合稍后传递给LLM。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-414.png)

## 4、分步实现

现在我们已经有了数据和工具，让我们分解一下所有内容是如何结合在一起的。这部分涵盖了从头开始设置项目、安装依赖项并启动带有Ollama的本地LLM的过程。

### 4.1 设置项目

让我们从整理项目开始。我喜欢保持简单和模块化，尤其是在实验时。

**创建项目文件夹：**

```
mkdir real-time-content-digest  
cd real-time-content-digest

```

**设置虚拟环境：**

如果使用Python：

```
python -m venv venv  
source venv/bin/activate  # 在Windows上：venv\Scripts\activate

```

### 4.2 安装所需的依赖项

我们需要以下内容：

- **streamlit** — 用于UI
- **pandas** — 用于处理数据集
- **langchain** — 构建LLM链
- **ollama** — 运行本地模型
- **openai** — 如果想在本地和托管模型之间切换

一次性安装所有内容

```
pip install streamlit pandas langchain langchain_community openai

```

您还需要在机器上安装`ollama`。更多信息见下文。

### 4.3 定义项目结构

这是一个简单的文件夹结构可以使用：

```
real-time-content-digest/  
├── data/  
│   ├── reddit_posts.csv  
│   └── x_posts.csv  
├── main.py

```

## 5、安装并运行Ollama LLaVA-Llama3模型

为了本地推理，我使用了`llava-llama3`模型与[Ollama](https://ollama.com/?ref=hubwiz.com)。它轻量级且适用于实时摘要任务。

### 5.1 安装Ollama

您可以按照以下链接中的说明安装Ollama：[https://ollama.com/download](https://ollama.com/download?ref=hubwiz.com) （适用于macOS、Windows和Linux）

### 5.2 拉取LLaVA-Llama3模型

安装Ollama后，运行以下命令：

```
ollama pull llava-llama3:latest

```

这会获取最新版本的llava-llama3模型。

### 5.3 本地运行模型

通过运行以下命令启动模型：

```
ollama run llava-llama3

```

默认情况下，它会在http://localhost:11434上启动一个API。

就是这样。有了模型运行，我们就可以开始加载数据、生成摘要并将所有内容与Streamlit连接起来。

## 6、构建应用程序组件

既然我们的环境已经设置好了，让我们在`main.py`文件中实现内容摘要机器人中的每一部分。

### 6.1 数据处理层

我们需要的第一个组件是数据处理层，它将处理加载和准备CSV数据：

```
def process_reddit_data(file):  
    try:  
        df = pd.read_csv(file)  
        required_columns = ["post_id", "title", "description", "num_comments",   
                          "date_posted", "community_name", "num_upvotes", "comments"]  
          
        # 检查是否包含所需列  
        for col in required_columns:  
            if col not in df.columns:  
                missing = [c for c in required_columns if c not in df.columns]  
                st.warning(f"警告：Reddit数据缺少列：{missing}")  
                break  
                  
        # 返回处理后的DataFrame  
        return df  
    except Exception as e:  
        st.error(f"处理Reddit数据时出错：{e}")  
        return None  
  
def process_twitter_data(file):  
    try:  
        df = pd.read_csv(file)  
        required_columns = ["id", "user_posted", "name", "description",   
                          "date_posted", "replies", "reposts", "likes"]  
          
        # 检查是否包含所需列  
        for col in required_columns:  
            if col not in df.columns:  
                missing = [c for c in required_columns if c not in df.columns]  
                st.warning(f"警告：Twitter/X数据缺少列：{missing}")  
                break  
                  
        # 返回处理后的DataFrame  
        return df  
    except Exception as e:  
        st.error(f"处理Twitter/X数据时出错：{e}")  
        return None  
  
def clean_text(text):  
    if pd.isna(text):  
        return ""  
    # 删除URL  
    text = re.sub(r'http\S+', '', text)  
    # 删除特殊字符和多余空格  
    text = re.s```python
b(r'\s+', ' ', text).strip()  
    return text

```

这些函数负责加载CSV文件，验证其是否包含必要的列，并清理文本内容。`clean_text` 函数移除URL并规范化文本以提高处理质量。

### 6.2 LLM 集成

接下来我们将实现与Ollama模型的内容生成集成：

```python
@st.cache_resource  
def get_llm():  
    try:  
        return Ollama(model="llama3")  
    except Exception as e:  
        st.error(f"错误初始化Ollama模型: {e}")  
        return None  
  
llm = get_llm()

```

我们使用Streamlit的`cache_resource`装饰器来确保只初始化一次Ollama模型，这提高了性能。

### 6.3 内容摘要功能

现在我们实现从两个平台总结内容的核心功能：

```python
def summarize_reddit_post(post_data):  
    prompt_template = PromptTemplate(  
        input_variables=["title", "description", "community", "comments", "upvotes"],  
        template="""  
        总结以下Reddit帖子：  
          
        标题: {title}  
        社区: {community}  
        点赞数: {upvotes}  
        内容: {description}  
          
        关键评论（如果有）: {comments}  
          
        请提供：  
        1. 一个简洁的TL;DR（2-3句话）  
        2. 3-5个关键要点  
        3. 帖子中最深刻的引用  
        4. 情感分析（正面、负面、中性）  
        """  
    )  
      
    # 从帖子数据中提取相关信息  
    title = post_data.get('title', '无标题')  
    description = post_data.get('description', '无描述')  
    community = post_data.get('community_name', '未知社区')  
      
    # 处理评论  
    comments_list = post_data.get('comments', '')  
    if isinstance(comments_list, str) and comments_list:  
        comments = comments_list[:500] + "..." if len(comments_list) > 500 else comments_list  
    else:  
        comments = "无评论"  
      
    upvotes = post_data.get('num_upvotes', '0')  
      
    chain = LLMChain(llm=llm, prompt=prompt_template)  
    return chain.run(title=title, description=description, community=community, comments=comments, upvotes=upvotes)

```

Twitter（X）内容的函数遵循类似的模式，但根据不同的数据结构进行了调整。

### 6.4 格式转换功能

接下来我们实现将摘要转换为不同输出格式的功能：

```python
def convert_to_newsletter(summary, source_type, source_data):  
    if source_type == "Reddit":  
        title = source_data.get('title', '未命名帖子')  
        community = source_data.get('community_name', '未知社区')  
        url = source_data.get('url', '#')  
          
        prompt_template = PromptTemplate(  
            input_variables=["summary", "title", "community", "url"],  
            template="""  
            将此Reddit帖子摘要转换为新闻通讯段落：  
              
            原始帖子标题: {title}  
            来自r/{community}  
            URL: {url}  
              
            摘要: {summary}  
              
            编写一个吸引人的新闻通讯段落，包括：  
            1. 一个引人注目的标题  
            2. 一个简短的介绍（1-2句话）  
            3. 用项目符号格式的主要见解  
            4. 一个鼓励读者查看原始帖子的结尾想法  
              
            以Markdown格式输出。  
            """  
        )  
          
        chain = LLMChain(llm=llm, prompt=prompt_template)  
        return chain.run(summary=summary, title=title, community=community, url=url)

```

对于社交媒体帖子创建也有类似的函数，根据字符限制和平台特定约定进行调整。

### 6.5 用户界面实现

最后，我们实现Streamlit应用程序的用户界面：

```python
# 设置页面配置  
st.set_page_config(  
    page_title="内容摘要机器人",  
    page_icon="📝",  
    layout="wide"  
)  
  
# 标题和描述  
st.title("实时内容摘要/摘要机器人")  
st.markdown("""  
这个应用程序从Reddit和Twitter/X获取趋势内容，总结关键点，  
并可以将其转换为新闻通讯或社交媒体帖子格式。  
""")  
  
# 主界面  
tab1, tab2 = st.tabs(["数据处理", "内容生成"])  
  
with tab1:  
    st.header("上传数据")  
    # 数据上传UI代码...  
  
with tab2:  
    st.header("生成内容摘要")  
    # 内容生成UI代码...

```

完整的UI实现包括用于数据处理和内容生成的选项卡，以及选择帖子、生成摘要和转换为不同格式的控件。

**运行应用程序**

运行Streamlit应用程序：

```
streamlit run main.py

```

您的实时内容摘要和摘要机器人现已上线！🎉

![](https://www.hubwiz.com/blog/content/images/2025/04/image-415.png)

## 7、结束语

从Reddit和Twitter（X）获取[干净、相关且及时的数据集](https://get.brightdata.com/bd-datasets?utm%5Fcontent=how%5Fi%5Fuse%5Freal%5Ftime%5Fweb%5Fdata%5Fto%5Fbuild%5Fai%5Fagents%5Fthat%5Fare%5F10x%5Fsmarter&ref=hubwiz.com)起到了关键作用。

通过结合结构化数据集与开源工具如**LangChain**、**Ollama**和**Streamlit**，我能够创建一个机器人，它能总结噪声，并且这只有在数据质量高、范围明确且准备好转换时才可能实现。

对于任何使用LLM的人，重要的是不要只专注于模型本身，而要记住模型只是方程式的一部分。选择正确的数据集通常可以解决一半的问题。

---

原文链接：[How I Use Real-Time Web Data to Build AI Agents That Are 10x Smarter](https://blog.stackademic.com/how-i-use-real-time-web-data-to-build-ai-agents-that-are-10x-smarter-8995115798d6?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处