본문 바로가기
데이터 엔지니어링/데이터 처리 애플리케이션

WebCrawler와 GPT-4를 이용한 OpenAI 모델 가격 추출하기

by General AI 2024. 7. 10.
728x90
반응형

WebCrawler와 GPT-4를 사용하여 OpenAI 모델 가격 추출하기

소개

이 포스트에서는 crawl4ai 라이브러리를 사용하여 웹페이지에서 OpenAI 모델 가격 정보를 추출하는 과정을 안내합니다. 우리는 GPT-4의 강력한 기능을 활용하여 관련 데이터를 파싱하고 추출할 것입니다. 이 튜토리얼을 완료하면 웹 크롤링과 AI를 사용하여 웹사이트에서 데이터를 수집하는 방법을 이해할 수 있게 될 것입니다.

WebCrawler와 GPT-4를 사용하여 OpenAI 모델 가격 추출하기

사전 준비

시작하기 전에 다음이 설치되어 있는지 확인하세요:

  • Python 3.7 이상
  • crawl4ai 라이브러리
  • dotenv 라이브러리

설정 및 코드

환경 변수 설정: OpenAI API 키를 환경 변수로 설정합니다. 프로젝트 디렉토리에 .env 파일을 생성하고 다음과 같이 API 키를 추가합니다.

OPENAI_API_KEY=your_openai_api_key

필요한 라이브러리 설치: 다음 명령어를 사용하여 필요한 라이브러리를 설치합니다.

pip install crawl4ai python-dotenv pydantic

크롤링 및 데이터 추출 코드: 아래 코드를 사용하여 크롤링과 데이터 추출을 수행합니다.

import os
from dotenv import load_dotenv
from crawl4ai import WebCrawler
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel, Field

# Load environment variables from .env file
load_dotenv()

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-4",
        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)

위 코드에서는 .env 파일에서 환경 변수를 로드하고, WebCrawler를 사용하여 OpenAI 모델 가격 정보를 포함한 웹페이지를 크롤링합니다. 크롤러는 GPT-4를 사용하여 데이터 추출을 수행하며, 결과를 JSON 형식으로 출력합니다.

실행 결과

코드를 성공적으로 실행하면 터미널에 다음과 같은 로그와 결과가 출력됩니다:

[LOG] 🚀 Initializing LocalSeleniumCrawlerStrategy
[LOG] 🌤️  Warming up the WebCrawler
[LOG] 🌞 WebCrawler is ready to crawl
[LOG] 🚀 Crawling done for https://openai.com/api/pricing/, success: True, time taken: 1.0484328269958496 seconds
[LOG] 🚀 Content extracted for https://openai.com/api/pricing/, success: True, time taken: 0.07894492149353027 seconds
[LOG] 🔥 Extracting semantic blocks for https://openai.com/api/pricing/, Strategy: LLMExtractionStrategy
[LOG] Call LLM for https://openai.com/api/pricing/ - block index: 0
[LOG] Call LLM for https://openai.com/api/pricing/ - block index: 1
[LOG] Call LLM for https://openai.com/api/pricing/ - block index: 2
[LOG] Call LLM for https://openai.com/api/pricing/ - block index: 3
[LOG] Extracted 0 blocks from URL: https://openai.com/api/pricing/ block index: 3
[LOG] Extracted 6 blocks from URL: https://openai.com/api/pricing/ block index: 1
[LOG] Extracted 7 blocks from URL: https://openai.com/api/pricing/ block index: 0
[LOG] Extracted 10 blocks from URL: https://openai.com/api/pricing/ block index: 2
[LOG] 🚀 Extraction done for https://openai.com/api/pricing/, time taken: 26.30644989013672 seconds.

추출된 내용은 JSON 형식으로 출력됩니다. 예를 들어:

[
    {
        "model_name": "gpt-3.5-turbo",
        "input_fee": "$3.00 / 1M input tokens",
        "output_fee": "$6.00 / 1M output tokens"
    },
    ...
    {
        "model_name": "babbage-002",
        "input_fee": "$0.40 / 1M tokens",
        "output_fee": "$0.40 / 1M tokens"
    }
]

위 출력 결과는 OpenAI 모델과 각 모델의 입력 및 출력 토큰 비용을 JSON 형식으로 나타낸 것입니다. 이 데이터는 다양한 분석 및 보고 목적으로 활용할 수 있습니다.

실행 결과

이번 포스트에서는 crawl4ai와 GPT-4를 사용하여 OpenAI의 모델 가격 정보를 추출하는 방법을 살펴보았습니다. 이 과정을 통해 웹 크롤링과 AI를 결합하여 복잡한 데이터 추출 작업을 자동화하는 방법을 배울 수 있었습니다. 이러한 기술은 데이터 수집, 분석, 자동화된 보고서 생성 등 다양한 분야에서 활용될 수 있습니다. 앞으로도 이와 같은 기술을 적극적으로 활용하여 더 많은 데이터를 효율적으로 관리하고 분석해 보세요.

참고 사이트

crawl4ai와 GPT-4를 사용하여 다양한 웹페이지에서 데이터를 추출하고 분석하는 프로젝트를 시작해보세요. 데이터 추출과 분석의 가능성은 무궁무진합니다!

728x90
반응형