Loading...
    • 开发者指南
    • API 参考
    • MCP
    • 资源
    • 更新日志
    Search...
    ⌘K
    入门
    Claude 简介快速开始
    模型与定价
    模型概览选择模型Claude 4.6 新特性迁移指南模型弃用定价
    使用 Claude 构建
    功能概览使用 Messages API处理停止原因提示词最佳实践
    上下文管理
    上下文窗口压缩上下文编辑
    能力
    提示缓存扩展思考自适应思考推理力度流式消息批量处理引用多语言支持Token 计数嵌入视觉PDF 支持Files API搜索结果结构化输出
    工具
    概览如何实现工具使用细粒度工具流式传输Bash 工具代码执行工具程序化工具调用计算机使用工具文本编辑器工具网页抓取工具网页搜索工具记忆工具工具搜索工具
    Agent Skills
    概览快速开始最佳实践企业级 Skills通过 API 使用 Skills
    Agent SDK
    概览快速开始TypeScript SDKTypeScript V2(预览版)Python SDK迁移指南
    API 中的 MCP
    MCP 连接器远程 MCP 服务器
    第三方平台上的 Claude
    Amazon BedrockMicrosoft FoundryVertex AI
    提示工程
    概览提示词生成器使用提示词模板提示词优化器清晰直接使用示例(多样本提示)让 Claude 思考(思维链)使用 XML 标签赋予 Claude 角色(系统提示词)链式复杂提示长上下文技巧扩展思考技巧
    测试与评估
    定义成功标准开发测试用例使用评估工具降低延迟
    加强安全护栏
    减少幻觉提高输出一致性防范越狱攻击流式拒绝减少提示词泄露保持 Claude 角色设定
    管理与监控
    Admin API 概览数据驻留工作空间用量与成本 APIClaude Code Analytics API零数据留存
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    工具

    细粒度工具流式传输

    了解如何使用细粒度工具流式传输来减少接收大型参数的延迟。

    细粒度工具流式传输已在所有模型和所有平台上正式可用,无需 beta 头。它支持在不进行缓冲或 JSON 验证的情况下对工具使用参数值进行流式传输,从而减少开始接收大型参数的延迟。

    使用细粒度工具流式传输时,您可能会收到无效或不完整的 JSON 输入。请确保在代码中处理这些边缘情况。

    如何使用细粒度工具流式传输

    细粒度工具流式传输在所有模型和所有平台(Claude API、Amazon Bedrock、Google Vertex AI 和 Microsoft Foundry)上均可用。要使用它,请在您希望启用细粒度流式传输的任何工具上将 eager_input_streaming 设置为 true,并在请求中启用流式传输。

    以下是如何通过 API 使用细粒度工具流式传输的示例:

    curl https://api.anthropic.com/v1/messages \
      -H "content-type: application/json" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -d '{
        "model": "claude-opus-4-6",
        "max_tokens": 65536,
        "tools": [
          {
            "name": "make_file",
            "description": "Write text to a file",
            "eager_input_streaming": true,
            "input_schema": {
              "type": "object",
              "properties": {
                "filename": {
                  "type": "string",
                  "description": "The filename to write text to"
                },
                "lines_of_text": {
                  "type": "array",
                  "description": "An array of lines of text to write to the file"
                }
              },
              "required": ["filename", "lines_of_text"]
            }
          }
        ],
        "messages": [
          {
            "role": "user",
            "content": "Can you write a long poem and make a file called poem.txt?"
          }
        ],
        "stream": true
      }' | jq '.usage'

    在此示例中,细粒度工具流式传输使 Claude 能够将长诗的各行流式传输到工具调用 make_file 中,而无需缓冲来验证 lines_of_text 参数是否为有效的 JSON。这意味着您可以在参数到达时立即看到参数流,而无需等待整个参数缓冲和验证完成。

    使用细粒度工具流式传输时,工具使用块开始流式传输的速度更快,并且通常更长且包含更少的单词断点。这是由于分块行为的差异所致。

    示例:

    不使用细粒度流式传输(15 秒延迟):

    Chunk 1: '{"'
    Chunk 2: 'query": "Ty'
    Chunk 3: 'peScri'
    Chunk 4: 'pt 5.0 5.1 '
    Chunk 5: '5.2 5'
    Chunk 6: '.3'
    Chunk 8: ' new f'
    Chunk 9: 'eatur'
    ...

    使用细粒度流式传输(3 秒延迟):

    Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
    Chunk 2: ' new features comparison'

    由于细粒度流式传输在不进行缓冲或 JSON 验证的情况下发送参数,因此无法保证生成的流将以有效的 JSON 字符串完成。 特别是,如果达到停止原因 max_tokens,流可能会在参数中途结束,并且可能不完整。通常您需要编写特定的支持代码来处理达到 max_tokens 的情况。

    处理工具响应中的无效 JSON

    使用细粒度工具流式传输时,您可能会从模型收到无效或不完整的 JSON。如果您需要在错误响应块中将此无效 JSON 传回模型,可以将其包装在 JSON 对象中以确保正确处理(使用合理的键名)。例如:

    {
      "INVALID_JSON": "<your invalid json string>"
    }

    这种方法有助于模型理解内容是无效的 JSON,同时保留原始格式错误的数据以供调试使用。

    包装无效 JSON 时,请确保正确转义无效 JSON 字符串中的引号或特殊字符,以保持包装对象中的有效 JSON 结构。

    Was this page helpful?

    • 处理工具响应中的无效 JSON