llmcore: fix empty-response not triggering mixin failover; distinct default UA for NativeOAISession
This commit is contained in:
1 parent
fb69e768b3
commit
920f7e3f2b
1 file changed
+5
-3
+5
-3
@@ -381,13 +381,13 @@ def _stream_with_retry(sess, url, headers, payload, parse_fn):
|
||||
yield err; return [{"type": "text", "text": err}]
|
||||
gen = parse_fn(r)
|
||||
try:
|
||||
while True: streamed = True; yield next(gen)
|
||||
while True: chunk = next(gen); streamed = True; yield chunk
|
||||
except StopIteration as e:
|
||||
if not e.value and not streamed: raise requests.ConnectionError("empty response")
|
||||
return e.value or []
|
||||
except (requests.Timeout, requests.ConnectionError) as e:
|
||||
#pathlib.Path(__file__).parent.joinpath('temp','bad_requests.json').write_text(json.dumps({"url":url,"headers":headers,"payload":payload,"err":str(e),"t":time.time()},ensure_ascii=False),encoding='utf-8')
|
||||
err = f"!!!Error: {type(e).__name__}"
|
||||
err = f"!!!Error: {type(e).__name__}: {e}" if str(e) else f"!!!Error: {type(e).__name__}"
|
||||
if attempt < sess.max_retries:
|
||||
d = _delay(None, attempt)
|
||||
print(f"[LLM Retry] {type(e).__name__}, retry in {d:.1f}s ({attempt+1}/{sess.max_retries+1})")
|
||||
@@ -660,6 +660,7 @@ def _fix_messages(messages):
|
||||
return merged
|
||||
|
||||
class NativeClaudeSession(BaseSession):
|
||||
native_ua = "claude-cli/2.1.152 (native, cli)"
|
||||
def __init__(self, cfg):
|
||||
super().__init__(cfg)
|
||||
self.fake_cc_system_prompt = cfg.get("fake_cc_system_prompt", False)
|
||||
@@ -667,7 +668,7 @@ class NativeClaudeSession(BaseSession):
|
||||
self._account_uuid = str(uuid.uuid4())
|
||||
self._device_id = uuid.uuid4().hex + uuid.uuid4().hex[:32]
|
||||
self.tools = None
|
||||
if self.user_agent == self.default_ua: self.user_agent = "claude-cli/2.1.152 (native, cli)"
|
||||
if self.user_agent == self.default_ua: self.user_agent = self.native_ua
|
||||
def raw_ask(self, messages):
|
||||
if self.max_tokens is None: self.max_tokens = 8192
|
||||
model = self.model
|
||||
@@ -738,6 +739,7 @@ class NativeClaudeSession(BaseSession):
|
||||
return MockResponse(thinking, content, tool_calls, str(content_blocks))
|
||||
|
||||
class NativeOAISession(NativeClaudeSession):
|
||||
native_ua = "codex_cli_rs/0.1.2025062000 (Windows 11 10.0.26100; x86_64) Windows_Terminal"
|
||||
def raw_ask(self, messages):
|
||||
messages = _fix_messages(messages)
|
||||
messages = _ensure_thinking_blocks(messages, self.model)
|
||||
|
||||
Reference in new issue
Block a user