Skip to content

Serdipity-w/web_reader_demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LCEL Web Reader Demo

一个可直接运行的“LCEL 读取在线网页并总结”的小项目。它使用 LangChain v1 的 LCEL(管道表达式)来组合:抓取网页 → 提取文本 → 分块处理 → 并行总结 → 聚合输出,并把结果保存为 JSON 和 Markdown。

功能概览

  • 通过 httpx 抓取指定 URL 的网页 HTML。
  • 使用 BeautifulSoup 提取正文文本(去除脚本/样式标签)。
  • 将长文本按固定长度分块,避免一次性超长输入导致模型错误。
  • 使用 LCEL 的 .map() 并行处理每个分块,生成摘要要点与短总结。
  • 聚合所有分块的结果,输出:页面标题、URL、总摘要、要点列表、原文长度等。
  • 将输出保存到 output/output.jsonoutput/output.md

环境准备

1. 创建并激活虚拟环境

本项目使用 Python 虚拟环境来管理依赖,避免与系统 Python 包冲突。

# 创建虚拟环境
python3 -m venv .venv

# 激活虚拟环境(macOS/Linux)
source .venv/bin/activate

# 激活虚拟环境(Windows)
.venv\Scripts\activate

激活后,命令行提示符前会显示 (.venv),表示已进入虚拟环境。

2. 安装依赖

pip install -r requirements.txt

3. 配置 API 密钥(任选其一)

  • 方式 A:在系统环境中设置:
    export OPENAI_API_KEY="你的密钥"
    # 如果使用兼容 OpenAI 的第三方端点,可能还需要:
    export OPENAI_BASE_URL="https://你的服务/v1"
    export LLM_MODEL="gpt-4o"  # 或第三方服务支持的模型名
  • 方式 B:复制 .env.example.env 并填写:
    OPENAI_API_KEY=sk-xxxx
    OPENAI_BASE_URL=https://你的服务/v1
    LLM_MODEL=gpt-4o
    或者使用本仓库统一命名(将自动映射为 OPENAI_*):
    LLM_API_KEY=sk-xxxx
    LLM_BASE_URL=https://你的服务/v1
    LLM_MODEL=gpt-4o

运行

source .venv/bin/activate
# 基本运行
python main.py --url https://example.com

# 如果遇到 403,可尝试自定义浏览器 UA 或放宽 SSL
python main.py --url https://chatgpt.com \
  --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
  --insecure

执行成功后,会在 output/ 目录生成:

  • output.json:结构化结果
  • output.md:可读性更好的摘要 Markdown

主要技术点(简述)

  • LCEL 管道表达式:prompt | llm | parser,可读、可组合、易维护。
  • .map():对列表输入逐项运行同一个链,适合对分块并行总结。
  • RunnableLambda:用纯 Python 函数封装抓取与解析等非 LLM 步骤。
  • RunnableParallel:并行组合多个子任务输出为一个字典。

注意事项

  • 如果你的服务不支持 gpt-4o,请在 .env 或环境变量中把 LLM_MODEL 设置为该服务支持的模型名。
  • 某些站点(如启用更严格的防爬策略)可能直接返回 403 Forbidden。此时可:
    • 使用 --user-agent 伪装常见浏览器 UA;
    • 搭配 --insecure 放宽 SSL 验证并开启 http 回退;
    • 如仍失败,建议更换为开放访问的 URL(如 https://www.wikipedia.org/)。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages