Support configurable OpenAI reasoning effort

This commit is contained in:
YangChen-pro
2026-03-18 22:54:58 +08:00
parent 00038cd1ae
commit 70ed09ad2b
2 changed files with 8 additions and 0 deletions

View File

@@ -132,6 +132,10 @@ class LLMSession:
self.max_retries = max(0, int(cfg.get('max_retries', 2)))
self.connect_timeout = max(1, int(cfg.get('connect_timeout', 10)))
self.read_timeout = max(5, int(cfg.get('read_timeout', 120)))
effort = cfg.get('reasoning_effort')
effort = None if effort is None else str(effort).strip().lower()
self.reasoning_effort = effort if effort in ['none', 'minimal','low', 'medium', 'high', 'xhigh'] else None
if effort and self.reasoning_effort is None: print(f"[WARN] Invalid reasoning_effort {effort!r}, ignored.")
mode = str(cfg.get('api_mode', 'chat_completions')).strip().lower().replace('-', '_')
if mode in ["responses", "response"]: self.api_mode = "responses"
else: self.api_mode = "chat_completions"
@@ -176,9 +180,11 @@ class LLMSession:
if self.api_mode == "responses":
url = auto_make_url(self.api_base, "responses")
payload = {"model": model, "input": self._to_responses_input(messages), "temperature": temperature, "stream": True}
if self.reasoning_effort: payload["reasoning"] = {"effort": self.reasoning_effort}
else:
url = auto_make_url(self.api_base, "chat/completions")
payload = {"model": model, "messages": messages, "temperature": temperature, "stream": True}
if self.reasoning_effort: payload["reasoning_effort"] = self.reasoning_effort
for attempt in range(self.max_retries + 1):
streamed_any = False
try:

View File

@@ -4,6 +4,8 @@ oai_config = {
'apibase':"http://243.55.19.137:2001",
'model':"openai/gpt-5.1",
'api_mode':"chat_completions", # optional: "chat_completions" | "responses"
# 'reasoning_effort': "low", # optional: none | low | medium | high | xhigh;
# Only OPENAI models support this parameter, and it may not be supported by all models. It is used to control the amount of reasoning effort the model should use when generating a response. Higher values may result in more accurate and detailed responses, but may also take longer to generate.
'max_retries': 2, # optional: retries for 429/timeout/5xx
'connect_timeout': 10, # optional: seconds
'read_timeout': 120 # optional: seconds (stream read)