crawl4ai

GitHub
63.2k 6.5k 简单 18 次阅读 3天前Apache-2.0数据工具Agent
AI 解读 由 AI 自动生成,仅供参考

Crawl4AI 是一款专为大语言模型(LLM)设计的开源网络爬虫与数据提取工具。它的核心使命是将纷繁复杂的网页内容转化为干净、结构化的 Markdown 格式,直接服务于检索增强生成(RAG)、智能体构建及各类数据管道,让 AI 能更轻松地“读懂”互联网。

传统爬虫往往面临反爬机制拦截、动态内容加载困难以及输出格式杂乱等痛点,导致后续数据处理成本高昂。Crawl4AI 通过内置自动化的三级反机器人检测、代理升级策略以及对 Shadow DOM 的深度支持,有效突破了这些障碍。它能智能移除同意弹窗,处理深层链接,并具备长任务崩溃恢复能力,确保数据采集的稳定与高效。

这款工具特别适合开发者、AI 研究人员及数据工程师使用。无论是需要为本地模型构建知识库,还是搭建大规模自动化信息采集流程,Crawl4AI 都提供了极高的可控性与灵活性。作为 GitHub 上备受瞩目的开源项目,它完全免费开放,无需繁琐的注册或昂贵的 API 费用,让用户能够专注于数据价值本身而非采集难题。

使用场景

某金融科技团队需要每日从数十个动态渲染的新闻网站和论坛中抓取最新的市场舆情,并将其清洗为结构化数据供内部大模型进行风险研判。

没有 crawl4ai 时

  • 动态内容获取失败:传统爬虫无法执行 JavaScript,导致大量依赖前端渲染的核心新闻内容抓取为空。
  • 反爬机制阻碍严重:面对网站的机器人检测机制,脚本频繁被拦截或封禁,需耗费大量精力维护代理池和伪装头。
  • 数据清洗成本高昂:抓取的原始 HTML 包含大量导航栏、广告和脚本标签,开发人员需编写复杂的正则表达式进行清洗,耗时且易出错。
  • 大模型对接困难:非结构化的噪声数据直接输入 LLM 会导致幻觉增加,团队需额外开发中间件将 HTML 转换为适合 RAG(检索增强生成)的格式。

使用 crawl4ai 后

  • 完整内容直达:crawl4ai 内置浏览器引擎,自动处理 Shadow DOM 和动态加载,确保所有隐藏或延迟加载的舆情信息完整获取。
  • 智能绕过检测:利用其自带的三层反机器人检测和代理升级机制,稳定突破网站防御,大幅降低请求失败率。
  • 原生 Markdown 输出:crawl4ai 直接将网页转换为干净的 Markdown 格式,自动剔除广告与无关标签,省去了繁琐的后处理步骤。
  • LLM 就绪数据流:输出的数据天然适配大模型上下文窗口,团队可直接将其接入 RAG 管道,显著提升了舆情分析的准确率与响应速度。

crawl4ai 将原本需要数天构建的复杂采集清洗链路简化为几行代码,让团队能专注于核心业务逻辑而非数据基建。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes安装后需运行 'crawl4ai-setup' 进行配置,并建议手动执行 'python -m playwright install --with-deps chromium' 安装浏览器依赖。支持 Docker 部署及通过 Chrome DevTools Protocol 进行远程浏览器控制。v0.8.6 版本因安全问题将 litellm 替换为 unclecode-litellm。
python3.8+
playwright
litellm (或 unclecode-litellm)
fastapi
crawl4ai hero image

快速开始

🚀🤖 Crawl4AI:开源、适合大语言模型的网络爬虫与数据抓取工具。

unclecode%2Fcrawl4ai | Trendshift

GitHub 星标数 GitHub 复刻数

PyPI 版本 Python 版本 下载量 GitHub 赞助者


🚀 Crawl4AI 云 API — 封闭测试版(即将上线)

可靠的大规模网页提取功能,现已构建得比现有任何解决方案都_更具成本效益_。

👉 请在此处申请[early access]
我们将分阶段进行接入,并与早期用户紧密合作。 名额有限。


关注 X 关注 LinkedIn 加入我们的 Discord

Crawl4AI 将网页转化为干净、适合大语言模型的 Markdown 格式,用于 RAG、智能体和数据管道。快速、可控,经过拥有超过 5 万颗星的社区的严格考验。

✨ 查看最新更新 v0.8.6

v0.8.6 新增:安全补丁 — 由于 PyPI 供应链遭到破坏,已将 litellm 替换为 unclecode-litellm。如果您使用的是 v0.8.5,请立即升级。

✨ 最近的 v0.8.5:反机器人检测、Shadow DOM 及 60 多项 Bug 修复!自动三重防机器人检测并可升级代理,支持 Shadow DOM 展平、深度爬取取消、配置默认值 API、移除同意弹窗以及关键安全补丁。发布说明 →

✨ 之前的 v0.8.0:崩溃恢复与预取模式!通过 resume_stateon_state_change 回调实现深度爬取的崩溃恢复,适用于长时间运行的爬取任务。新增 prefetch=True 模式,使 URL 发现速度提升 5–10 倍。发布说明 →

✨ 之前的 v0.7.8:稳定性与 Bug 修复版本!修复了 11 个问题,包括 Docker API 问题、LLM 提取改进、URL 处理修复以及依赖库更新。发布说明 →

🤓 我的个人故事

我从小在父亲的影响下接触 Amstrad 电脑,从此便从未停止过开发。研究生期间,我专攻自然语言处理,并为研究项目构建爬虫。正是在那时,我才深刻体会到数据提取的重要性。

2023 年,我需要一个能将网页转换为 Markdown 的工具。“开源”方案却要求注册账号、获取 API Token,还要支付 16 美元,结果却远未达到预期。于是我怒而行动,几天内就开发出了 Crawl4AI,随后迅速走红。如今,它已成为 GitHub 上获赞最多的爬虫工具。

我将其开源是为了确保可用性,任何人都可以无需门槛地使用它。现在,我正致力于打造一个经济实惠的平台,让每个人都能以低成本运行大规模爬取任务。如果您对此深有共鸣,欢迎加入我们,提供反馈,或者用它来爬取一些精彩的内容。

为什么开发者选择 Crawl4AI
  • 适合大语言模型的输出,智能 Markdown 格式,包含标题、表格、代码及引用提示
  • 实际速度快,异步浏览器池、缓存机制、跳转次数少
  • 完全可控,支持会话、代理、Cookie、用户脚本和钩子
  • 自适应智能,能够学习网站结构模式,只抓取重要内容
  • 随处部署,无需密钥,提供 CLI 和 Docker 支持,兼容云端环境

🚀 快速入门

  1. 安装 Crawl4AI:
# 安装软件包
pip install -U crawl4ai

# 如果需要预发布版本
pip install crawl4ai --pre

# 运行安装后设置
crawl4ai-setup

# 验证安装是否成功
crawl4ai-doctor

如果遇到与浏览器相关的问题,您可以手动安装:

python -m playwright install --with-deps chromium
  1. 使用 Python 运行简单的网页爬取:
import asyncio
from crawl4ai import *

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(
            url="https://www.nbcnews.com/business",
        )
        print(result.markdown)

if __name__ == "__main__":
    asyncio.run(main())
  1. 或者使用新的命令行界面:
# 基础爬取,输出 Markdown 格式
crwl https://www.nbcnews.com/business -o markdown

# 深度爬取,采用 BFS 策略,最多抓取 10 页
crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10

# 使用 LLM 提取特定问题的答案
crwl https://www.example.com/products -q "提取所有产品价格"

💖 支持 Crawl4AI

🎉 赞助计划现已开放! 在为超过 5.1 万名开发者提供支持并经历一年快速发展之后,Crawl4AI 正式推出针对初创企业企业的专属支持计划。成为首批 50 名创始赞助商之一,即可永久铭刻于我们的名人堂。

Crawl4AI 是 GitHub 上最受欢迎的开源网络爬虫工具。您的支持不仅使其保持独立、创新和对社区免费,还能让您直接享受高级权益。

成为赞助商
当前赞助商

🤝 赞助等级

  • 🌱 信仰者(每月5美元) — 加入数据民主化的行列
  • 🚀 构建者(每月50美元) — 优先支持与抢先体验新功能
  • 💼 成长团队(每月500美元) — 双周同步会议与优化协助
  • 🏢 数据基础设施合作伙伴(每月2000美元) — 全面合作及专属支持
    可提供定制化方案 - 详情及联系方式请参阅 SPONSORS.md

为何要赞助?
无速率限制的API。无厂商锁定。在Crawl4AI创建者的直接指导下,构建并掌控您的数据管道。

查看所有等级与权益 →

✨ 功能

📝 Markdown生成
  • 🧹 纯净Markdown:生成格式准确、结构清晰的Markdown文档。
  • 🎯 精炼Markdown:基于启发式过滤,去除噪声和无关内容,便于AI处理。
  • 🔗 引用与参考文献:将页面链接转换为带编号的参考列表,并附上规范的引用格式。
  • 🛠️ 自定义策略:用户可根据特定需求,制定个性化的Markdown生成策略。
  • 📚 BM25算法:采用BM25算法进行核心信息提取,剔除无关内容。
📊 结构化数据提取
  • 🤖 LLM驱动提取:支持所有开源及专有大模型进行结构化数据提取。
  • 🧱 分块策略:实施基于主题、正则表达式或句子级别的分块技术,实现精准内容处理。
  • 🌌 余弦相似度:根据用户查询找到相关的内容块,完成语义提取。
  • 🔎 CSS选择器提取:利用XPath和CSS选择器快速完成基于Schema的数据提取。
  • 🔧 Schema定义:定义自定义Schema,从重复性模式中提取结构化JSON数据。
🌐 浏览器集成
  • 🖥️ 托管浏览器:使用用户自有浏览器,完全掌控,避免被识别为机器人。
  • 🔄 远程浏览器控制:连接Chrome开发者工具协议,实现大规模远程数据提取。
  • 👤 浏览器配置文件:创建并管理持久化配置文件,保存认证状态、Cookie和设置。
  • 🔒 会话管理:保留浏览器状态,供多步骤爬取复用。
  • 🧩 代理支持:无缝连接带有认证的代理,确保安全访问。
  • ⚙️ 全面浏览器控制:修改请求头、Cookie、User-Agent等参数,打造定制化的爬取环境。
  • 🌍 多浏览器支持:兼容Chromium、Firefox和WebKit。
  • 📐 动态视口调整:自动调整浏览器视口以匹配页面内容,确保完整渲染并捕获所有元素。
🔎 爬取与抓取
  • 🖼️ 媒体支持:提取图片、音频、视频以及响应式图片格式,如srcsetpicture
  • 🚀 动态爬取:执行JavaScript代码,等待异步或同步操作完成,从而提取动态内容。
  • 📸 截图:在爬取过程中截取页面截图,用于调试或分析。
  • 📂 原始数据爬取:直接处理原始HTML(raw:)或本地文件(file://)。
  • 🔗 全面链接提取:提取内部链接、外部链接以及嵌入式iframe内容。
  • 🛠️ 可定制钩子:在每个步骤定义钩子,自定义爬取行为(支持字符串和函数两种API)。
  • 💾 缓存机制:对数据进行缓存,提升速度并避免重复抓取。
  • 📄 元数据提取:从网页中获取结构化的元数据。
  • 📡 IFrame内容提取:无缝提取嵌入式iframe中的内容。
  • 🕵️ 懒加载处理:等待图片完全加载,确保不会因懒加载而遗漏内容。
  • 🔄 全页扫描:模拟滚动加载,捕获所有动态内容,特别适用于无限滚动页面。
🚀 部署
  • 🐳 Docker化部署:优化后的Docker镜像搭配FastAPI服务器,轻松部署。
  • 🔑 安全认证:内置JWT令牌认证,保障API安全性。
  • 🔄 API网关:一键部署,配备安全令牌认证,适用于基于API的工作流。
  • 🌐 可扩展架构:专为大规模生产设计,优化服务器性能。
  • ☁️ 云部署:针对主流云平台提供开箱即用的部署配置。
🎯 附加功能
  • 🕶️ 隐身模式:通过模拟真实用户行为,避免被检测为机器人。
  • 🏷️ 标签内容提取:根据自定义标签、头部信息或元数据细化爬取范围。
  • 🔗 链接分析:提取并分析所有链接,深入探索数据。
  • 🛡️ 错误处理:强大的错误管理机制,确保流程顺畅运行。
  • 🔐 CORS与静态服务:支持基于文件系统的缓存及跨域请求。
  • 📖 清晰文档:简化并更新的指南,方便新手入门及高级用户使用。
  • 🙌 社区认可:公开感谢贡献者及Pull Request,增强透明度。

立即试用!

✨ 在此玩转 Open In Colab

✨ 访问我们的 文档网站

安装 🛠️

Crawl4AI提供灵活的安装选项,满足不同使用场景的需求。您可以通过Python包或Docker进行安装。

🐍 使用pip

请选择最适合您的安装方式:

基础安装

适用于基本的网页爬取任务:

pip install crawl4ai
crawl4ai-setup # 设置浏览器

默认情况下,这将安装Crawl4AI的异步版本,使用Playwright进行网页爬取。

👉 注意:安装Crawl4AI时,crawl4ai-setup应自动安装并配置Playwright。但如果遇到Playwright相关问题,您可以尝试以下方法手动安装:

  1. 通过命令行:

    playwright install
    
  2. 如果上述方法无效,请尝试更具体的命令:

    python -m playwright install chromium
    

后一种方法在某些情况下更为可靠。


同步版本安装

同步版本已弃用,未来版本中将被移除。如果您需要使用Selenium的同步版本:

pip install crawl4ai[sync]

开发安装

对于计划修改源代码的贡献者:

git clone https://github.com/unclecode/crawl4ai.git
cd crawl4ai
pip install -e .                    # 以可编辑模式进行基础安装

安装可选功能:

pip install -e ".[torch]"           # 包含 PyTorch 功能
pip install -e ".[transformer]"     # 包含 Transformer 功能
pip install -e ".[cosine]"          # 包含余弦相似度功能
pip install -e ".[sync]"            # 包含同步爬取(Selenium)功能
pip install -e ".[all]"             # 安装所有可选功能
🐳 Docker 部署

🚀 现已可用! 我们全新设计的 Docker 实现正式上线!这一新方案让部署比以往更加高效、无缝。

新 Docker 特性

新版 Docker 实现包括:

  • 实时监控仪表板,提供系统运行指标和浏览器池状态的实时可视化
  • 浏览器池化,支持页面预热以提升响应速度
  • 交互式 Playground,用于测试和生成请求代码
  • MCP 集成,可直接连接到 Claude Code 等 AI 工具
  • 全面的 API 端点,涵盖 HTML 提取、截图、PDF 生成以及 JavaScript 执行等功能
  • 多架构支持,自动检测 AMD64/ARM64 架构
  • 资源优化,改进了内存管理

快速入门

# 拉取并运行最新版本
docker pull unclecode/crawl4ai:latest
docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g unclecode/crawl4ai:latest

# 访问监控仪表板:http://localhost:11235/dashboard
# 或访问 Playground:http://localhost:11235/playground

快速测试

运行一个快速测试(两种 Docker 方案均适用):

import requests

# 提交一个爬取任务
response = requests.post(
    "http://localhost:11235/crawl",
    json={"urls": ["https://example.com"], "priority": 10}
)
if response.status_code == 200:
    print("爬取任务提交成功。")
    
if "results" in response.json():
    results = response.json()["results"]
    print("爬取任务已完成。结果如下:")
    for result in results:
        print(result)
else:
    task_id = response.json()["task_id"]
    print(f"爬取任务已提交。任务 ID:{task_id}。")
    result = requests.get(f"http://localhost:11235/task/{task_id}")

更多示例请参阅我们的 Docker 示例。如需高级配置、监控功能及生产环境部署,请参考我们的 自托管指南


🔬 高级使用示例 🔬

您可以在 docs/examples 目录中查看项目结构。那里提供了丰富的示例,以下分享一些热门用法。

📝 基于 Clean 和 Fit Markdown 的启发式 Markdown 生成
import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode
from crawl4ai.content_filter_strategy import PruningContentFilter, BM25ContentFilter
from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator

async def main():
    browser_config = BrowserConfig(
        headless=True,  
        verbose=True,
    )
    run_config = CrawlerRunConfig(
        cache_mode=CacheMode.ENABLED,
        markdown_generator=DefaultMarkdownGenerator(
            content_filter=PruningContentFilter(threshold=0.48, threshold_type="fixed", min_word_threshold=0)
        ),
        # markdown_generator=DefaultMarkdownGenerator(
        #     content_filter=BM25ContentFilter(user_query="WHEN_WE_FOCUS_BASED_ON_A_USER_QUERY", bm25_threshold=1.0)
        # ),
    )
    
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result = await crawler.arun(
            url="https://docs.micronaut.io/4.9.9/guide/",
            config=run_config
        )
        print(len(result.markdown.raw_markdown))
        print(len(result.markdown.fit_markdown))

if __name__ == "__main__":
    asyncio.run(main())
🖥️ 无需 LLM 执行 JavaScript 并提取结构化数据
import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode
from crawl4ai import JsonCssExtractionStrategy
import json

async def main():
    schema = {
    "name": "KidoCode Courses",
    "baseSelector": "section.charge-methodology .w-tab-content > div",
    "fields": [
        {
            "name": "section_title",
            "selector": "h3.heading-50",
            "type": "text",
        },
        {
            "name": "section_description",
            "selector": ".charge-content",
            "type": "text",
        },
        {
            "name": "course_name",
            "selector": ".text-block-93",
            "type": "text",
        },
        {
            "name": "course_description",
            "selector": ".course-content-text",
            "type": "text",
        },
        {
            "name": "course_icon",
            "selector": ".image-92",
            "type": "attribute",
            "attribute": "src"
        }
    ]
}

    extraction_strategy = JsonCssExtractionStrategy(schema, verbose=True)

    browser_config = BrowserConfig(
        headless=False,
        verbose=True
    )
    run_config = CrawlerRunConfig(
        extraction_strategy=extraction_strategy,
        js_code=["""(async () => {const tabs = document.querySelectorAll("section.charge-methodology .tabs-menu-3 > div");for(let tab of tabs) {tab.scrollIntoView();tab.click();await new Promise(r => setTimeout(r, 500));}})();"""],
        cache_mode=CacheMode.BYPASS
    )
        
    async with AsyncWebCrawler(config=browser_config) as crawler:
        
        result = await crawler.arun(
            url="https://www.kidocode.com/degrees/technology",
            config=run_config
        )

        companies = json.loads(result.extracted_content)
        print(f"成功提取了 {len(companies)} 家公司")
        print(json.dumps(companies[0], indent=2))


if __name__ == "__main__":
    asyncio.run(main())
📚 使用 LLM 提取结构化数据
import os
import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode, LLMConfig
from crawl4ai import LLMExtractionStrategy
from pydantic import BaseModel, Field

class OpenAIModelFee(BaseModel):
    model_name: str = Field(..., description="Name of the OpenAI model.")
    input_fee: str = Field(..., description="Fee for input token for the OpenAI model.")
    output_fee: str = Field(..., description="Fee for output token for the OpenAI model.")

async def main():
    browser_config = BrowserConfig(verbose=True)
    run_config = CrawlerRunConfig(
        word_count_threshold=1,
        extraction_strategy=LLMExtractionStrategy(
            # 在这里你可以使用 Litellm 库支持的任何提供商,例如:ollama/qwen2
            # provider="ollama/qwen2", api_token="no-token", 
            llm_config = LLMConfig(provider="openai/gpt-4o", api_token=os.getenv('OPENAI_API_KEY')), 
            schema=OpenAIModelFee.schema(),
            extraction_type="schema",
            instruction="""从抓取的内容中提取所有提到的模型名称及其输入和输出 token 的费用。
            不要遗漏整个内容中的任何模型。提取出的一个模型 JSON 格式应如下所示:
            {"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}."""
        ),            
        cache_mode=CacheMode.BYPASS,
    )
    
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result = await crawler.arun(
            url='https://openai.com/api/pricing/',
            config=run_config
        )
        print(result.extracted_content)

if __name__ == "__main__":
    asyncio.run(main())
🤖 使用自定义用户配置文件的浏览器
import os, sys
from pathlib import Path
import asyncio, time
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode

async def test_news_crawl():
    # 创建一个持久化的用户数据目录
    user_data_dir = os.path.join(Path.home(), ".crawl4ai", "browser_profile")
    os.makedirs(user_data_dir, exist_ok=True)

    browser_config = BrowserConfig(
        verbose=True,
        headless=True,
        user_data_dir=user_data_dir,
        use_persistent_context=True,
    )
    run_config = CrawlerRunConfig(
        cache_mode=CacheMode.BYPASS
    )
    
    async with AsyncWebCrawler(config=browser_config) as crawler:
        url = "ADDRESS_OF_A_CHALLENGING_WEBSITE"
        
        result = await crawler.arun(
            url,
            config=run_config,
            magic=True,
        )
        
        print(f"成功抓取了 {url}")
        print(f"内容长度: {len(result.markdown)}")

💡 小贴士: 有些网站可能会使用基于 CAPTCHA 的验证机制来防止自动化访问。如果您的工作流程遇到此类挑战,您可以选择集成第三方 CAPTCHA 处理服务,例如 CapSolver。他们支持 reCAPTCHA v2/v3、Cloudflare Turnstile、Challenge、AWS WAF 等。请确保您的使用符合目标网站的服务条款和相关法律法规。

✨ 最新更新

版本 0.8.6 — 安全补丁:litellm 供应链修复

由于原始包受到 PyPI 供应链攻击的影响,已将 litellm 依赖替换为 unclecode-litellm。如果您使用的是 v0.8.5 或更早版本,请立即升级。

pip install -U crawl4ai
版本 0.8.5 发布亮点 - 反机器人检测、Shadow DOM 处理及 60 多项 Bug 修复

这是我们自 v0.8.0 以来最大的一次发布。新增反机器人检测与代理升级功能、Shadow DOM 展平处理、深度爬虫取消功能,以及超过 60 项 Bug 修复。

  • 🛡️ 反机器人检测与代理升级:

    • 三层检测机制:识别已知厂商、通用拦截指标、结构完整性检查
    • 自动重试功能,结合代理链和回退抓取函数
    from crawl4ai import CrawlerRunConfig
    from crawl4ai.async_configs import ProxyConfig
    
    config = CrawlerRunConfig(
        proxy_config=[ProxyConfig.DIRECT, ProxyConfig(server="http://my-proxy:8080")],
        max_retries=2,
        fallback_fetch_function=my_web_unlocker,
    )
    
  • 🌑 Shadow DOM 展平处理:

    • 提取隐藏在 Shadow DOM 组件内的内容
    config = CrawlerRunConfig(flatten_shadow_dom=True)
    
  • 🛑 深度爬虫取消功能:

    • 可通过 cancel() 方法或 should_cancel 回调函数优雅地停止长时间运行的爬虫
    • 适用于 BFS、DFS 和 BestFirst 策略
  • ⚙️ 配置默认值 API:

    • 在 BrowserConfig 和 CrawlerRunConfig 中新增 set_defaults()get_defaults()reset_defaults()
  • 🔒 重要安全修复:

    • 移除了 Docker /crawl 端点中通过反序列化导致的 RCE 漏洞,并添加了白名单机制
    • 升级到 Redis 7.2.7 版本,修复了 CVE-2025-49844 漏洞(CVSS 评分 10.0)
  • 60+ Bug 修复:涵盖浏览器管理、代理、深度爬虫、内容提取、命令行工具和 Docker 等方面

完整 v0.8.5 发布说明 →

版本 0.8.0 发布亮点 - 崩溃恢复与预取模式

本次发布引入了深度爬虫的崩溃恢复功能、用于快速发现 URL 的预取模式,以及针对 Docker 部署的重要安全修复。

  • 🔄 深度爬虫崩溃恢复:

    • on_state_change 回调会在每次处理完一个 URL 后触发,实现实时状态保存
    • resume_state 参数可用于从保存的检查点继续爬取
    • 支持 JSON 序列化的状态存储,便于存入 Redis 或数据库
    • 适用于 BFS、DFS 和 Best-First 策略
    from crawl4ai.deep_crawling import BFSDeepCrawlStrategy
    
    strategy = BFSDeepCrawlStrategy(
        max_depth=3,
        resume_state=saved_state,  # 从检查点继续
        on_state_change=save_to_redis,  # 每处理完一个 URL 调用
    )
    
  • ⚡ 预取模式,加速 URL 发现:

    • 设置 prefetch=True 可跳过 Markdown 处理、内容提取和媒体处理
    • 速度比完整处理快 5 到 10 倍
    • 非常适合两阶段爬取:先发现 URL,再有选择地进行处理
    config = CrawlerRunConfig(prefetch=True)
    result = await crawler.arun("https://example.com", config=config)
    # 只返回 HTML 和链接,不生成 Markdown
    
  • 🔒 安全修复(Docker API):

    • 默认禁用钩子功能(CRAWL4AI_HOOKS_ENABLED=false
    • 在 API 端点上阻止 file:// URL,以防止 LFI 攻击
    • 从钩子执行沙盒中移除了 __import__ 函数

完整 v0.8.0 发布说明 →

版本 0.7.8 发布亮点 - 稳定性与 Bug 修复版

本次发布专注于稳定性,修复了社区反馈的 11 个问题。没有新增功能,但显著提升了系统的可靠性。

  • 🐳 Docker API 修复:

    • 修复了深度爬虫请求中 ContentRelevanceFilter 的反序列化问题 (#1642)
    • 修复了 BrowserConfig.to_dict()ProxyConfig 的 JSON 序列化问题 (#1629)
    • 修复了 Docker 镜像中 .cache 文件夹的权限问题 (#1638)
  • 🤖 LLM 提取功能改进

    • 可配置的速率限制退避机制,新增 LLMConfig 参数 (#1269):
      from crawl4ai import LLMConfig
      
      config = LLMConfig(
          provider="openai/gpt-4o-mini",
          backoff_base_delay=5,           # 第一次重试等待5秒
          backoff_max_attempts=5,          # 最多重试5次
          backoff_exponential_factor=3     # 每次重试延迟时间乘以3
      )
      
    • LLMExtractionStrategy 支持 HTML 输入格式 (#1178):
      from crawl4ai import LLMExtractionStrategy
      
      strategy = LLMExtractionStrategy(
          llm_config=config,
          instruction="提取表格数据",
          input_format="html"  # 现在支持:"html"、"markdown"、"fit_markdown"
      )
      
    • 修复了原始 HTML URL 变量问题——提取策略现在接收 "Raw HTML" 而不是 HTML Blob (#1116)
  • 🔗 URL 处理

    • 修复了 JavaScript 重定向后的相对 URL 解析问题 (#1268)
    • 修复了提取代码中导入语句的格式问题 (#1181)
  • 📦 依赖项更新

    • 用 pypdf 替代已弃用的 PyPDF2 (#1412)
    • Pydantic v2 ConfigDict 兼容性——不再出现弃用警告 (#678)
  • 🧠 AdaptiveCrawler

    • 修复了查询扩展功能,使其真正使用 LLM 而不是硬编码的模拟数据 (#1621)

完整 v0.7.8 发行说明 →

版本 0.7.7 发布亮点——自托管与监控更新
  • 📊 实时监控仪表板:交互式 Web UI,提供系统实时指标和浏览器池状态可视化

    # 访问监控仪表板
    # 地址:http://localhost:11235/dashboard
    
    # 实时指标包括:
    - 系统健康状况(CPU、内存、网络、运行时间)
    - 当前活动及已完成请求跟踪
    - 浏览器池管理(永久/热/冷)
    - 清理任务事件
    - 错误监控,附带完整上下文信息
    
  • 🔌 全面监控 API:完整的 REST API,用于程序化访问所有监控数据

    import httpx
    
    async with httpx.AsyncClient() as client:
        # 系统健康状况
        health = await client.get("http://localhost:11235/monitor/health")
    
        # 请求跟踪
        requests = await client.get("http://localhost:11235/monitor/requests")
    
        # 浏览器池状态
        browsers = await client.get("http://localhost:11235/monitor/browsers")
    
        # 端点统计信息
        stats = await client.get("http://localhost:11235/monitor/endpoints/stats")
    
  • ⚡ WebSocket 实时流:每 2 秒推送一次实时更新,适用于自定义仪表板

  • 🔥 智能浏览器池:三层架构(永久/热/冷),具备自动提升和清理功能

  • 🧹 清洁系统:自动资源管理,并记录事件日志

  • 🎮 控制操作:可通过 API 手动管理浏览器(终止、重启、清理)

  • 📈 生产级指标:6 项关键指标,助力卓越运营,并集成 Prometheus

  • 🐛 重要错误修复

    • 修复了异步 LLM 提取阻塞问题 (#1055)
    • 增强了 DFS 深度爬取策略 (#1607)
    • 修复了 AsyncUrlSeeder 中站点地图解析问题 (#1598)
    • 解决了浏览器视口配置问题 (#1495)
    • 修复了 CDP 定时问题,并引入指数退避机制 (#1528)
    • 更新了 pyOpenSSL 安全补丁(≥25.3.0)

完整 v0.7.7 发行说明 →

版本 0.7.5 发布亮点——Docker 钩子与安全更新
  • 🔧 Docker 钩子系统:通过用户提供的 Python 函数,在 8 个关键节点实现完整管道自定义

  • ✨ 基于函数的钩子 API(新):可将钩子编写为常规 Python 函数,享受完整的 IDE 支持:

    from crawl4ai import hooks_to_string
    from crawl4ai.docker_client import Crawl4aiDockerClient
    
    # 定义常规 Python 函数作为钩子
    async def on_page_context_created(page, context, **kwargs):
        """阻止加载图片以加快爬取速度"""
        await context.route("**/*.{png,jpg,jpeg,gif,webp}", lambda route: route.abort())
        await page.set_viewport_size({"width": 1920, "height": 1080})
        return page
    
    async def before_goto(page, context, url, **kwargs):
        """添加自定义请求头"""
        await page.set_extra_http_headers({'X-Crawl4AI': 'v0.7.5'})
        return page
    
    # 方法一:使用 hooks_to_string() 工具生成 REST API 代码
    hooks_code = hooks_to_string({
        "on_page_context_created": on_page_context_created,
        "before_goto": before_goto
    })
    
    # 方法二:推荐使用 Docker 客户端自动转换
    client = Crawl4aiDockerClient(base_url="http://localhost:11235")
    results = await client.crawl(
        urls=["https://httpbin.org/html"],
        hooks={
            "on_page_context_created": on_page_context_created,
            "before_goto": before_goto
        }
    )
    # ✓ 完整的 IDE 支持、类型检查及代码复用!
    
  • 🤖 增强的 LLM 集成:支持自定义提供商,可控制温度并配置基础 URL

  • 🔒 HTTPS 保留:通过 preserve_https_for_internal_links=True 实现内部链接的安全处理

  • 🐍 Python 3.10+ 支持:采用现代语言特性,性能进一步提升

  • 🛠️ 错误修复:解决了社区反馈的多个问题,包括 URL 处理、JWT 认证和代理配置等

完整 v0.7.5 发行说明 →

版本 0.7.4 发布亮点——智能表格提取与性能优化
  • 🚀 LLMTableExtraction:革命性的表格提取功能,采用智能分块技术,可处理超大表格:

    from crawl4ai import LLMTableExtraction, LLMConfig
    
    # 配置智能表格提取策略
    table_strategy = LLMTableExtraction(
        llm_config=LLMConfig(provider="openai/gpt-4.1-mini"),
        enable_chunking=True,           # 处理超大表格
        chunk_token_threshold=5000,     # 智能分块阈值
        overlap_threshold=100,          # 保持分块间的上下文连贯性
        extraction_type="structured"    # 输出结构化数据
    )
    
    config = CrawlerRunConfig(table_extraction_strategy=table_strategy)
    result = await crawler.arun("https://complex-tables-site.com", config=config)
    
    # 表格会自动分块、处理并合并
    for table in result.tables:
        print(f"提取的表格:{len(table['data'])} 行")
    
  • ⚡ 调度器错误修复:修复了 arun_many 中针对快速完成任务的顺序处理瓶颈

  • 🧹 内存管理重构:将内存相关工具整合到主工具模块中,使架构更加清晰

  • 🔧 浏览器管理器修复:通过线程安全锁解决了并发页面创建中的竞态条件

  • 🔗 高级 URL 处理:更好地处理 raw:// URL 以及 base 标签的链接解析

  • 🛡️ 增强的代理支持:灵活的代理配置,同时支持字典和字符串格式

完整 v0.7.4 发布说明 →

v0.7.3 版本亮点 - 多配置智能更新
  • 🕵️ 无痕浏览器支持:绕过复杂的机器人检测系统:

    from crawl4ai import AsyncWebCrawler, BrowserConfig
    
    browser_config = BrowserConfig(
        browser_type="undetected",  # 使用无痕 Chrome 浏览器
        headless=True,              # 可以无头运行并保持隐身
        extra_args=[
            "--disable-blink-features=AutomationControlled",
            "--disable-web-security"
        ]
    )
    
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result = await crawler.arun("https://protected-site.com")
    # 成功绕过 Cloudflare、Akamai 和自定义机器人检测
    
  • 🎨 多 URL 配置:为同一批次中的不同 URL 模式采用不同策略:

from crawl4ai import CrawlerRunConfig, MatchMode, CacheMode
  
  configs = [
      # 文档站点 - 积极缓存
      CrawlerRunConfig(
          url_matcher=["*docs*", "*documentation*"],
          cache_mode=CacheMode.WRITE_ONLY,
          markdown_generator_options={"include_links": True}
      ),
      
      # 新闻/博客站点 - 获取最新内容
      CrawlerRunConfig(
          url_matcher=lambda url: 'blog' in url or 'news' in url,
          cache_mode=CacheMode.BYPASS
      ),
      
      # 其他情况的默认配置
      CrawlerRunConfig()
  ]
  
  results = await crawler.arun_many(urls, config=configs)
  # 每个 URL 都会自动获得最合适的配置
  • 🧠 内存监控:在爬取过程中跟踪并优化内存使用:

    from crawl4ai.memory_utils import MemoryMonitor
    
    monitor = MemoryMonitor()
    monitor.start_monitoring()
    
    results = await crawler.arun_many(large_url_list)
    
    report = monitor.get_report()
    print(f"峰值内存:{report['peak_mb']:.1f} MB")
    print(f"效率:{report['efficiency']:.1f}%")
    # 获取优化建议
    
  • 📊 增强的表格提取:直接将网页表格转换为 DataFrame:

    result = await crawler.arun("https://site-with-tables.com")
    
    // 新方式 - 直接访问表格
    if result.tables:
        import pandas as pd
        for table in result.tables:
            df = pd.DataFrame(table['data'])
            print(f"表格:{df.shape[0]} 行 × {df.shape[1]} 列")
    
  • 💰 GitHub 赞助:项目可持续发展的四层赞助体系

  • 🐳 Docker LLM 灵活性:可通过环境变量配置提供商

完整 v0.7.3 发布说明 →

v0.7.0 版本亮点 - 自适应智能更新
  • 🧠 自适应爬取:您的爬虫现在可以自动学习并适应网站模式:

    config = AdaptiveConfig(
        confidence_threshold=0.7, # 停止爬取的最低置信度
        max_depth=5, # 最大爬取深度
        max_pages=20, # 最大爬取页数
        strategy="statistical"
    )
    
    async with AsyncWebCrawler() as crawler:
        adaptive_crawler = AdaptiveCrawler(crawler, config)
        state = await adaptive_crawler.digest(
            start_url="https://news.example.com",
            query="latest news content"
        )
    # 爬虫会随着时间推移学习模式并改进提取效果
    
  • 🌊 虚拟滚动支持:从无限滚动页面中完整提取内容:

    scroll_config = VirtualScrollConfig(
        container_selector="[data-testid='feed']",
        scroll_count=20,
        scroll_by="container_height",
        wait_after_scroll=1.0
    )
    
    result = await crawler.arun(url, config=CrawlerRunConfig(
        virtual_scroll_config=scroll_config
    ))
    
  • 🔗 智能链接分析:三层评分系统实现智能链接优先级排序:

    link_config = LinkPreviewConfig(
        query="machine learning tutorials",
        score_threshold=0.3,
        concurrent_requests=10
    )
    
    result = await crawler.arun(url, config=CrawlerRunConfig(
        link_preview_config=link_config,
        score_links=True
    ))
    # 链接按相关性和质量排序
    
  • 🎣 异步 URL 种子生成器:可在几秒钟内发现数千个 URL:

    seeder = AsyncUrlSeeder(SeedingConfig(
        source="sitemap+cc",
        pattern="*/blog/*",
        query="python tutorials",
        score_threshold=0.4
    ))
    
    urls = await seeder.discover("https://example.com")
    
  • ⚡ 性能提升:通过优化资源管理和内存效率,速度最高可提升至 3 倍

更多详细信息请参阅我们的 v0.7.0 发布说明,或查看 CHANGELOG

Crawl4AI 的版本号规则

Crawl4AI 遵循标准的 Python 版本号命名规范(PEP 440),以便用户了解每个版本的稳定性和功能特性。

📈 版本号详解

我们的版本号采用 MAJOR.MINOR.PATCH 格式(例如:0.4.3)。

预发布版本

我们使用不同的后缀来表示开发阶段:

  • dev(0.4.3dev1):开发版本,不稳定
  • a(0.4.3a1):Alpha 版本,包含实验性功能
  • b(0.4.3b1):Beta 版本,功能已完善但需测试
  • rc(0.4.3):发布候选版本,可能是最终版本

安装

  • 正常安装(稳定版本):

    pip install -U crawl4ai
    
  • 安装预发布版本:

    pip install crawl4ai --pre
    
  • 安装特定版本:

    pip install crawl4ai==0.4.3b1
    

为什么使用预发布版本?

我们使用预发布版本是为了:

  • 在实际场景中测试新功能
  • 在正式发布前收集反馈
  • 确保生产环境的稳定性
  • 让早期使用者尝试新功能

对于生产环境,我们建议使用稳定版本。如果需要测试新功能,可以使用 --pre 标志来安装预发布版本。

📖 文档与路线图

🚨 文档更新提醒:我们将于下周进行一次大规模的文档改版,以反映最近的更新和改进。敬请期待更加全面和最新的指南!

如需查看当前文档,包括安装说明、高级功能和 API 参考,请访问我们的文档网站

要了解我们的开发计划和即将推出的功能,请访问我们的路线图

📈 开发待办事项
  • 0. 图形爬虫:使用图搜索算法实现智能网站遍历,用于全面提取嵌套页面
  • 1. 基于问题的爬虫:通过自然语言驱动的网页发现与内容提取
  • 2. 知识最优爬虫:在最小化数据提取的同时最大化知识获取的智能爬取
  • 3. 智能体式爬虫:用于复杂多步骤爬取操作的自主系统
  • 4. 自动化模式生成器:将自然语言转换为提取模式
  • 5. 领域特定爬虫:针对常见平台(学术、电商等)预配置的提取工具
  • 6. 网页嵌入索引:用于已爬取内容的语义搜索基础设施
  • 7. 交互式 Playground:带有 AI 辅助的 Web UI,用于测试和比较策略
  • 8. 性能监控器:实时洞察爬虫运行情况
  • 9. 云集成:跨云服务商的一键部署解决方案
  • 10. 赞助计划:分层权益的结构化支持体系
  • 11. 教育内容:《如何爬取》视频系列及互动教程

🤝 贡献

我们欢迎开源社区的贡献。请查看我们的贡献指南,以获取更多信息。

我会帮助修改许可证部分并添加徽章。对于半色调效果,这里有一个包含该效果的版本:

以下是更新后的许可证部分:

📄 许可证与署名

本项目采用 Apache License 2.0 许可证,建议通过以下徽章进行署名。详细信息请参阅Apache 2.0 许可证文件。

署名要求

在使用 Crawl4AI 时,您必须包含以下署名方式之一:

📈 1. 徽章署名(推荐) 将以下任一徽章添加到您的 README、文档或网站中:
主题 徽章
迪斯科主题(动画) Powered by Crawl4AI
夜景主题(暗黑霓虹) Powered by Crawl4AI
经典暗黑主题 Powered by Crawl4AI
经典亮色主题 Powered by Crawl4AI

添加徽章的 HTML 代码:

<!-- 迪斯科主题(动画) -->
<a href="https://github.com/unclecode/crawl4ai">
  <img src="https://raw.githubusercontent.com/unclecode/crawl4ai/main/docs/assets/powered-by-disco.svg" alt="Powered by Crawl4AI" width="200"/>
</a>

<!-- 夜景主题(暗黑霓虹) -->
<a href="https://github.com/unclecode/crawl4ai">
  <img src="https://raw.githubusercontent.com/unclecode/crawl4ai/main/docs/assets/powered-by-night.svg" alt="Powered by Crawl4AI" width="200"/>
</a>

<!-- 经典暗黑主题 -->
<a href="https://github.com/unclecode/crawl4ai">
  <img src="https://raw.githubusercontent.com/unclecode/crawl4ai/main/docs/assets/powered-by-dark.svg" alt="Powered by Crawl4AI" width="200"/>
</a>

<!-- 经典亮色主题 -->
<a href="https://github.com/unclecode/crawl4ai">
  <img src="https://raw.githubusercontent.com/unclecode/crawl4ai/main/docs/assets/powered-by-light.svg" alt="Powered by Crawl4AI" width="200"/>
</a>

<!-- 简单盾牌徽章 -->
<a href="https://github.com/unclecode/crawl4ai">
  <img src="https://img.shields.io/badge/Powered%20by-Crawl4AI-blue?style=flat-square" alt="Powered by Crawl4AI"/>
</a>
📖 2. 文本署名 在您的文档中添加以下文字: ``` 本项目使用 Crawl4AI(https://github.com/unclecode/crawl4ai)进行网页数据提取。 ```

📚 引用

如果您在研究或项目中使用了 Crawl4AI,请引用:

@software{crawl4ai2024,
  author = {UncleCode},
  title = {Crawl4AI: 开源 LLM 友好型网络爬虫与抓取工具},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub 仓库},
  howpublished = {\url{https://github.com/unclecode/crawl4ai}},
  commit = {请使用您正在使用的提交哈希值}
}

文本引用格式:

UncleCode. (2024). Crawl4AI:开源 LLM 友好型网络爬虫与抓取工具 [计算机软件]。
GitHub. https://github.com/unclecode/crawl4ai

📧 联系方式

如有任何问题、建议或反馈,欢迎随时联系我们:

祝您爬取愉快!🕸️🚀

🗾 使命

我们的使命是通过将数字足迹转化为结构化、可交易的资产,释放个人和企业数据的价值。Crawl4AI 为个人和组织提供开源工具,帮助他们提取和结构化数据,从而推动共享数据经济的发展。

我们设想一个未来,在这个未来中,人工智能将由真实的人类知识驱动,确保数据创造者能够直接从其贡献中受益。通过 democratizing 数据并促进道德共享,我们正在为真正的 AI 进步奠定基础。

🔑 关键机遇
  • 数据资本化:将数字足迹转化为可衡量的价值资产。
  • 真实的人工智能数据:为 AI 系统提供真正的人类见解。
  • 共享经济:创建一个公平的数据市场,使数据创造者受益。
🚀 发展路径
  1. 开源工具:由社区驱动的透明数据提取平台。
  2. 数字资产结构化:用于组织和评估数字知识的工具。
  3. 道德数据市场:一个安全、公平的平台,用于交换结构化数据。

更多详情,请参阅我们的完整使命宣言

🌟 当前赞助商

🏢 企业赞助商与合作伙伴

我们的企业赞助商和技术合作伙伴助力 Crawl4AI 扩展规模,为生产级数据管道提供支持。

公司 简介 赞助级别
Thor Data 使用 Thordata 可确保与任何 AI/ML 工作流和数据基础设施无缝兼容,在 99.9% 的正常运行时间内大规模获取网络数据,并享有专人客户支持。 🥈 银牌
nstproxy NstProxy 是一家值得信赖的代理服务提供商,拥有超过 1.1 亿个真实住宅 IP 地址,可按城市级别精准定位,提供 99.99% 的正常运行时间,且价格低廉,仅需 0.1 美元/GB,带来无与伦比的稳定性、扩展性和成本效益。 🥈 银牌
Scrapeless Scrapeless 提供用于爬取、自动化和 AI 代理的生产级基础设施,包括抓取浏览器、四种代理类型以及通用抓取 API。 🥈 银牌
Capsolver 基于 AI 的验证码破解服务。支持所有主流验证码类型,包括 reCAPTCHA、Cloudflare 等。 🥉 铜牌
DataSync 帮助工程师和采购人员在几秒钟内查找、比较并采购电子和工业零部件,提供规格、价格、交货周期及替代方案。 🥇 金牌
Kidocode

KidoCode

Kidocode 是一所面向 5 至 18 岁儿童的混合型技术和创业学校,提供线上和校内两种教育模式。 🥇 金牌
Aleph null 新加坡的 Aleph Null 是亚洲领先的教育科技中心,致力于以学生为中心、由 AI 驱动的教育,帮助学习者掌握在快速变化的世界中茁壮成长所需的工具。 🥇 金牌

🧑‍🤝 个人赞助商

衷心感谢我们的个人支持者!每一份捐助都帮助我们延续并蓬勃发展开源使命!

想加入他们吗?赞助 Crawl4AI →

星标历史

星标历史图表

版本历史

v0.8.52026/03/18
v0.8.02026/01/16
v0.7.82025/12/09
v0.7.72025/11/14
v0.7.62025/10/22
v0.7.52025/10/21
v0.7.42025/08/17
v0.7.32025/08/09
v0.7.22025/07/25
v0.7.12025/07/17
v0.7.02025/07/12
v0.6.32025/05/12
vr0.6.02025/04/22
v0.5.0.post12025/03/04

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架