Inflearn brand logo image

인프런 커뮤니티 질문&답변

Seunggu Kang님의 프로필 이미지
Seunggu Kang

작성한 질문수

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

[업데이트] 3.8 커스텀 도구(tool)를 활용하는 방법

yfinance 429 Client Error 문제

해결된 질문

작성

·

52

0

429 Client Error: Too Many Requests for url: https://query2.finance.yahoo.com/v10/finance/quoteSummary/SNOW?modules=secFilings&corsDomain=finance.yahoo.com&formatted=false&symbol=SNOW&crumb=Edge%3A+Too+Many+Requests

안녕하세요 강사님,

 

현재 3.7 Multi agent 강의 듣고 따라하고 있는데, yfinance 로 agent 를 통해 필요한 정보를 받아오도록 시키면 위와 같은 문제가 뜹니다. 확인해보니 url request를 단기간에 너무 많이 하는게 원인인것 같다는데, Agent를 통해 tool로 알아서 호출 하는 방식이니 횟수를 제한하거나 할 방법이 없습니다. 혹시 어떻게 해결해야 할지 아시면 해결책을 제시해주시면 감사하겠습니다.

답변 2

0

Seunggu Kang님의 프로필 이미지
Seunggu Kang
질문자

비슷한 다른 api 인 finnhub api 를 사용해서 해결했습니다.

하지만, gpt 모델을 쓰는 경우에는 token 한계가 있어서, 한꺼번에 너무 많은 내용을 불러오면 TPM에 걸리는 문제가 자주 발생하네요. gemini 모델을 쓰는 경우는 with_structured_output() 를 지원하지 않아서 supervisor_node에서 자꾸 output parse 변환 문제가 발생합니다. prompt로 keyword로만 반환하라고 명시해놔도, tool을 호출하고 나면

'```tool_code\n# 요청된 주식 티커에 대한 최신 가격 견적을 가져옵니다.\ntickers = ["SNOW"]\n```'

이런식으로 다시 무시하고 다른 형식으로 반환하고 이래가지고 gemini 모델은 거의 쓰기가 힘드네요..

 

혹시 어떤 모델이든 상관없이 확실하게 output 포맷이 보장되게 할 수 있는 방법이 없을까요? 아니면 gpt모델을 써도 TPM limit에 안 걸리게 할 수 있는 방법이 있을까요?

강병진님의 프로필 이미지
강병진
지식공유자

말씀하신 것처럼 yfinance에 요청이 너무 많이 보내져서 발생하는 이슈인데요, 저는 처음 보는 문제라 검색해보니 깃헙 이슈중에서 requests.session()을 써서 해결했다는 분들이 있네요. 링크를 전달 드립니다

  1. https://github.com/ranaroussi/yfinance/issues/2422#issuecomment-2840759533

  2. https://github.com/ranaroussi/yfinance/issues/2422#issuecomment-2840774505

with_structured_output의 경우에는, langchain에서 제공하는 기능이라, model provider와는 관련이 없습니다. 저번에 올려주신 질문에서 ChatGoogleGenerativeAI가 아니라 다른 패키지를 사용했다고 하셨던 것 같은데 한번 확인해보시고,

https://python.langchain.com/docs/integrations/chat/google_generative_ai/

 

GPT모델에서 토큰 리밋에 걸리지 않으려면 결제를 더 하는 수밖에 없습니다. 모델별로 tier에 따른 TPM과 RPM이 다른데요. GPT-4o를 예시로 보시면 Tier2만 되어도 꽤 많은 양을 쓸 수 있는데 그럼 $50을 결제하고 1주일이 지나야합니다

https://platform.openai.com/docs/guides/rate-limits/usage-tiers#usage_tiers

아래는 GPT-4o의 rate limit 정보입니다.

Screenshot 2025-08-02 at 9.30.13 AM.png

https://platform.openai.com/docs/models/gpt-4o

 

0

안녕하세요, 인프런 AI 인턴입니다. Seunggu Kang님.

429 Client Error: Too Many Requests 오류는 일정 시간 내에 서버에 요청을 너무 많이 보냈을 때 발생하는 오류입니다. 이는 특히 데이터를 수집하거나 API를 사용할 때 빈번하게 발생하는 문제입니다. yfinance와 같은 API를 통해 데이터를 요청할 경우, 다음의 방법들로 이 문제를 해결해 보실 수 있습니다.

해결 방법

  1. 요청 제한/타임아웃 설정:
    • 요청 사이에 일정한 대기 시간을 주어 서버 요청을 완화시킬 수 있습니다. Python에서는 time.sleep() 함수를 사용할 수 있습니다. 예를 들어, 각 요청 후 1초나 그 이상의 시간을 대기시킵니다.
   import time

   for symbol in symbols:
       data = yfinance.Ticker(symbol).history()
       time.sleep(1)  # 1초 대기
  1. 세션 관리:

    • 요청 세션을 관리하고 재활용하여 서버와의 연결을 보다 효율적으로 사용할 수 있습니다. requests 라이브러리의 Session 객체를 활용하여 관리하시면 됩니다.
  2. 쿼리 수 줄이기:

    • 중요도가 높은 데이터만 선택하여 쿼리 수를 줄이는 것도 고려해 볼 수 있습니다. 한번에 요청하는 데이터의 양을 줄이고, 필요 최소한의 정보만 요청하세요.
  3. 代理 서버 사용:

    • 프록시 서버를 설정하여 요청을 분산할 수 있습니다. 이는 각 서버에 요청되는 수를 줄일 수 있는 효과적인 방법입니다.
  4. API 호출 속도 조절:

    • Agent 작동을 중간중간 멈추고, 필요에 따라 호출 속도를 조절하세요. 이는 API 호출의 빈도를 낮추고, 서버 과부하를 방지할 수 있습니다.

관련 질문 URL

비슷한 문제를 다룬 질문들을 참고하시면 추가적인 해결책에 대해 이해하는 데 도움이 될 것입니다:

위의 방법 중 하나 이상을 적용하여 429 Client Error 문제를 해결할 수 있으리라 생각됩니다. 추가적인 궁금한 점이 있으시면, 이어서 질문해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Seunggu Kang님의 프로필 이미지
Seunggu Kang

작성한 질문수

질문하기