Skip to main content

Claude 流式对话示例

以下示例展示如何使用Claude的 /v1/messages 接口进行流式对话,实现实时打字效果。

快速开始

只需要替换 <API-KEY> 为你的实际API密钥即可运行。
curl -X POST "https://model-api.skyengine.com.cn/v1/messages" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API-KEY>" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 1000,
    "stream": true,
    "messages": [
      {
        "role": "user",
        "content": "请写一首关于秋天的诗"
      }
    ]
  }' \
  --no-buffer

Claude流式响应格式

Claude的流式响应包含多种事件类型:
event: message_start
data: {"message":{"id":"aa3bf21da7f548a791c409fc7507897c","content":[],"model":"claude-3-5-sonnet-20241022","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"message_start","delta":{"stop_reason":"","stop_sequence":"","text":"","type":"","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

event: content_block_delta
data: {"message":{"id":"","content":[],"model":"","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"content_block_delta","delta":{"stop_reason":"","stop_sequence":"","text":"《","type":"text_delta","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

event: content_block_delta
data: {"message":{"id":"","content":[],"model":"","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"content_block_delta","delta":{"stop_reason":"","stop_sequence":"","text":"秋意","type":"text_delta","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

.
.
.

event: content_block_delta
data: {"message":{"id":"","content":[],"model":"","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"content_block_delta","delta":{"stop_reason":"","stop_sequence":"","text":"感悟。","type":"text_delta","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

event: content_block_stop
data: {"message":{"id":"","content":[],"model":"","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"content_block_stop","delta":{"stop_reason":"","stop_sequence":"","text":"","type":"","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

event: message_delta
data: {"message":{"id":"","content":[],"model":"","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":"","text":"","type":"","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":20,"output_tokens":209,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

event: message_stop
data: {"message":{"id":"","content":[],"model":"","role":"assistant","stop_reason":"","stop_sequence":"","type":"message","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0},"service_tier":""}},"type":"message_stop","delta":{"stop_reason":"","stop_sequence":"","text":"","type":"","partial_json":"","citation":{"cited_text":"","document_index":0,"document_title":"","end_char_index":0,"file_id":"","start_char_index":0,"type":"","end_page_number":0,"start_page_number":0,"end_block_index":0,"start_block_index":0,"encrypted_index":"","title":"","url":"","search_result_index":0,"source":""},"thinking":"","signature":""},"usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0}},"content_block":{"citations":null,"text":"","type":"","signature":"","thinking":"","data":"","id":"","input":null,"name":"","content":{"OfWebSearchResultBlockArray":null,"error_code":"","type":"web_search_tool_result_error"},"tool_use_id":""},"index":0}

重要参数说明

  • stream: 设置为 true 启用流式输出
  • type: 事件类型,主要关注 content_block_delta
  • delta.text: 每个数据块包含的文本增量
  • anthropic-version: 必需的API版本头

Claude流式特点

  1. 事件驱动: 使用不同的事件类型标识流的各个阶段
  2. 结构化: 内容块有明确的开始和增量事件
  3. 元数据丰富: 提供详细的消息和内容块信息