π fix(model-runtime): handle null content in anthropic message builder#11756
π fix(model-runtime): handle null content in anthropic message builder#11756
Conversation
Fix TypeError when building Anthropic messages with null content: - Handle assistant messages with tool_calls but null content - Handle tool messages with null or empty string content - Use '<empty_content>' placeholder for null/empty content Add 3 test cases covering the null content scenarios. Closes: LOBE-4201, LOBE-2715 π€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
TestGru AssignmentSummary
Files
Tip You can |
Tool messages may have array content, not just string. Use buildArrayContent to properly process array content in tool results. Add test case for tool message with array content. π€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
β¦ages When assistant message has tool_calls but null/empty content, filter out the empty text block instead of using placeholder. Only tool_use blocks remain in the content array. Add test case for empty string content scenario. π€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add test case to verify tool message with array content containing both text and image is correctly processed. π€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
504a5b5 to
36a13d7
Compare
β¦pty content Add test cases for tool messages without corresponding assistant tool_call when content is null or empty string. π€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Codecov Reportβ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## next #11756 +/- ##
==========================================
- Coverage 74.16% 74.16% -0.01%
==========================================
Files 1193 1193
Lines 95004 95014 +10
Branches 12534 10499 -2035
==========================================
+ Hits 70464 70469 +5
- Misses 24450 24455 +5
Partials 90 90
Flags with carried forward coverage won't be shown. Click here to find out more.
π New features to boost your workflow:
|
|
β€οΈ Great PR @arvinxx β€οΈ The growth of project is inseparable from user feedback and contribution, thanks for your contribution! If you are interesting with the lobehub developer community, please join our discord and then dm @arvinxx or @canisminor1990. They will invite you to our private developer channel. We are talking about the lobe-chat development or sharing ai newsletter around the world. |
## [Version 2.0.0-next.357](v2.0.0-next.356...v2.0.0-next.357) <sup>Released on **2026-01-23**</sup> #### π Bug Fixes - **model-runtime**: Handle null content in anthropic message builder. - **misc**: Page content switch mismatch. <br/> <details> <summary><kbd>Improvements and Fixes</kbd></summary> #### What's fixed * **model-runtime**: Handle null content in anthropic message builder, closes [#11756](#11756) ([539753a](539753a)) * **misc**: Page content switch mismatch, closes [#11758](#11758) ([fdc8f95](fdc8f95)) </details> <div align="right"> [](#readme-top) </div>
## [Version 1.154.0](v1.153.1...v1.154.0) <sup>Released on **2026-01-23**</sup> #### β» Code Refactoring - **misc**: Migrate AI Rules to Claude Code Skills. #### β¨ Features - **database**: Extended async task with metadata and parent id, added index. - **misc**: Remove NextAuth. #### π Bug Fixes - **copilot**: History popover not refreshing when agentId changes. - **editor**: Prevent crash when toggling enableInputMarkdown setting. - **home**: Use correct CreateGroupModal for session group creation. - **model-runtime**: Handle null content in anthropic message builder. - **ModelSelect**: Resolve tooltip hover causing popup to close. - **pdf**: Ensure worker config before Document render. - **store**: Delete message before regeneration. - **misc**: Fix auto scroll, fix favorite refresh bug and group topic refresh issue, fixed the agent group builder tools excaution edge case crash, page content switch mismatch, when use market group, the group sys role was not used. <br/> <details> <summary><kbd>Improvements and Fixes</kbd></summary> #### Code refactoring * **misc**: Migrate AI Rules to Claude Code Skills, closes [lobehub#11737](https://github.com/jaworldwideorg/OneJA-Bot/issues/11737) ([346fc46](346fc46)) #### What's improved * **database**: Extended async task with metadata and parent id, added index, closes [lobehub#11712](https://github.com/jaworldwideorg/OneJA-Bot/issues/11712) ([31d2f26](31d2f26)) * **misc**: Remove NextAuth, closes [lobehub#11732](https://github.com/jaworldwideorg/OneJA-Bot/issues/11732) ([1eff864](1eff864)) #### What's fixed * **copilot**: History popover not refreshing when agentId changes, closes [lobehub#11731](https://github.com/jaworldwideorg/OneJA-Bot/issues/11731) ([64f39e7](64f39e7)) * **editor**: Prevent crash when toggling enableInputMarkdown setting, closes [lobehub#11755](https://github.com/jaworldwideorg/OneJA-Bot/issues/11755) ([ea5eed8](ea5eed8)) * **home**: Use correct CreateGroupModal for session group creation, closes [lobehub#11752](https://github.com/jaworldwideorg/OneJA-Bot/issues/11752) ([36bcc50](36bcc50)) * **model-runtime**: Handle null content in anthropic message builder, closes [lobehub#11756](https://github.com/jaworldwideorg/OneJA-Bot/issues/11756) ([539753a](539753a)) * **ModelSelect**: Resolve tooltip hover causing popup to close, closes [lobehub#11742](https://github.com/jaworldwideorg/OneJA-Bot/issues/11742) ([1b73f14](1b73f14)) * **pdf**: Ensure worker config before Document render, closes [lobehub#11746](https://github.com/jaworldwideorg/OneJA-Bot/issues/11746) ([ad34072](ad34072)) * **store**: Delete message before regeneration, closes [lobehub#11760](https://github.com/jaworldwideorg/OneJA-Bot/issues/11760) ([a8a6300](a8a6300)) * **misc**: Fix auto scroll, closes [lobehub#11734](https://github.com/jaworldwideorg/OneJA-Bot/issues/11734) ([892fa9f](892fa9f)) * **misc**: Fix favorite refresh bug and group topic refresh issue, closes [lobehub#11745](https://github.com/jaworldwideorg/OneJA-Bot/issues/11745) ([5d115ef](5d115ef)) * **misc**: Fixed the agent group builder tools excaution edge case crash, closes [lobehub#11735](https://github.com/jaworldwideorg/OneJA-Bot/issues/11735) ([5de4742](5de4742)) * **misc**: Page content switch mismatch, closes [lobehub#11758](https://github.com/jaworldwideorg/OneJA-Bot/issues/11758) ([fdc8f95](fdc8f95)) * **misc**: When use market group, the group sys role was not used, closes [lobehub#11739](https://github.com/jaworldwideorg/OneJA-Bot/issues/11739) ([afc76f9](afc76f9)) </details> <div align="right"> [](#readme-top) </div>
Summary
TypeError: Cannot read properties of null (reading 'map')when building Anthropic messagestool_callsbutnullcontentnullor empty string content<empty_content>placeholder for null/empty contentProblem
When using MCP tools (e.g., Apollo-MCP), some responses may have:
tool_callsarray is non-empty butcontentisnullcontentisnullor empty string""This caused two errors:
TypeError: Cannot read properties of null (reading 'map')atbuildArrayContentmessages.X.content.0.tool_result.content.0.text.text: Input should be a valid stringSolution
Fix 1: Assistant message handling (anthropic.ts:117-121)
Fix 2: Tool message handling (anthropic.ts:186)
Test plan
should handle assistant message with tool_calls but null contentshould handle tool message with null contentshould handle tool message with empty string contentRelated Issues
Closes: LOBE-4201, LOBE-2715
π€ Generated with Claude Code