Skip to content

example_apps/claude_agent_sdkrate_limit_event で応答できない(claude-agent-sdk の下限バージョンが古い) #77

@petitroto

Description

@petitroto

サンプルが動かず、微修正したら動作したのでご報告します。
(以下のレポートはClaudeが書きましたが私が目を通しています)

概要

example_apps/claude_agent_sdk のサンプルを起動してロボットに話しかけると、AI の応答テキスト自体は生成されるものの、発話されずに talk_session がクラッシュします。

再現手順

uv run uvicorn example_apps.claude_agent_sdk.app:app.fastapi --host 0.0.0.0 --port 8000

起動後、ロボットに話しかける。

エラーログ

claude_agent_sdk._errors.MessageParseError: Unknown message type: rate_limit_event
  File ".../example_apps/claude_agent_sdk/app.py", line 85, in talk_session
    async for message in client.receive_response():
  File ".../claude_agent_sdk/_internal/message_parser.py", line 180, in parse_message
    raise MessageParseError(f"Unknown message type: {message_type}", data)

AssistantMessage の応答は受信できていますが、その後ストリームに含まれる rate_limit_event を SDK がパースできず、ResultMessage に到達する前に例外となり speak() が呼ばれません。

原因

claude-agent-sdk のバージョン依存です。

  • 0.1.39rate_limit_event 未対応で MessageParseError を送出
  • 0.1.40:未知メッセージを無視(クラッシュ回避)
  • 0.1.49RateLimitEvent として正式対応

リポジトリ内で下限指定が分かれており、

  • example_apps/claude_agent_sdk/pyproject.tomlclaude-agent-sdk>=0.1.56
  • ルート pyproject.tomlexample-claude-agent-sdk グループ … claude-agent-sdk>=0.1.39

リポジトリ直下から uv run するとルート側が使われ、uv.lock0.1.39 に固定されているため、ちょうど未対応の版が入ります。

提案する修正

ルート pyproject.toml の下限をサンプル側と揃え、lock を更新する。

 example-claude-agent-sdk = [
-    "claude-agent-sdk>=0.1.39",
+    "claude-agent-sdk>=0.1.56",
 ]
uv lock --upgrade-package claude-agent-sdk

手元では 0.2.87 に更新し、rate_limit_eventRateLimitEvent としてパースされることを確認済みです。app.py 側の変更は不要でした。

環境

  • claude-agent-sdk: 0.1.39(不具合)→ 0.2.87(修正確認)
  • Claude Code CLI: 2.1.49
  • Python: 3.14

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions