기본 콘텐츠로 건너뛰기

GPTs와 FastAPI로 베스트셀러 목차 생성기 구축

이 포스팅에서는 FastAPI를 활용하여 교보문고의 베스트셀러 책 목록과 목차를 자동으로 가져오는 API를 구축하고, 이를 GPTs와 통합하는 방법을 설명합니다. 이 과정을 통해 효율적으로 책의 목차를 생성하고, 사용자에게 유용한 정보를 제공하는 시스템을 개발할 수 있습니다.


1. FastAPI란 무엇인가?

FastAPI는 Python 기반의 현대적인 웹 프레임워크로, 고성능 비동기 웹 애플리케이션을 빠르고 쉽게 구축할 수 있게 해줍니다. FastAPI는 다음과 같은 주요 장점을 가지고 있습니다:

  • 자동화된 문서화: API 문서를 자동으로 생성하여 개발자와 사용자 모두에게 유용한 정보를 제공합니다.
  • 높은 성능: Starlette와 Pydantic을 기반으로 하여 매우 빠른 성능을 자랑합니다.
  • 간단한 코드 작성: 최소한의 코드로도 복잡한 기능을 구현할 수 있습니다.
  • 데이터 검증: 입력 데이터의 유효성을 자동으로 검증하여 오류를 줄입니다.

2. API 서버 구축하기

이제 FastAPI를 사용하여 교보문고의 베스트셀러 목록과 책 목차를 가져오는 API 서버를 구축해보겠습니다.

2.1 환경 설정

우선 Python 환경을 설정하고 필요한 라이브러리를 설치합니다.

pip install fastapi uvicorn requests

2.2 FastAPI 서버 구현

FastAPI 서버를 구현하여 교보문고의 베스트셀러 목록과 책 목차를 가져오는 두 개의 엔드포인트를 만듭니다.


from fastapi import FastAPI
import requests
from bs4 import BeautifulSoup

app = FastAPI()

@app.get("/best_sellers")
def get_best_sellers(keyword: str):
    url = f"https://www.kyobobook.co.kr/bestSellerNew/bestseller.laf?mallGb=KOR&linkClass=&range=0&key={keyword}"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    titles = [tag.text for tag in soup.select('div.title a')]
    return {"titles": titles[:5]}

@app.get("/table_of_contents")
def get_table_of_contents(book_url: str):
    response = requests.get(book_url)
    soup = BeautifulSoup(response.text, 'html.parser')
    contents = [tag.text for tag in soup.select('div.toc')]
    return {"contents": contents}
            

3. API 퍼블릭 도메인에 연결하기

로컬에서 FastAPI 서버를 실행한 후, NGrok을 사용하여 퍼블릭 도메인에 연결합니다. 이를 통해 외부에서도 API에 접근할 수 있게 됩니다.

3.1 FastAPI 서버 실행

uvicorn main:app --reload

3.2 NGrok을 이용한 퍼블릭 도메인 연결

NGrok을 설치하고 실행하여 로컬 서버를 퍼블릭 도메인에 연결합니다.

ngrok http 8000

NGrok이 제공하는 퍼블릭 URL을 사용하여 API를 테스트할 수 있습니다.

4. GPTs와 통합하기

GPTs는 OpenAI의 강력한 언어 모델로, 자연어 처리와 생성 작업을 수행할 수 있습니다. 이 프로젝트에서는 GPTs를 사용하여 FastAPI로 구현한 API를 통합하고 자동화된 목차 생성을 지원합니다.

4.1 GPTs 액션 정의

GPTs에서 사용할 액션을 정의합니다. 액션은 특정 작업을 수행하는 함수로, 입력 파라미터와 출력 결과를 정의합니다.


{
    "actions": [
        {
            "name": "get_best_sellers",
            "description": "키워드에 해당하는 베스트셀러 목록을 가져옵니다.",
            "parameters": {
                "keyword": "string"
            }
        },
        {
            "name": "get_table_of_contents",
            "description": "책 URL에 해당하는 목차를 가져옵니다.",
            "parameters": {
                "book_url": "string"
            }
        }
    ]
}
            

4.2 GPTs 스키마 작성

GPTs와 API를 통합하기 위해 OpenAPI 스키마를 작성합니다. 이는 GPTs가 API의 엔드포인트를 이해하고 호출할 수 있도록 도와줍니다.


{
    "openapi": "3.0.0",
    "info": {
        "title": "베스트셀러 목차 API",
        "version": "1.0.0"
    },
    "paths": {
        "/best_sellers": {
            "get": {
                "summary": "베스트셀러 목록 가져오기",
                "parameters": [
                    {
                        "name": "keyword",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "성공",
                        "content": {
                            "application/json": {
                                "example": {
                                    "titles": ["책1", "책2", "책3", "책4", "책5"]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/table_of_contents": {
            "get": {
                "summary": "책 목차 가져오기",
                "parameters": [
                    {
                        "name": "book_url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "성공",
                        "content": {
                            "application/json": {
                                "example": {
                                    "contents": ["목차1", "목차2", "목차3", "목차4", "목차5"]
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
            

5. 테스트 및 배포

구축한 API를 철저히 테스트하여 오류가 없는지 확인하고, 최종적으로 GPTs 스토어에 배포합니다. 이를 통해 다른 사용자들도 쉽게 API를 활용할 수 있습니다.

5.1 API 테스트

API의 각 엔드포인트를 테스트하여 예상대로 작동하는지 확인합니다. 이를 통해 오류를 발견하고 수정할 수 있습니다.


import requests

# 베스트셀러 목록 테스트
response = requests.get("http://your-ngrok-url/best_sellers?keyword=AI")
print(response.json())

# 책 목차 테스트
book_url = "http://kyobobook.co.kr/book/detail/9788965709999"
response = requests.get(f"http://your-ngrok-url/table_of_contents?book_url={book_url}")
print(response.json())
            

5.2 GPTs 스토어에 배포

모든 테스트를 마친 후, GPTs 스토어에 API를 배포하여 다른 사용자들이 사용할 수 있도록 합니다. 이를 통해 글로벌 사용자들에게 유용한 정보를 제공할 수 있습니다.

결론

FastAPI와 GPTs를 활용한 베스트셀러 목차 생성기 구축 과정은 매우 유용하고 실용적인 프로젝트입니다. 이 시스템을 통해 사용자는 교보문고의 베스트셀러 목록과 책 목차를 자동으로 가져와서 효율적으로 정보를 활용할 수 있습니다. 또한, GPTs와의 통합을 통해 더욱 강력하고 유연한 시스템을 구축할 수 있습니다. 이 글에서 설명한 단계별 과정을 통해 여러분도 쉽게 베스트셀러 목차 생성기를 구축해보시기 바랍니다.

https://www.youtube.com/watch?v=JBL4vhwUAnc


댓글

이 블로그의 인기 게시물

한국에서 스포티파이 무료 요금제 사용하는 법

한국에서 스포티파이 무료 요금제를 사용하는 법 얼마 전, 드디어 한국에서도 스포티파이 무료 요금제를 사용할 수 있다는 소식을 듣고 직접 체험해 보았습니다. 개인적으로 음악을 자주 듣는 편이기 때문에, 스포티파이 프리 요금제를 경험해 보고 그 장단점을 비교해 보는 시간을 가졌습니다. 처음에 무료 요금제를 사용하게 된 이유는 광고를 감수하더라도 별도의 요금을 내지 않고 다양한 음악을 들을 수 있다는 점에서 매우 매력적으로 느껴졌습니다. 스포티파이 프리 요금제란? 스포티파이 프리 요금제는 스포티파이에서 제공하는 무료 음악 스트리밍 서비스입니다. 광고가 중간중간 삽입되지만, 별도의 요금 없이 전 세계 음악을 즐길 수 있다는 점이 큰 장점입니다. 프리미엄 요금제를 사용하는 사람들에게는 무제한 재생, 광고 없음, 오프라인 다운로드 등의 혜택이 제공되지만, 프리 요금제만으로도 충분히 다양한 음악을 감상할 수 있었습니다. 처음 앱을 실행했을 때, 사용자 인터페이스는 직관적이고 간단했습니다. 원하는 장르나 아티스트를 선택하면 스포티파이의 알고리즘이 제 취향에 맞는 곡들을 자동으로 추천해 주었는데, 그중에는 평소 들어보지 못했던 새로운 곡들도 있어 매우 신선한 경험이었습니다. 그러나, 광고가 재생될 때마다 흐름이 끊기는 점은 다소 불편했습니다. 스포티파이 무료 요금제의 장점 장점 방대한 음악 라이브러리 제공으로 원하는 거의 모든 음악을 쉽게 찾을 수 있습니다. 사용자 인터페이스가 직관적이고 간단하여 처음 사용하는 사람도 쉽게 적응할 수 있습니다. 스포티파이의 추천 알고리즘이 매우 정확하게 개인의 취향을 반영하여 다양한 음악을 추천해 줍니다. 무료로 제공되지만 품질 좋은 음악을 끊김 없이 스트리밍할 수 있습니다. PC, 모바일, 태블릿 등 다양한 기기에서 동기화가 가능하며, 외출 시에도 음악을 손쉽게 즐길 수 있습니다. 전 세계 음악 차트를 한눈에 확인할 수 있어 글로벌 음악 트렌드를 빠르게 접할 수 있습니다. 스포티파이 무료 요금...

GPTs와 네이버 블로그를 활용한 맛집 블로그 콘텐츠 자동화 지침 (Instructions)

이 포스팅에서는 GPTs와 네이버 블로그를 활용하여 맛집 블로그 콘텐츠 초안을 자동으로 작성하는 방법을 소개합니다. 자료 조사부터 초안 작성까지의 과정을 단계별로 자동화하여 블로그 콘텐츠 작성의 효율성을 높이는 방법에 중점을 둡니다. 특히, 블로그 작성 과정에서 발생할 수 있는 시간과 노력의 절감을 목표로 합니다. 1. 맛집 블로그 콘텐츠 작성의 필요성 맛집 블로그는 많은 사람들이 즐겨 찾는 주제로, 특히 네이버 블로그에서 인기가 높습니다. 맛집 블로그는 다양한 맛집 정보를 제공하여 독자들의 관심을 끌 수 있는 콘텐츠입니다. 그러나 맛집 블로그를 작성하는 과정은 상당히 복잡합니다. 맛집 선정, 자료 조사, 개요 작성, 초안 작성, 검토 및 발행 등 여러 단계를 거쳐야 하므로 상당한 시간이 소요됩니다. 2. GPTs와 네이버 블로그의 결합 2.1. GPTs의 역할 GPTs는 OpenAI에서 개발한 자연어 처리 모델로, 다양한 언어 작업을 수행할 수 있습니다. 이 모델은 텍스트 생성, 번역, 요약, 질문 답변 등 다양한 기능을 제공하여 콘텐츠 작성에 큰 도움을 줄 수 있습니다. 2.2. 네이버 블로그의 역할 네이버 블로그는 한국에서 가장 인기 있는 블로그 플랫폼 중 하나입니다. 다양한 주제의 블로그가 활성화되어 있으며, 특히 맛집 블로그는 많은 사용자들이 찾는 주제입니다. 네이버 블로그의 풍부한 콘텐츠와 GPTs의 강력한 자연어 처리 능력을 결합하면, 효율적인 맛집 블로그 콘텐츠 작성이 가능합니다. 3. GPTs 지침 작성 3.1. GPTs의 지침 초안 작성 지침 초안은 GPTs가 주어진 작업을 정확하게 이해하고 수행할 수 있도록 도와줍니다. 명확한 지침이 있을 때 모델은 사용자의 의도를 보다 정확하게 파악할 수 있으며, 그 결과로 높은 품질의 응답을 생성할 수 있습니다. 이는 특히 복잡한 질문이나 요구 사항이 있을 때 더욱 중요합니다. # Phases of Interacti...