基於大型語言模型爬蟲專案Crawl4AI介紹

PetterLiu發表於2024-10-11

image

Crawl4AI是一款專為大型語言模型(LLMs)和AI應用設計的開源網頁爬蟲和資料提取工具。最近挺火的開源AI網路爬蟲工具:Crawl4AI 可以直接用於大語言模型和AI應用。效能超快,還能輸出適合大語言模型的格式,比如JSON、清理過的HTML和markdown。它還支援同時爬取多個網址,能提取所有媒體標籤(圖片、音訊、影片),以及所有內外部連結。可以自定義使用者代理,還能給網頁截圖,甚至在爬取之前執行自定義JavaScript。

image

一、概述

Crawl4AI旨在簡化網頁資料的抓取和提取過程,為資料科學家、研究人員、開發人員和AI應用開發者提供高效、便捷的資料獲取解決方案。它針對LLM的訓練和應用場景進行了最佳化,能夠高效地從各類網站中提取高質量資料,為LLM提供豐富且優質的訓練素材。

二、核心優勢

  1. 開源免費:Crawl4AI是一款完全免費且開源的工具,使用者可以自由地使用、修改和分發。
  2. LLM友好:支援LLM友好的輸出格式,如JSON、清潔的HTML和Markdown,方便使用者進行後續的資料處理和模型訓練。
  3. 多URL支援:同時支援爬取多個URL,提高資料抓取的效率。
  4. 高階提取策略:提供多種高階提取策略,如餘弦聚類、LLM等,幫助使用者更精確地提取所需資料。
  5. 豐富功能:支援提取並返回所有媒體標籤(圖片、音訊和影片),提取所有外部和內部連結,從頁面提取後設資料等。
  6. 靈活配置:提供自定義鉤子用於認證、頭部和爬取前的頁面修改,使用者代理自定義,擷取頁面螢幕截圖,執行多個自定義JavaScript指令碼等功能,滿足使用者多樣化的需求。

三、應用場景

Crawl4AI適用於需要從網頁中快速提取大量資料的場景,如:

  1. 資料科學研究:為資料科學家提供豐富的資料來源,支援其進行資料分析、挖掘和建模。
  2. AI模型訓練:為AI應用開發者提供高質量的訓練資料,助力其提升模型的效能和準確性。
  3. 網路資料探勘:幫助研究人員從大量網頁中挖掘有價值的資訊,支援其進行學術研究。

四、使用指南

Crawl4AI提供了詳細的官方文件和安裝指南,使用者可以透過以下方式獲取和使用:

  1. 訪問官方網站:前往Crawl4AI官方網站官方文件網站,瞭解工具的詳細介紹和使用方法。
  2. 安裝工具:使用者可以透過pip安裝Crawl4AI,也可以使用Docker容器來簡化設定。在安裝過程中,如果遇到與Playwright相關的錯誤,可以嘗試手動安裝Playwright。
  3. 編寫爬蟲程式碼:根據官方文件提供的示例程式碼和API文件,編寫符合自己需求的爬蟲程式碼。
  4. 執行爬蟲:執行編寫好的爬蟲程式碼,開始從網頁中提取資料。

五、步驟示例

第 1 步:安裝和設定

pip install “crawl4ai @ git+https://github.com/unclecode/crawl4ai.git"

第 2 步:資料提取

from crawl4ai import WebCrawler
# Create an instance of WebCrawler
crawler = WebCrawler()
# Warm up the crawler (load necessary models)
crawler.warmup()
# Run the crawler on a URL
result = crawler.run(url="https://openai.com/api/pricing/")
# Print the extracted content
print(result.markdown)

第 3 步:使用 LLM

使用 LLM (Large Language Model) 定義提取策略,並將提取的資料轉換為結構化格式:

import os
from crawl4ai import WebCrawler
from crawl4ai.extraction_strategy 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.")

url = 'https://openai.com/api/pricing/'
crawler = WebCrawler()
crawler.warmup()

result = crawler.run(
url=url,
word_count_threshold=1,
extraction_strategy= LLMExtractionStrategy(
provider= "openai/gpt-4o", api_token = os.getenv('OPENAI_API_KEY'),
schema=OpenAIModelFee.schema(),
extraction_type="schema",
instruction="""From the crawled content, extract all mentioned model names along with their fees for input and output tokens.
Do not miss any models in the entire content. One extracted model JSON format should look like this:
{"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}."""
),
bypass_cache=True,
)

print(result.extracted_content)

第 4 步:與 AI 智慧體整合

將 Crawl 與 Praison CrewAI 代理整合以實現高效的資料處理:

pip install praisonai

建立一個工具檔案 (tools.py) 以封裝 Crawl 工具:

# tools.py
import os
from crawl4ai import WebCrawler
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel, Field
from praisonai_tools import BaseTool

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

class ModelFeeTool(BaseTool):
name: str = "ModelFeeTool"
description: str = "Extracts model fees for input and output tokens from the given pricing page."

def _run(self, url: str):
crawler = WebCrawler()
crawler.warmup()

result = crawler.run(
url=url,
word_count_threshold=1,
extraction_strategy= LLMExtractionStrategy(
provider="openai/gpt-4o",
api_token=os.getenv('OPENAI_API_KEY'),
schema=ModelFee.schema(),
extraction_type="schema",
instruction="""From the crawled content, extract all mentioned model names along with their fees for input and output tokens.
Do not miss any models in the entire content. One extracted model JSON format should look like this:
{"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}."""
),
bypass_cache=True,
)
return result.extracted_content

if __name__ == "__main__":
# Test the ModelFeeTool
tool = ModelFeeTool()
url = "
https://www.openai.com/pricing"
result = tool.run(url)
print(result)

將 AI 代理配置為使用 Crawl 工具進行 Web 抓取和資料提取:

framework: crewai
topic: extract model pricing from websites
roles:
web_scraper:
backstory: An expert in web scraping with a deep understanding of extracting structured
data from online sources.
https://openai.com/api/pricing/ https://www.anthropic.com/pricing https://cohere.com/pricing
goal: Gather model pricing data from various websites
role: Web Scraper
tasks:
scrape_model_pricing:
description: Scrape model pricing information from the provided list of websites.
expected_output: Raw HTML or JSON containing model pricing data.
tools:
- 'ModelFeeTool'
data_cleaner:
backstory: Specialist in data cleaning, ensuring that all collected data is accurate
and properly formatted.
goal: Clean and organize the scraped pricing data
role: Data Cleaner
tasks:
clean_pricing_data:
description: Process the raw scraped data to remove any duplicates and inconsistencies,
and convert it into a structured format.
expected_output: Cleaned and organized JSON or CSV file with model pricing
data.
tools:
- ''
data_analyzer:
backstory: Data analysis expert focused on deriving actionable insights from structured
data.
goal: Analyze the cleaned pricing data to extract insights
role: Data Analyzer
tasks:
analyze_pricing_data:
description: Analyze the cleaned data to extract trends, patterns, and insights
on model pricing.
expected_output: Detailed report summarizing model pricing trends and insights.
tools:
- ''
dependencies: []

Crawl 是一個強大的工具,它使 AI 代理能夠更高效、更準確地執行 Web 爬蟲和資料提取任務。



今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,資訊保安,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
影片直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續整合/CD
網際網路電商購物車架構演變案例
網際網路業務場景下訊息佇列架構
網際網路高效研發團隊管理演進之一
訊息系統架構設計演進
網際網路電商搜尋架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
網際網路資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之效能實時度量系統演變

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb[1]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。

相關文章