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

문신호님의 프로필 이미지
문신호

작성한 질문수

초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지

Ch07 - 04파일 / timeout 에러

해결된 질문

작성

·

657

0

안녕하세요

Ch07 - 04_Translate_app_NewVersion 파일로 강의내용 보고있는데 따라하는중에 오류가 나와서 해결방법을 못찾아서 질문 내용 올립니다!

 

openai key는 다른 예제로 했을때는 이상이 없는데요.

 

TypeErro: BaseClient.build_request() got an unexpected keyword argument 'timeout'

이렇게 오류가 나옵니다.

 

 

##### 기본 정보 불러오기 ####
# Streamlit 패키지 추가
import streamlit as st
# OpenAI 패키지 추가
import openai
# 구글 번역 패키지 추가
from googletrans import Translator
# Deepl 번역 패키지 추가
import deepl
# 파파고 API요청을 위한 Requests 패키지 추가 
import requests

##### 기능 구현 함수 #####
# ChatGPT 번역
def gpt_translate(messages, apikey):
    client = openai.OpenAI(api_key = apikey)
    messages_prompt = [{"role": "system", "content": f'Translate the following english text into Korean. Text to translate : {messages}'}]
    response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": messages_prompt}])

    return response.choices[0].message.content

# 파파고 번역
def papago_translate(text,PAPAGO_ID,PAPAGO_PW):
    data = {'text' : text,
            'source' : 'en',
            'target': 'ko'}

    url = "https://openapi.naver.com/v1/papago/n2mt"

    header = {"X-Naver-Client-Id":PAPAGO_ID,
            "X-Naver-Client-Secret":PAPAGO_PW}

    response = requests.post(url, headers=header, data=data)
    rescode = response.status_code

    if(rescode==200):
        send_data = response.json()
        trans_data = (send_data['message']['result']['translatedText'])
        return trans_data
    else:
        print("Error Code:" , rescode)

# 구글 번역
def google_trans(messages):
    google = Translator()
    result = google.translate(messages, dest="ko")

    return result.text

# 디플 번역
def deepl_translate(text, deeplAPI):
    translator = deepl.Translator(deeplAPI)
    result = translator.translate_text(text, target_lang="KO")
    return result.text

##### 메인 함수 #####
def main():
    # 기본 설정
    st.set_page_config(
        page_title="번역 플랫폼 모음",
        layout="wide")

    # session state 초기화
    if "OPENAI_API" not in st.session_state:
        st.session_state["OPENAI_API"] = ""

    if "PAPAGO_ID" not in st.session_state:
        st.session_state["PAPAGO_ID"] = ""

    if "PAPAGO_PW" not in st.session_state:
        st.session_state["PAPAGO_PW"] = ""

    if "DeeplAPI" not in st.session_state:
        st.session_state["DeeplAPI"] = ""


    # 사이드바 바 생성
    with st.sidebar:

        # Open AI API 키 입력받기
        st.session_state["OPENAI_API"] = st.text_input(label='OPENAI API 키', placeholder='Enter Your OpenAI API Key', value='',type='password')

        st.markdown('---')

        # PAPAGO API ID/PW 입력받기
        st.session_state["PAPAGO_ID"] = st.text_input(label='PAPAGO API ID', placeholder='Enter PAPAGO ID', value='')
        st.session_state["PAPAGO_PW"] = st.text_input(label='PAPAGO API PW', placeholder='Enter PAPAGO PW', value='',type='password')

        st.markdown('---')

        # PAPAGO API ID/PW 입력받기
        st.session_state["DeeplAPI"] = st.text_input(label='Deepl API 키', placeholder='Enter Your Deepl API API Key', value='',type='password')
    
        st.markdown('---')

    # 제목 
    st.header('번역 플랫폼 비교하기 프로그램')
    # 구분선
    st.markdown('---')
    st.subheader("번역을 하고자 하는 텍스트를 입력하세요")
    txt = st.text_area(label="",placeholder="input English..", height=200)
    st.markdown('---')

    st.subheader("ChatGPT 번역 결과")
    st.text("https://openai.com/blog/chatgpt")
    if st.session_state["OPENAI_API"] and txt:
        result = gpt_translate(txt,st.session_state["OPENAI_API"])
        st.info(result)
    else:
        st.info('API 키를 넣으세요')
    st.markdown('---')

    st.subheader("파파고 번역 결과")
    st.text("https://papago.naver.com/")
    if st.session_state["PAPAGO_ID"] and st.session_state["PAPAGO_PW"] and txt:
        result = papago_translate(txt,st.session_state["PAPAGO_ID"],st.session_state["PAPAGO_PW"])
        st.info(result)
    else:
        st.info('파파고 API ID, PW를 넣으세요')
    st.markdown('---')

    st.subheader("Deepl 번역 결과")
    st.text("https://www.deepl.com/translator")
    if st.session_state["DeeplAPI"] and txt:
        result = deepl_translate(txt,st.session_state["DeeplAPI"])
        st.info(result)
    else:
        st.info('API 키를 넣으세요')

    st.subheader("구글 번역 결과")
    st.text("https://translate.google.co.kr/")
    if txt:
        result = google_trans(txt)
        st.info(result)
    else:
        st.info("API키가 필요 없습니다")
    st.markdown('---')

if __name__=="__main__":
    main()

 

강의 예제 코드랑 동일합니다.

 

오류

TypeError: BaseClient.build_request() got an unexpected keyword argument 'timeout'

Traceback:

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 534, in _run_script
    exec(code, module.__dict__)

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\04_Translate_app_NewVersion.py", line 142, in <module> main()

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\04_Translate_app_NewVersion.py", line 109, in main result = gpt_translate(txt,st.session_state["OPENAI_API"])

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\04_Translate_app_NewVersion.py", line 18, in gpt_translate response = client.chat.completions.create(

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\openai\_utils\_utils.py", line 270, in wrapper return func(*args, **kwargs)

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\openai\resources\chat\completions.py", line 645, in create return self._post(

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\openai\_base_client.py", line 1088, in post return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\openai\_base_client.py", line 853, in request return self._request(

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\openai\_base_client.py", line 873, in _request request = self._build_request(options)

File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch07\ch07_env\lib\site-packages\openai\_base_client.py", line 468, in _build_request return self._client.build_request( # pyright: ignore[reportUnknownMemberType]

 

답변 2

0

문신호님의 프로필 이미지
문신호
질문자

적용이좀 어려워서 구글링 다시 해보니까 pip install httpcore==0.15.0 httpx pymongo googletrans 설치하면 해결된다고 해서 해보니까 에러는 사라졌습니다.... 04_Translate_app 파일에서는 또 객체가 없는 오류도 나오다 보니까 지우고 다시 설치했습니다. (pymongo 몽고db쓰는거도 아닌데 설치를 왜했는지 모르겠네요..)

googletrans 번역이.. 버전충돌이 많은거 같아요 ㅠ

pip uninstall googletrans
pip install googletrans==3.1.0a0

하니까 해결했고 04_Translate_app_NewVersion 파일꺼는..해결못했네요 ㅠ

0

문신호님의 프로필 이미지
문신호
질문자

다시 가상환경지우고 내용 따라하니까 이번에는 다른 내용이 나오네요.. 버전 충돌이 되는거 같습니다.

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.

googletrans 3.1.0a0 requires httpx==0.13.3, but you have httpx 0.25.2 which is incompatible.

최종 에러는 이렇게 나옵니다.
AttributeError: module 'httpcore' has no attribute 'SyncHTTPTransport'


쭌랩님의 프로필 이미지
쭌랩
지식공유자

안녕하세요 쭌랩입니다.

  1. 첫번째 timeout 에러 같은 경우는 openai API 서버로부터의 응답 시간이 일정 시간 지나면 발생하는 에러입니다. 서버 상태가 불안정하거나 답변의 길이가 길어서 생성하는데 오랜 시간이 걸리면 가끔 발생하는 에러 입니다. 실습하신 Newversion 의 실습 코드에서는 따로 응답 제한 시간 튜닝이 불가능합니다. 구 버전의 코드에선 아래와 같이 request_timeout 파라미터를 통해 응답 제한시간을 조정 가능합니다.(구 버전 코드 사용시 구버전 openai 패키지를 설치해야 합니다.)

# ChatGPT 번역
def gpt_translate(messages):
    messages_prompt = [{"role": "system", "content": f'Translate the following english text into Korean. Text to translate : {messages}'}]
    response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages_prompt, request_timeout=90)

    system_message = response["choices"][0]["message"]

    return system_message["content"]

 

  1. 새로운 가상환경 생성 시 발생하는 에러는 저도 처음보는 에러라서 정확한 대응 방법은 확인이 불가능 하지만 찾아보니 아래의 패키지를 설치하면 해결 된다고 합니다.

pip install httpcore==0.15.0

 

마지막으로 웹에서 ChatGPT를 사용할때ㄴ, 또는 API를 사용할 때 사용자 폭주로 에러가 날 때가 있습니다. 이때는 아래 사이트에서 현 서버의 상태 확인이 가능합니다.

https://status.openai.com/

 

감사합니다.

문신호님의 프로필 이미지
문신호

작성한 질문수

질문하기