Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 

UFO² - "'Invalid URL (POST /v1/chat/completions/chat/completions)'"

billing으로 인한 오류도 있지만, 아래와 같은 식의 오류도 접할 수 있습니다.

The API request of EVALUATION_AGENT failed: OpenAI API returned an API Error: Error code: 404 - {'error': {'message': 'Invalid URL (POST /v1/chat/completions/chat/completions)', 'type': 'invalid_request_error', 'param': None, 'code': None}}.
Switching to use the backup engine...
Traceback (most recent call last):
  File "D:\temp\UFO\ufo\llm\openai.py", line 89, in _chat_completion
    response: Any = self.client.chat.completions.create(
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\_utils\_utils.py", line 279, in wrapper
    return func(*args, **kwargs)
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\resources\chat\completions\completions.py", line 914, in create
    return self._post(
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\_base_client.py", line 1242, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\_base_client.py", line 919, in request
    return self._request(
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\_base_client.py", line 1023, in _request
    raise self._make_status_error_from_response(err.response) from None
openai.AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\temp\UFO\ufo\module\basic.py", line 674, in evaluation
    result, cost = evaluator.evaluate(
  File "D:\temp\UFO\ufo\agents\agent\evaluation_agent.py", line 111, in evaluate
    result, cost = self.get_response(
  File "D:\temp\UFO\ufo\agents\agent\basic.py", line 164, in get_response
    response_string, cost = llm_call.get_completion(
  File "D:\temp\UFO\ufo\llm\llm_call.py", line 25, in get_completion
    responses, cost = get_completions(
  File "D:\temp\UFO\ufo\llm\llm_call.py", line 85, in get_completions
    return get_completions(
  File "D:\temp\UFO\ufo\llm\llm_call.py", line 89, in get_completions
    raise e
  File "D:\temp\UFO\ufo\llm\llm_call.py", line 75, in get_completions
    response, cost = service(configs, agent_type=agent_type).chat_completion(
  File "D:\temp\UFO\ufo\llm\openai.py", line 478, in chat_completion
    return super()._chat_completion(
  File "D:\temp\UFO\ufo\llm\openai.py", line 164, in _chat_completion
    raise Exception(f"OpenAI API request was not authorized: {e}")
Exception: OpenAI API request was not authorized: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "D:\temp\UFO\ufo\__main__.py", line 7, in <module>
    ufo.main()
  File "D:\temp\UFO\ufo\ufo.py", line 68, in main
    clients.run_all()
  File "D:\temp\UFO\ufo\module\client.py", line 28, in run_all
    session.run()
  File "D:\temp\UFO\ufo\module\sessions\session.py", line 196, in run
    super().run()
  File "D:\temp\UFO\ufo\module\basic.py", line 401, in run
    self.evaluation()
  File "D:\temp\UFO\ufo\module\basic.py", line 680, in evaluation
    result, cost = evaluator.evaluate(
  File "D:\temp\UFO\ufo\agents\agent\evaluation_agent.py", line 108, in evaluate
    message = self.message_constructor(
  File "D:\temp\UFO\ufo\agents\agent\evaluation_agent.py", line 81, in message_constructor
    evaagent_prompt_user_message = self.prompter.user_content_construction(
  File "D:\temp\UFO\ufo\prompter\eva_prompter.py", line 100, in user_content_construction
    return self.user_content_construction_head_tail(log_path, request)
  File "D:\temp\UFO\ufo\prompter\eva_prompter.py", line 119, in user_content_construction_head_tail
    trajectory.app_agent_log[0]
IndexError: list index out of range

이것도 가장 상단의 오류 메시지를 봐야 하는데요,

The API request of EVALUATION_AGENT failed: ... 'Invalid URL (POST /v1/chat/completions/chat/completions)'

보는 바와 같이, "chat/completions"이 URL에 두 번 중첩돼 나옵니다. config.yaml 파일에 기본 설정된 EVALUATION_AGENT를 보면,

EVALUATION_AGENT: {
  VISUAL_MODE: True, # Whether to use the visual mode
  REASONING_MODEL: False, # Whether the model is reasoning model. For OpenAI o1, o3, o4-mini, this field must be set to True.
  API_TYPE: "openai" , # The API type, "openai" for the OpenAI API, "aoai" for the AOAI API, 'azure_ad' for the ad authority of the AOAI API.  
  API_BASE: "https://api.openai.com/v1/chat/completions", # The the OpenAI API endpoint, "https://api.openai.com/v1/chat/completions" for the OpenAI API.
  API_KEY: "sk-...[생략]...UA",  # The OpenAI API key, begin with sk-
  API_VERSION: "2025-02-01-preview", # "2024-02-15-preview" by default
  API_MODEL: "gpt-4o",  # The only OpenAI model by now that accepts visual input

아마도 UFO 라이브러리 내부에서 OpenAI API 사용 시 "chat/completions"을 자동으로 붙여주는 것 같은데요, 따라서 다음과 같이 설정해 주면 됩니다.

API_BASE: "https://api.openai.com/v1",




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 5/16/2025]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  [71]  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
12168정성태3/5/202021149개발 환경 구성: 472. 윈도우 환경에서의 dockerd.exe("Docker Engine" 서비스)가 Linux의 것과 다른 점
12167정성태3/5/202019403개발 환경 구성: 471. C# - 닷넷 응용 프로그램에서 DB2 Express-C 데이터베이스 사용 (3) - ibmcom/db2express-c 컨테이너 사용
12166정성태3/4/202019898개발 환경 구성: 470. Windows Server 컨테이너 - DockerMsftProvider 모듈을 이용한 docker 설치
12165정성태3/2/202018744.NET Framework: 900. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 - 네 번째 이야기(Monitor.Enter 후킹)파일 다운로드1
12164정성태2/29/202019875오류 유형: 598. Surface Pro 6 - Windows Hello Face Software Device가 인식이 안 되는 문제
12163정성태2/27/202018243.NET Framework: 899. 익명 함수를 가리키는 delegate 필드에 대한 직렬화 문제
12162정성태2/26/202022182디버깅 기술: 166. C#에서 만든 COM 객체를 C/C++로 P/Invoke Interop 시 메모리 누수(Memory Leak) 발생 [6]파일 다운로드2
12161정성태2/26/202018158오류 유형: 597. manifest - The value "x64" of attribute "processorArchitecture" in element "assemblyIdentity" is invalid.
12160정성태2/26/202018587개발 환경 구성: 469. Reg-free COM 개체 사용을 위한 manifest 파일 생성 도구 - COMRegFreeManifest
12159정성태2/26/202015527오류 유형: 596. Visual Studio - The project needs to include ATL support
12158정성태2/25/202018309디버깅 기술: 165. C# - Marshal.GetIUnknownForObject/GetIDispatchForObject 사용 시 메모리 누수(Memory Leak) 발생파일 다운로드1
12157정성태2/25/202018142디버깅 기술: 164. C# - Marshal.GetNativeVariantForObject 사용 시 메모리 누수(Memory Leak) 발생 및 해결 방법파일 다운로드1
12156정성태2/25/202016758오류 유형: 595. LINK : warning LNK4098: defaultlib 'nafxcw.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
12155정성태2/25/202016322오류 유형: 594. Warning NU1701 - This package may not be fully compatible with your project
12154정성태2/25/202015681오류 유형: 593. warning LNK4070: /OUT:... directive in .EXP differs from output filename
12153정성태2/23/202019883.NET Framework: 898. Trampoline을 이용한 후킹의 한계파일 다운로드1
12152정성태2/23/202018750.NET Framework: 897. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 - 세 번째 이야기(Trampoline 후킹)파일 다운로드1
12151정성태2/22/202019692.NET Framework: 896. C# - Win32 API를 Trampoline 기법을 이용해 C# 메서드로 가로채는 방법 - 두 번째 이야기 (원본 함수 호출)파일 다운로드1
12150정성태2/21/202020003.NET Framework: 895. C# - Win32 API를 Trampoline 기법을 이용해 C# 메서드로 가로채는 방법 [1]파일 다운로드1
12149정성태2/20/202018582.NET Framework: 894. eBEST C# XingAPI 래퍼 - 연속 조회 처리 방법 [1]
12148정성태2/19/202021348디버깅 기술: 163. x64 환경에서 구현하는 다양한 Trampoline 기법 [1]
12147정성태2/19/202018817디버깅 기술: 162. x86/x64의 기계어 코드 최대 길이
12146정성태2/18/202019623.NET Framework: 893. eBEST C# XingAPI 래퍼 - 로그인 처리파일 다운로드1
12145정성태2/18/202019546.NET Framework: 892. eBEST C# XingAPI 래퍼 - Sqlite 지원 추가파일 다운로드1
12144정성태2/13/202019728.NET Framework: 891. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 - 두 번째 이야기파일 다운로드1
12143정성태2/13/202016201.NET Framework: 890. 상황별 GetFunctionPointer 반환값 정리 - x64파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  [71]  72  73  74  75  ...