Skip to content

feat(bedrock): add Claude Haiku 5.5 and a thinking display option for Claude 5 - #4112

Merged
crazywoola merged 4 commits into
langgenius:mainfrom
Arai-Y-SLC:feat/bedrock-claude5-haiku55-thinking-display
Oct 26, 2026
Merged

crazywoola merged 4 commits into
langgenius:mainfrom
Arai-Y-SLC:feat/bedrock-claude5-haiku55-thinking-display

Conversation

@Arai-Y-SLC

@Arai-Y-SLC Arai-Y-SLC commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Two Claude 5 changes in one PR, so they ship as a single version bump (0.0.92 → 0.0.93, rebased on main after #4106 and #4095). Each is its own commit if you prefer to review them separately.

Fixes #4044. Follow-up to #4059 (closed by #4097).

1. Thinking Display option (as offered in #4059 (comment))

Claude 5 models default to thinking.display: "omitted", so the stream carries nothing while the model thinks. #4097 raised the bedrock-runtime read timeout to 3600 s, so botocore no longer gives up, but the connection still sits idle for the whole thinking phase. Networks with a fixed idle timeout (VPC endpoints, NAT gateways and NLBs are 350 s, per AWS) can still drop it. This adds the thinking_display option the Anthropic plugin already has.

  • New parameter Thinking Display (omitted / summarized, default omitted) on the "Anthropic Claude 5" family, right after Effort.
  • omitted or unset: the request is exactly what 0.0.92 sends today.
  • summarized: adds "display": "summarized" to the adaptive thinking config. Reasoning summaries stream as <think> content, which the existing stream handler already renders. This also works with Effort unset (sends {"type": "adaptive", "display": "summarized"} with no output_config).

2. Claude Haiku 5.5 (anthropic.claude-haiku-5-5), following the pattern of #3926 and #4009

  • Option in the Claude 5 family, CLAUDE5_PROFILE_PREFIXES us./eu./au./global. (the model card also lists jp., left unwired as for Opus 5.5), cache minimum 512 / 4 checkpoints (model card), pricing file at the Global rate of $0.10 / $0.50 per 1M tokens (prompts up to 100K; the long-context rate of $0.50 / $2.50 cannot be expressed in the flat schema, noted in a comment), README (en / zh).
  • Because Haiku 5.5 profile IDs are now recognised as Claude 5 profiles, custom models on them get the Claude 5 parameter rules instead of the legacy ones, which is what [Bedrock] Disable "Temperature" parameter by default for Claude Haiku 5.5 (same as Sonnet 5.5) #4044 asks for. fix(bedrock): avoid unsupported inference profile JSON prefill #4095 (now merged) handles the same custom-profile case with a Haiku-specific filter; the two work together. With Haiku 5.5 registered as a Claude 5 model, its profile IDs now also request /stop_details like the other Claude 5 models, so one assertion in the fix(bedrock): avoid unsupported inference profile JSON prefill #4095 test is updated for that case (the application inference profile ARN case is unchanged), and its README note now mentions the predefined model.
Case (Dify 1.14.2 → plugin daemon → live Bedrock, geographic profile, stream unless noted) Before After
Haiku 5.5 in the Claude 5 family ❌ not selectable ✅ us.anthropic.claude-haiku-5-5, answers in stream and non-stream
Haiku 5.5, effort high, long arithmetic task, summarized — longest silence 2.7 s (vs 26.7 s with omitted), 2,017 chars of summary, same answer
Sonnet 5.5, effort high, same task longest silence 28.6 s (whole thinking phase), no reasoning omitted: unchanged / summarized: longest silence 3.1 s, 2,030 chars of summary, same answer
Haiku 5.5, Effort unset, summarized — longest silence 2.6 s, 1,817 chars of summary
Haiku 5.5, summarized, 2-round tool loop (stream / non-stream) — ✅ tool_use → tool_use → end_turn, 1173 (both modes)
Haiku 5.5 system cache checkpoint, two calls — ✅ write 3,917, then read 3,917
Effort set, Thinking Display unset or omitted ✅ ✅ unchanged request (unit test asserts equality)
Sonnet 5.5 omitted, Claude 4.6 Sonnet, embeddings, rerank ✅ ✅ unchanged
Unit tests 295 passed ✅ 322 passed (27 new; 30 fail with the source reverted to main)

The silence grows with the thinking time. In a knowledge-pipeline job on the same deployment, Sonnet 5.5 at the default effort was silent for 291 s before the first event, close to the 350 s limit; with summarized the longest gap was 3.1 s.

Release Notes

  • Add Claude Haiku 5.5 to Anthropic Claude 5 (global and geographic profiles, prompt caching, $0.10/$0.50 per 1M tokens at the global rate for prompts up to 100K tokens). Custom models on Haiku 5.5 inference profiles get the Claude 5 parameters.
  • Add a Thinking Display option to Anthropic Claude 5 models. Choose summarized to stream reasoning summaries while the model thinks; this also keeps long-thinking requests from going idle behind proxies or VPC endpoints with an idle timeout. The default (omitted) leaves requests unchanged.

Change Type

  • Documentation / non-plugin change
  • Non-LLM plugin (tools, extensions, datasource, etc.)
  • LLM plugin

Screenshots / Videos

Before After
No Haiku 5.5 option; no Thinking Display, nothing streams until thinking ends Haiku 5.5 in Bedrock Model; Thinking Display below Effort, and with summarized reasoning summaries appear while the model thinks

LLM Plugin Checklist

Areas affected by this change (check all that apply)
  • Message flow (system messages, user ↔ assistant turn-taking)
  • Tool interaction flow (multi-round usage, Agent App and Agent Node)
  • Multimodal input (images, PDFs, audio, video, etc.)
  • Multimodal output (images, audio, video, etc.)
  • Structured output (JSON, XML, etc.)
  • Token consumption metrics
  • Other LLM functionality (reasoning, grounding, prompt caching, etc.)
  • New models / model parameter fixes

Version

  • Bumped top-level version in manifest.yaml (not the one under meta): 0.0.92 → 0.0.93
  • dify_plugin>=0.10.2,<0.11.0 is declared in pyproject.toml and locked in uv.lock (unchanged)

Testing

  • Local deployment — Dify version: 1.14.2

  • SaaS (cloud.dify.ai)

  • uv sync --all-groups --frozen, Python 3.12: 322 passed (on main + this branch).

  • Live rows above: the plugin installed in a self-hosted Dify 1.14.2, invoked through the plugin daemon the way workflow nodes call it. Both parameters appear in the model settings panel after the plugin update.

Notes: the Bedrock docs say a model may accept summarized and still return no thinking text, so it is a best-effort option. The summary adds to the output Dify shows (with the "separate" reasoning format it goes to reasoning_content, not the answer text).

🤖 Generated with Claude Code

Add a `thinking_display` parameter (omitted / summarized) to the
"Anthropic Claude 5" family. Claude 5 adaptive thinking defaults to
`omitted`, so nothing is streamed while the model thinks. With
`summarized`, reasoning summaries are streamed, which keeps the
connection from going idle during long thinking.

- Send `thinking.display = "summarized"` when selected; requests with
  `omitted` or no value are unchanged.
- Allow `summarized` without Effort: send adaptive thinking only, with
  no output_config, and still drop sampling params.
- Add tests, README notes, and bump the plugin version to 0.0.92.
Add Claude Haiku 5.5 (anthropic.claude-haiku-5-5) to the "Anthropic
Claude 5" model family.

- model_ids: register 'Haiku 5.5' and its geo profile prefixes
  (us/eu/au/global; the jp. profile is not wired up yet, as for Opus 5.5)
- anthropic-claude-5.yaml: add the model option and update the
  cross-region help text
- llm.py: map 'Haiku 5.5' to the new pricing file
- model_configurations/claude-5-5-haiku.yaml: 1M context, Global rates
  of $0.10 / $0.50 per 1M tokens (prompts up to 100K tokens)
- cache_config: enable explicit prompt caching (min 512 tokens,
  4 checkpoints)
- README (en / zh_Hans): document the model, profiles and pricing
- tests: add Haiku 5.5 to the Claude 5 model id, cache and llm param
  tests, plus regression tests for custom (inference profile) models
- bump plugin version to 0.0.92

Because Haiku 5.5 profile IDs are now recognised as Claude 5 profiles,
custom models using them get the Claude 5 parameter rules (no
temperature/top_p/top_k) instead of the legacy Claude ones.

Fixes langgenius#4044
@crazywoola

Copy link
Copy Markdown
Member

Hi @Arai-Y-SLC, thanks for adding Claude Haiku 5.5 and the thinking display option!

Heads-up about models/bedrock/manifest.yaml: the consolidated dependency refresh (#4106–#4111) bumped it to 0.0.92 on main, and #4095 from another author also targets this plugin. Since a plugin can only be released one version at a time, please rebase on latest main and bump the version to the next unused one after the preceding PR lands, so the releases don't collide.

Thanks again for your contribution! 🙏

main is now 0.0.92 (langgenius#4106, langgenius#4095), so bump to the next unused version.

langgenius#4095 added a test that expected no Claude 5 response field paths for a
Haiku 5.5 profile ID. With Haiku 5.5 registered as a Claude 5 model,
profile IDs such as global.anthropic.claude-haiku-5-5 now request
/stop_details like the other Claude 5 models; the application inference
profile ARN case is unchanged. Also note in the README that Haiku 5.5 is
now a predefined model.
@Arai-Y-SLC

Arai-Y-SLC commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor Author

Thanks @crazywoola. Merged the latest main (with #4106 and #4095) and bumped manifest.yaml to 0.0.93, the next unused version (4dc7eb0). With Haiku 5.5 now a predefined Claude 5 model, one assertion in the #4095 test is updated for the profile-ID case (it now requests /stop_details like the other Claude 5 models; the application inference profile ARN case is unchanged). All 322 tests pass, and the PR description is updated to match.

Re-ran the live checks on the merged branch (4dc7eb0: main with #4106 and #4095, boto3 1.43.118), in a fresh uv sync --frozen environment against live Bedrock:

Case Result
Haiku 5.5, effort high, long task omitted: longest silence 19.7 s / summarized: 2.5 s, 3,537 chars of summary, same answer
Sonnet 5.5, effort high, same task omitted: 23.9 s / summarized: 2.8 s, 1,705 chars of summary, same answer
Haiku 5.5, Effort unset, summarized longest silence 2.7 s, 1,288 chars of summary
Haiku 5.5, effort medium, Thinking Display unset ✅ unchanged request, answer returned
Haiku 5.5 with stale temperature / top_k saved (#4095 filter) ✅ answer returned
2-round tool loop, stream / non-stream ✅ 1173 in both
System cache checkpoint, two calls ✅ write 3,931, then read 3,931
Embeddings (cohere.embed-multilingual-v3, titan-embed-text-v2), rerank (cohere.rerank-v3-5) ✅ 1024 dims, scores 0.357 / 0.051

Same behaviour as before the merge; the silence numbers vary run to run with the thinking length.

@crazywoola
crazywoola deployed to models/bedrock October 26, 2026 03:35 — with GitHub Actions Active
@crazywoola
crazywoola merged commit f86e442 into langgenius:main Oct 26, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
models/bedrock — 4dc7eb0a Deployed Oct 26, 2026 by crazywoola via test (models/bedrock) #2916
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bedrock] Disable "Temperature" parameter by default for Claude Haiku 5.5 (same as Sonnet 5.5)

2 participants