From 53775bd3580d0e27963bf47c364b7c0252a5cca6 Mon Sep 17 00:00:00 2001 From: Hironori Uchikawa Date: Sat, 24 May 2025 00:12:59 +0900 Subject: [PATCH 1/2] fix: resolve parameter error when using o3 models with official OpenAI API --- openevolve/llm/openai.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/openevolve/llm/openai.py b/openevolve/llm/openai.py index fda41b9ef..fe474a7d7 100644 --- a/openevolve/llm/openai.py +++ b/openevolve/llm/openai.py @@ -51,13 +51,21 @@ async def generate_with_context( formatted_messages.extend(messages) # Set up generation parameters - params = { - "model": self.model, - "messages": formatted_messages, - "temperature": kwargs.get("temperature", self.config.temperature), - "top_p": kwargs.get("top_p", self.config.top_p), - "max_tokens": kwargs.get("max_tokens", self.config.max_tokens), - } + if self.config.api_base == "https://api.openai.com/v1" and str(self.model).lower().startswith("o"): + # For o-series models + params = { + "model": self.model, + "messages": formatted_messages, + "max_completion_tokens": kwargs.get("max_tokens", self.config.max_tokens) + } + else: + params = { + "model": self.model, + "messages": formatted_messages, + "temperature": kwargs.get("temperature", self.config.temperature), + "top_p": kwargs.get("top_p", self.config.top_p), + "max_tokens": kwargs.get("max_tokens", self.config.max_tokens), + } # Attempt the API call with retries retries = kwargs.get("retries", self.config.retries) From 745bf1057dadce393bc9750120bf47e7386746c6 Mon Sep 17 00:00:00 2001 From: Hironori Uchikawa Date: Sat, 24 May 2025 00:46:15 +0900 Subject: [PATCH 2/2] style: reformat with black --- openevolve/llm/openai.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openevolve/llm/openai.py b/openevolve/llm/openai.py index fe474a7d7..0cb9cc461 100644 --- a/openevolve/llm/openai.py +++ b/openevolve/llm/openai.py @@ -51,12 +51,14 @@ async def generate_with_context( formatted_messages.extend(messages) # Set up generation parameters - if self.config.api_base == "https://api.openai.com/v1" and str(self.model).lower().startswith("o"): + if self.config.api_base == "https://api.openai.com/v1" and str( + self.model + ).lower().startswith("o"): # For o-series models params = { "model": self.model, "messages": formatted_messages, - "max_completion_tokens": kwargs.get("max_tokens", self.config.max_tokens) + "max_completion_tokens": kwargs.get("max_tokens", self.config.max_tokens), } else: params = {