Anthropic plugin drops thinking blocks between tool calls
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- machine-learning, python
- Lĩnh vực
- ai-infra-agents
Hướng nghiên cứu
Start in livekit-plugins-anthropic by tracing where thinking, redacted_thinking, thinking_delta, and signature_delta events are handled and where FunctionCall.extra is serialized. Use the issue's agent reproduction and request logging to verify that thinking blocks are replayed unchanged before tool results. The change is complete when blocks are restored while the system prompt, tools, and earlier messages are unchanged, but omitted after a prefix change without causing a 400.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Bug Description
livekit-plugins-anthropic ignores the thinking events in the stream (thinking and redacted_thinking blocks, thinking_delta, signature_delta). The blocks never reach the chat context, so the request that carries a tool result goes without the reasoning that led to the tool call.
The API does not return an error for this. The model silently loses its reasoning and starts again in the middle of a tool loop. Anthropic's docs make this a requirement (Preserving thinking blocks):
Required: within a tool-use turn, pass thinking blocks back.
This now affects agents that never asked for thinking: Claude Haiku 5.5, Sonnet 5.5, Opus 5 and Opus 5.5 think by default (adaptive). #6868 notes the same gap ("thinking blocks are not kept in the chat context, so a turn carrying a tool call is replayed without them") and leaves it out of scope.
Expected Behavior
The thinking blocks of a response that calls a tool go back, unchanged, before that tool_use block in the following requests.
There is one catch for a fix. A thinking block's signature is bound to the system prompt, the tools and the earlier messages. On accounts created on or after 2026-08-31, the API rejects a block with a 400 when that prefix changed, and update_instructions() and update_tools() change it in the middle of a session:
messages.1.content.0: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block". The `system` prompt differs from the one this block was created with.
So a fix must also stop sending a block after its prefix changed.
Reproduction Steps
1. Run an agent with anthropic.LLM(model="claude-haiku-5-5") and one function tool.
2. Ask something that makes the model call the tool.
3. Log the request that carries the tool result: the assistant turn has only the tool_use block.
Direct API check with claude-haiku-5-5 (anthropic 0.125.0, effort low), same tool step:
- tool result, thinking block kept: 200, 601 input tokens
- tool result, thinking block stripped: 200, 525 input tokens (the reasoning is gone, no error)
- block kept, system prompt then edited, with
thinking.block_binding.prefix_mismatch_behavior="error"
(what a new account gets by default): 400 (message above); the same for an added tool
Operating System
macOS 26.6.2
Models Used
Claude Haiku 5.5 (claude-haiku-5-5) through livekit-plugins-anthropic
Package Versions
livekit-agents==1.8.3, and main at ceb3d59
livekit-plugins-anthropic==1.8.3, and main at ceb3d59 (1.8.8 is the same)
anthropic==0.125.0
Proposed fix
A PR follows: it keeps the blocks in FunctionCall.extra["anthropic"] (the field that carries Gemini thought signatures) with a hash of the request prefix, and puts them back only while that prefix is unchanged.
- Ngôn ngữ chính
- Python
- Star
- 14.6k
- Fork
- 3.9k
- Merge trung bình
- 3 ngày
- Pull request đã merge (30 ngày)
- 262
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của livekit/agents
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
livekit/agents#8366 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
livekit/agents#8284 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ci: unit tests pin Python 3.12 while the package advertises 3.14 supportCó thể làm lại được @huong8373tt-beep đã nhận 9 ngày trước và không có pull request nào đang mở. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
livekit/agents#8231 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Assistant markup is stripped from chat history when expressive mode is offCó thể đã có người làm @ShivamSharma43 đã nhận 30 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
livekit/agents#7647 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của livekit/agents
Issue tương tự
-
[BUG]: Compliance rules never see Unity Catalog views as viewsCó thể đã có người làm @wagnercsantos đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
databrickslabs/ontos#1348 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
ibm-granite/granite.build#649 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`forum_pr_poster` action will always return `none` when checking for pre-existing feedback threads, even if a feedback thread already exists.Có thể đã có người làm @pgmzeta đã nhận hôm nay. Đang mởE-Verified P-Major
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 79/100
goonstation/goonstation#28259 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
woonstadrotterdam/monumenten#70 ·
Maintainer thường phản hồi trong vòng 15 ngày
-
binding:python bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày