[ PROMPT_NODE_23810 ]
claude-api
[ SKILL_DOCUMENTATION ]
# Claude API — C#
> **注意**:C# SDK 是官方的 Anthropic C# SDK。通过 Messages API 支持工具使用。不提供基于类注解的工具运行器;请使用带有 JSON 模式的原始工具定义。该 SDK 还支持 Microsoft.Extensions.AI IChatClient 集成与函数调用。
## 安装
bash
dotnet add package Anthropic
## 客户端初始化
csharp
using Anthropic;
// 默认(使用 ANTHROPIC_API_KEY 环境变量)
AnthropicClient client = new();
// 显式 API 密钥(使用环境变量 — 切勿硬编码密钥)
AnthropicClient client = new() {
ApiKey = Environment.GetEnvironmentVariable("ANTHROPIC_API_KEY")
};
---
## 基本消息请求
csharp
using Anthropic.Models.Messages;
var parameters = new MessageCreateParams
{
Model = Model.ClaudeOpus4_6,
MaxTokens = 16000,
Messages = [new() { Role = Role.User, Content = "法国的首都是哪里?" }]
};
var response = await client.Messages.Create(parameters);
// ContentBlock 是一个联合包装器。.Value 解包为变体对象,
// 然后 OfType 过滤为您想要的类型。或者使用下文
// 思考部分中展示的 TryPick* 惯用法。
foreach (var text in response.Content.Select(b => b.Value).OfType())
{
Console.WriteLine(text.Text);
}
---
## 流式传输
csharp
using Anthropic.Models.Messages;
var parameters = new MessageCreateParams
{
Model = Model.ClaudeOpus4_6,
MaxTokens = 64000,
Messages = [new() { Role = Role.User, Content = "写一首俳句" }]
};
await foreach (RawMessageStreamEvent streamEvent in client.Messages.CreateStreaming(parameters))
{
if (streamEvent.TryPickContentBlockDelta(out var delta) &&
delta.Delta.TryPickText(out var text))
{
Console.Write(text.Text);
}
}
**`RawMessageStreamEvent` TryPick 方法**(名称去掉了 `Message`/`Raw` 前缀):`TryPickStart`、`TryPickDelta`、`TryPickStop`、`TryPickContentBlockStart`、`TryPickContentBlockDelta`、`TryPickContentBlockStop`。没有 `TryPickMessageStop` — 请使用 `TryPickStop`。
## 思考
**自适应思考是 Claude 4.6+ 模型的推荐模式。** Claude 会动态决定何时以及思考多少。
csharp
using Anthropic.Models.Messages;
var response = await client.Messages.Create(new MessageCreateParams
{
Model = Model.ClaudeOpus4_6,
MaxTokens = 16000,
// ThinkingConfigParam? 隐式从具体变体类转换 —
// n