Anthropic Claude
Anthropic 是一家 AI 安全公司,致力于构建可靠、可解释且可引导的 AI 系统。其旗舰模型系列为 Claude,在对话、内容创作、复杂推理、编程等方面表现出色。
sgcWebSockets 库提供 Delphi 组件 TsgcHTTP_API_Anthropic,用于与 Anthropic Claude API 进行交互。
Anthropic API
Anthropic API 提供对 Claude 模型的访问,用于构建 AI 驱动的应用程序。该 API 支持文本生成、视觉(图像理解)、工具使用(函数调用)、扩展思考、文档/PDF 处理、提示缓存、引用、网络搜索、流式传输、令牌计数和消息批处理。
功能特性
配置
Anthropic API 使用 API 密钥进行身份验证。请访问 Anthropic 控制台中的 API 密钥页面,获取您在请求中使用的 API 密钥。
请记住,您的 API 密钥是机密!请勿与他人共享或在任何客户端代码中公开它。
此 API Key 必须在组件的 AnthropicOptions.ApiKey 属性中配置。AnthropicOptions.AnthropicVersion 属性指定 API 版本(默认:2023-06-01)。
Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'YOUR_API_KEY';
属性
AnthropicOptions
- ApiKey: 用于向 Anthropic API 进行身份验证的 API 密钥。
- AnthropicVersion:API 版本字符串(默认:2023-06-01)。
- BetaHeaders:可选的 Beta 功能标头,用于启用预发布 API 特性(例如 files-api-2025-04-14、mcp-client-2025-11-20)。
- HttpOptions:HTTP 连接设置。
- ReadTimeout:读取 HTTP 响应的超时时间(毫秒)。默认值为 0(无超时)。
- LogOptions:日志配置。
- Enabled:为 True 时,HTTP 请求和响应将被记录到文件中。
- FileName:写入日志输出的文件路径。
- RetryOptions: 失败 API 请求的自动重试配置。
- Enabled: 为 True 时,失败的请求将自动重试。
- Retries: 最大重试次数。
- Wait: 两次重试之间的等待时间(毫秒)。
消息
发送包含文本和/或图像内容的结构化输入消息列表,模型将生成对话中的下一条消息。
- CreateMessage:使用指定的模型和参数创建消息。
- Model:要使用的模型(例如 claude-sonnet-4-20250514)。
- Message:用户消息内容。
- MaxTokens:要生成的最大 token 数(必填,默认值为 4096)。
- CreateMessageWithSystem:使用系统提示创建消息。
- CreateMessageStream:创建启用流式传输(SSE)的消息。事件通过 OnHTTPAPISSE 事件处理程序传递。
- CreateMessageJSON:创建一条返回符合所提供 JSON Schema 的结构化 JSON 消息。
- Schema:定义输出格式的 JSON Schema 字符串。
- CreateMessageWithThinking:创建启用了扩展思考功能的消息。
- BudgetTokens:思考的最大令牌预算(最小值为 1024)。
- CreateDocumentMessage:创建带有 base64 文档(PDF 或文本)的消息。
- DocumentBase64:base64 编码的文档数据。
- MediaType:MIME 类型(例如 application/pdf)。
视觉
Claude 能够理解消息中以 base64 编码内容块传递的图像。
- CreateVisionMessage:发送带文本提示的图像。
- ImageBase64:base64 编码的图像数据。
- MediaType:MIME 类型(image/jpeg、image/png、image/gif、image/webp)。
- Prompt:随图像附带的文本提示。
工具使用
Claude 可以使用工具(函数调用)与外部系统交互。您需要定义工具的名称、描述和输入模式,Claude 会在希望调用工具时生成 tool_use 内容块。
模型
列出并描述可用的 Claude 模型。
- GetModels:列出所有可用模型。
- GetModel:检索有关特定模型的信息。
扩展思考
扩展思考功能使 Claude 在响应前能够逐步推理,从而提升数学、编码和分析等复杂任务的质量。
- ThinkingType:设为 'enabled' 以激活思考模式,设为 'disabled' 以关闭。
- ThinkingBudgetTokens:思考的 Token 预算(最小 1024,必须小于 MaxTokens)。
- CreateMessageWithAdaptiveThinking:使用自适应思维创建消息,让 Claude 自动决定思维深度。
文档
Claude 可以处理以内容块形式发送的 PDF 文档和文本文件。支持 base64、文本和 URL 来源类型。
- CreateDocumentMessage:发送带文本提示的文档。
- DocumentBase64:base64 编码的文档数据。
- MediaType:MIME 类型(application/pdf、text/plain)。
提示词缓存
在 API 调用之间缓存常用上下文(系统提示、内容块、工具定义),可将缓存读取成本降低高达 90%。
- SystemCacheControl: 在请求中设置为 True 以缓存系统提示。
- CacheControl:在内容块或工具定义上设置为 'ephemeral'。
- BetaHeaders:AnthropicOptions 中的可选测试版功能头。
引文
当启用引用功能发送文档时,Claude 会在其响应中包含来源引用。引用类型包括 char_location(文本)、page_location(PDF)、content_block_location(自定义内容)以及 web_search_result_location(网络搜索)。
网络搜索
Claude 可以使用内置的 web_search 工具搜索网络以获取实时信息。其他内置工具包括 code_execution 和 computer use。
- CreateMessageWithWebSearch:创建一条启用网络搜索的消息。
- Model:要使用的模型。
- Message:用户查询。
令牌计数
在发送消息之前统计消息中的令牌数量。
- CountTokens: 统计消息的输入 token 数量。
- Model: 用于 token 计数的模型。
- Message: 要统计 token 的消息内容。
消息批量处理
消息批处理 API 允许您异步处理大量消息。
- ListBatches:列出所有消息批次。
- GetBatch:按 ID 检索特定批次。
- CancelBatch:取消仍在处理中的批次。
- GetBatchResults:检索已完成批次的结果。
结构化输出
强制 Claude 返回符合提供的 JSON Schema 的有效 JSON。结合 Effort 参数来控制输出质量与成本。
- CreateMessageJSON:创建带有 JSON 架构输出的消息。
- Schema:定义输出格式的 JSON Schema 字符串。
- OutputFormatSchema:(Request 属性)用于结构化输出的 JSON Schema。
- Effort:(请求属性)控制质量与成本的平衡:'low'、'medium'、'high'、'max'。
- Strict:(工具属性)为 True 时,工具输入保证与 input_schema 匹配。
Files API
上传、列出、检索、下载和删除文件。上传的文件可在消息中通过带有文件源类型的文档内容块引用。需要 beta 头 files-api-2025-04-14。
- UploadFile:上传本地文件。返回文件元数据。
- ListFiles:列出已上传的文件(带分页)。
- GetFile:检索特定文件的元数据。
- DownloadFile:下载文件内容。
- DeleteFile:永久删除文件。
请求参数
Messages API 上提供的附加请求参数。
- ServiceTier: 控制优先级层使用:'auto'(默认)或 'standard_only'。
- InferenceGeo:控制推理地域:'global'(默认)或 'us'。
- Container:用于跨请求复用代码执行环境的容器 ID。
- IsError:(内容块属性)在 tool_result 块上设置为 True,表示工具执行失败。
- CacheTTL:扩展缓存生存时间:'5m'(默认)或 '1h'。
- ThinkingType:设置为 'adaptive' 让 Claude 自动决定思考深度。
MCP Connector
将 Claude 连接到外部 MCP(Model Context Protocol)服务器以访问第三方工具。需要 beta 头部 mcp-client-2025-11-20。
- CreateMessageWithMCP:创建带有 MCP 服务器连接的消息。
- MCPServerUrl:MCP 服务器的 HTTPS URL。
- MCPServerName:服务器的唯一名称。
- MCPServers:(Request 属性)包含 MCP 服务器定义的数组,每个定义包含 ServerType、Url、Name 和 AuthorizationToken。
- MCPServerName:(Tool 属性)当 ToolType 为 'mcp_toolset' 时,引用一个 MCP 服务器。