中立消息 ↔ Anthropic wire 格式 转换
neutral->wire: 中立消息列表 → {:system .. :messages ..} response->neutral: Anthropic 响应 → 中立 assistant 消息
Anthropic wire 形态:
多模态:user 消息的 :content 为中立部件向量(见 model/content)时翻译成 Anthropic 内容块——image/* → image 块(内联 base64 source / url source)、 application/pdf → document 块。Anthropic 不收音频,遇到即抛 :validation-error (不静默丢内容)。:type 为字符串的元素视为 Anthropic 原生块(citations 的 document、cache_control 断点等),原样透传。
assistant 消息带 :blocks {:format :anthropic-content :data [...]} 时原样吐回 (thinking 块 + signature 必须逐字回传);格式认不出或没有 :blocks 就走 text + tool_use 重建。见 docs/provider-variant-design.md。
中立消息 ↔ Anthropic wire 格式 转换
neutral->wire: 中立消息列表 → {:system .. :messages ..}
response->neutral: Anthropic 响应 → 中立 assistant 消息
Anthropic wire 形态:
- system 是顶层参数(不在 messages 里)
- user: {:role "user" :content "..."}
- assistant: {:role "assistant" :content "..."}
- assistant+tools: {:role "assistant"
:content [{:type "text" :text ..}?
{:type "tool_use" :id .. :name .. :input {..}}]}
- tool result: {:role "user"
:content [{:type "tool_result" :tool_use_id .. :content ..}]}
连续的 tool 结果合并进同一条 user 消息的 content 数组。
**多模态**:user 消息的 :content 为中立部件向量(见 model/content)时翻译成
Anthropic 内容块——image/* → image 块(内联 base64 source / url source)、
application/pdf → document 块。Anthropic 不收音频,遇到即抛 :validation-error
(不静默丢内容)。:type 为**字符串**的元素视为 Anthropic 原生块(citations 的
document、cache_control 断点等),原样透传。
assistant 消息带 :blocks {:format :anthropic-content :data [...]} 时**原样吐回**
(thinking 块 + signature 必须逐字回传);格式认不出或没有 :blocks 就走
text + tool_use 重建。见 docs/provider-variant-design.md。(neutral->wire neutral-msgs)中立消息列表 → {:system <str|nil> :messages [wire-msg ...]}
中立消息列表 → {:system <str|nil> :messages [wire-msg ...]}
(response->neutral response)Anthropic 响应 → 中立 assistant 消息。 含 tool_use 块则 assistant-tool-calls,否则纯文本 assistant。
Anthropic 响应 → 中立 assistant 消息。 含 tool_use 块则 assistant-tool-calls,否则纯文本 assistant。
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |