Skip to content

Commit 48ccc11

Browse files
committed
Preserve model rate-limit error messages
Constraint: Users need the original provider error text in AG-UI RUN_ERROR.message while still normalizing retry metadata.\nRejected: Keep fixed Chinese rate-limit copy | It hides the actionable upstream model error from clients.\nConfidence: high\nScope-risk: narrow\nDirective: Keep RATE_LIMITED code and retry fields stable, but do not replace message with generic copy.\nTested: uv run --extra server pytest tests/unittests/server/test_error_utils.py tests/unittests/server/test_invoker.py tests/unittests/server/test_agui_protocol.py tests/unittests/integration/test_langgraph_events.py tests/unittests/integration/test_langgraph_to_agent_event.py -q; uv run ruff check targeted files; git diff --check; uvicorn local harness for status 429/throttling/false-positive 429.\nNot-tested: GitHub CI not yet read back after this commit. Change-Id: I5a1b893d34dd936bf172ca980d3e7d3a496a60d4 Co-developed-by: Codex <noreply@openai.com> Signed-off-by: congxiao.wxx <congxiao.wxx@alibaba-inc.com>
1 parent ace0a4a commit 48ccc11

5 files changed

Lines changed: 5 additions & 6 deletions

File tree

agentrun/utils/error_utils.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from typing import Any, Dict, Optional
55

66
RATE_LIMITED_CODE = "RATE_LIMITED"
7-
RATE_LIMITED_MESSAGE = "模型当前请求过多,请稍后再试"
87
RATE_LIMITED_RETRY_AFTER_MS = 2000
98

109
_RATE_LIMIT_CODES = {
@@ -52,7 +51,7 @@ def build_error_event_data(
5251
return {"message": fallback_message, "code": fallback_code}
5352

5453
data: Dict[str, Any] = {
55-
"message": RATE_LIMITED_MESSAGE,
54+
"message": fallback_message,
5655
"code": RATE_LIMITED_CODE,
5756
"retryable": True,
5857
"retryAfterMs": RATE_LIMITED_RETRY_AFTER_MS,

tests/unittests/integration/test_langgraph_events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ def test_on_llm_error_rate_limited(self):
842842

843843
assert len(results) == 1
844844
assert results[0].event == EventType.ERROR
845-
assert results[0].data["message"] == "模型当前请求过多,请稍后再试"
845+
assert results[0].data["message"] == "LLM error: RuntimeError: API rate limit exceeded"
846846
assert results[0].data["code"] == "RATE_LIMITED"
847847
assert results[0].data["retryable"] is True
848848
assert results[0].data["retryAfterMs"] == 2000

tests/unittests/integration/test_langgraph_to_agent_event.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ def test_on_llm_error_rate_limited(self):
840840

841841
assert len(results) == 1
842842
assert results[0].event == EventType.ERROR
843-
assert results[0].data["message"] == "模型当前请求过多,请稍后再试"
843+
assert results[0].data["message"] == "LLM error: RuntimeError: API rate limit exceeded"
844844
assert results[0].data["code"] == "RATE_LIMITED"
845845
assert results[0].data["retryable"] is True
846846
assert results[0].data["retryAfterMs"] == 2000

tests/unittests/server/test_agui_protocol.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def invoke_agent(request: AgentRequest):
163163
event for event in events if event.get("type") == "RUN_ERROR"
164164
)
165165
assert "RUN_FINISHED" not in types
166-
assert run_error["message"] == "模型当前请求过多,请稍后再试"
166+
assert run_error["message"] == "model overloaded"
167167
assert run_error["code"] == "RATE_LIMITED"
168168
assert run_error["retryable"] is True
169169
assert run_error["retryAfterMs"] == 2000

tests/unittests/server/test_invoker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ async def invoke_agent(req: AgentRequest) -> str:
208208
error_event = next(
209209
item for item in items if item.event == EventType.ERROR
210210
)
211-
assert error_event.data["message"] == "模型当前请求过多,请稍后再试"
211+
assert error_event.data["message"] == "model overloaded"
212212
assert error_event.data["code"] == "RATE_LIMITED"
213213
assert error_event.data["retryable"] is True
214214
assert error_event.data["retryAfterMs"] == 2000

0 commit comments

Comments
 (0)