[TIL] Tavily API

ijnuyh·2025년 8월 8일

TIL

목록 보기
15/16

SKALA 과정을 진행하며

import requests
import os
from dotenv import load_dotenv

load_dotenv()

API_KEY = os.getenv("TAVILY_API_KEY")

def search_news(query: str) -> list:
    url = "https://api.tavily.com/search"
    params = {"query": query, "api_key": API_KEY, "num_results": 3}
    res = requests.get(url, params=params)
    if res.status_code != 200:
        return [f"뉴스 검색 실패: {res.text}"]
    return [r['content'] for r in res.json().get("results", [])]

이 함수로 api를 받아오는 과정을 진행했는데, 계속 뉴스검색 실패가 나왔음.
API 키가 문제라고 로그가 떴는데,

API Playground 에 들어가면 위와 같은 snippets를 확인해서 리팩토링이 필요함을 확인했다.
다른 방법으로는 header에 token을 추가해야한다고 하긴했는데,,,
공식문서를 신뢰해서 리팩토링을 진행했다.

requirments

import requests
import os
from dotenv import load_dotenv
from tavily import TavilyClient

# .env 파일 로드
load_dotenv()

def search_news(query: str) -> list:
    """Tavily API 사용 -> 뉴스를 검색하고 내용만 리스트로 반환."""
    
    # .env 파일에서 API 키 가져오기
    api_key = os.getenv("TAVILY_API_KEY")
    if not api_key:
        return ["TAVILY_API_KEY가 .env 파일에 설정되지 않았습니다."]

    try:
        # Tavily 클라이언트 초기화
        client = TavilyClient(api_key=api_key)
        
        # 검색 실행 (결과 3개 요청)
        response = client.search(query=query, max_results=3)
        
        # 검색 결과에서 'content' 부분만 추출하여 리스트로 반환
        return [result['content'] for result in response.get("results", [])]
        
    except Exception as e:
        # API 키가 잘못되었거나 다른 에러가 발생한 경우
        return [f"뉴스 검색 중 에러 발생: {e}"]

그러고 localhost:8000/docs 들어가면...!


이렇게 가능 !!!

profile
ad astra per aspera

0개의 댓글