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