• Mensajes
  • Agentes gestionados
  • Administración
Search...
⌘K
CLI, SDKs y bibliotecas
Descripción general
CLI ant
Inicio rápidoOpciones de autenticaciónUso de la CLIScripting y automatización
SDKs de cliente
MiddlewarePythonTypeScriptC#GoJavaPHPRuby
Bibliotecas e integraciones
Compatibilidad con el SDK de OpenAI
Log in
C#
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
  • 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
  • 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
CLI, SDKs y bibliotecas/SDKs de cliente

SDK de C#

Instala y configura el SDK de C# de Anthropic para aplicaciones .NET con integración de IChatClient

El SDK de C# de Anthropic proporciona acceso conveniente a la API REST de Anthropic desde aplicaciones escritas en C#.

El SDK de C# se encuentra actualmente en beta. Las APIs pueden cambiar entre versiones.

Para consultar la documentación de las funcionalidades de la API con ejemplos de código, visita la referencia de la API. Esta página cubre las funcionalidades y la configuración del SDK específicas de C#.

A partir de la versión 10+, el paquete Anthropic es ahora el SDK oficial de Anthropic para C#. Las versiones 3.X e inferiores del paquete se usaban anteriormente para el SDK desarrollado por la comunidad tryAGI, que se ha trasladado a tryAGI.Anthropic. Si necesitas seguir usando el cliente anterior en tu proyecto, actualiza la referencia de tu paquete a tryAGI.Anthropic.

Instalación

Instala el paquete desde NuGet:

dotnet add package Anthropic

Requisitos

Esta biblioteca requiere .NET Standard 2.0 o posterior.

Uso

using System;
using Anthropic;
using Anthropic.Models.Messages;

AnthropicClient client = new();

MessageCreateParams parameters = new()
{
    MaxTokens = 1024,
    Messages =
    [
        new()
        {
            Role = Role.User,
            Content = "Hello, Claude",
        },
    ],
    Model = Model.ClaudeOpus4_8,
};

var message = await client.Messages.Create(parameters);

Console.WriteLine(message);

Para conocer las opciones de autenticación, incluida Workload Identity Federation, consulta Autenticación.

Configuración del cliente

Configura el cliente usando variables de entorno:

using Anthropic;

// Configurado mediante las variables de entorno ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN y ANTHROPIC_BASE_URL
AnthropicClient client = new();

O manualmente:

using Anthropic;

AnthropicClient client = new() { ApiKey = "my-anthropic-api-key" };

O usando una combinación de ambos enfoques.

Consulta esta tabla para ver las opciones disponibles:

PropiedadVariable de entornoObligatoriaValor predeterminado
ApiKeyANTHROPIC_API_KEYfalse-
AuthTokenANTHROPIC_AUTH_TOKENfalse-
BaseUrlANTHROPIC_BASE_URLtrue"https://api.anthropic.com"

Modificar la configuración

Para usar temporalmente una configuración de cliente modificada, reutilizando la misma conexión y los mismos grupos de subprocesos, llama a WithOptions en cualquier cliente o servicio:

using System;

var message = await client
    .WithOptions(options =>
        options with
        {
            BaseUrl = "https://example.com",
            Timeout = TimeSpan.FromSeconds(42),
        }
    )
    .Messages.Create(parameters);

Console.WriteLine(message);

Usar una expresión with facilita la construcción de las opciones modificadas.

El método WithOptions no afecta al cliente o servicio original.

Streaming

El SDK define métodos que devuelven flujos de "chunks" (fragmentos) de respuesta, donde cada fragmento puede procesarse individualmente tan pronto como llega, en lugar de esperar la respuesta completa. Los métodos de streaming generalmente corresponden a respuestas SSE o JSONL.

Un método de streaming siempre tiene el sufijo Streaming en su nombre, incluso si no tiene una variante sin streaming.

Estos métodos de streaming devuelven IAsyncEnumerable:

using System;
using Anthropic.Models.Messages;

MessageCreateParams parameters = new()
{
    MaxTokens = 1024,
    Messages =
    [
        new()
        {
            Role = Role.User,
            Content = "Hello, Claude",
        },
    ],
    Model = Model.ClaudeOpus4_8,
};

await foreach (var message in client.Messages.CreateStreaming(parameters))
{
    Console.WriteLine(message);
}

Manejo de errores

El SDK lanza tipos de excepciones no comprobadas personalizadas:

  • AnthropicApiException: clase base para errores de la API. Consulta esta tabla para ver qué subclase de excepción se lanza para cada código de estado HTTP:
EstadoExcepción
400AnthropicBadRequestException
401AnthropicUnauthorizedException
403AnthropicForbiddenException
404AnthropicNotFoundException
422AnthropicUnprocessableEntityException
429AnthropicRateLimitException
5xxAnthropic5xxException
otrosAnthropicUnexpectedStatusCodeException

Además, todos los errores 4xx heredan de Anthropic4xxException.

  • AnthropicSseException: se lanza para errores encontrados durante el streaming SSE después de una respuesta HTTP inicial exitosa.

  • AnthropicIOException: errores de red de E/S.

  • AnthropicInvalidDataException: fallo al interpretar datos analizados correctamente. Por ejemplo, al acceder a una propiedad que se supone que es obligatoria, pero que la API omitió inesperadamente de la respuesta.

  • AnthropicException: clase base para todas las excepciones.

Reintentos

El SDK reintenta automáticamente 2 veces de forma predeterminada, con un breve retroceso exponencial entre solicitudes.

Solo se reintentan los siguientes tipos de error:

  • Errores de conexión (por ejemplo, debido a un problema de conectividad de red)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 5xx Internal

La API también puede indicar explícitamente al SDK que reintente o no una solicitud.

Para establecer un número personalizado de reintentos, configura el cliente usando la propiedad MaxRetries:

using Anthropic;

AnthropicClient client = new() { MaxRetries = 3 };

O configura una única llamada a método usando WithOptions:

using System;

var message = await client
    .WithOptions(options =>
        options with { MaxRetries = 3 }
    )
    .Messages.Create(parameters);

Console.WriteLine(message);

Tiempos de espera

Las solicitudes agotan el tiempo de espera después de 10 minutos de forma predeterminada.

Para establecer un tiempo de espera personalizado, configura el cliente usando la opción Timeout:

using System;
using Anthropic;

AnthropicClient client = new() { Timeout = TimeSpan.FromSeconds(42) };

O configura una única llamada a método usando WithOptions:

using System;

var message = await client
    .WithOptions(options =>
        options with { Timeout = TimeSpan.FromSeconds(42) }
    )
    .Messages.Create(parameters);

Console.WriteLine(message);

Paginación

El SDK define métodos que devuelven listas paginadas de resultados. Proporciona formas convenientes de acceder a los resultados, ya sea una página a la vez o elemento por elemento a través de todas las páginas.

Paginación automática

Para iterar a través de todos los resultados en todas las páginas, usa el método Paginate, que obtiene automáticamente más páginas según sea necesario. El método devuelve un IAsyncEnumerable:

using System;

var page = await client.Messages.Batches.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}

Paginación manual

Para acceder a elementos de páginas individuales y solicitar manualmente la página siguiente, usa la propiedad Items y los métodos HasNext y Next:

var page = await client.Messages.Batches.List();
while (true)
{
    foreach (var item in page.Items)
    {
        Console.WriteLine(item);
    }
    if (!page.HasNext())
    {
        break;
    }
    page = await page.Next();
}

Validación de respuestas

En casos excepcionales, la API puede devolver una respuesta que no coincida con el tipo esperado. De forma predeterminada, el SDK no lanza una excepción en este caso. Lanza AnthropicInvalidDataException solo si accedes directamente a la propiedad.

Si prefieres comprobar de antemano que la respuesta está completamente bien tipada, llama a Validate:

var message = await client.Messages.Create(parameters);
message.Validate();

O configura el cliente usando la opción ResponseValidation:

using Anthropic;

AnthropicClient client = new() { ResponseValidation = true };

O configura una única llamada a método usando WithOptions:

using System;

var message = await client
    .WithOptions(options =>
        options with { ResponseValidation = true }
    )
    .Messages.Create(parameters);

Console.WriteLine(message);

Integración con IChatClient

El SDK proporciona una implementación de la interfaz IChatClient de la biblioteca Microsoft.Extensions.AI.Abstractions. Esto permite que AnthropicClient (y Anthropic.Services.IBetaService) se use con otras bibliotecas que se integran con estas abstracciones principales. Por ejemplo, las herramientas de la biblioteca del SDK de C# de MCP (ModelContextProtocol) pueden usarse directamente con un AnthropicClient expuesto a través de IChatClient.

using Anthropic;
using Microsoft.Extensions.AI;
using ModelContextProtocol.Client;

// Configurado mediante las variables de entorno ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN y ANTHROPIC_BASE_URL
AnthropicClient client = new();

IChatClient chatClient = client.AsIChatClient("claude-opus-4-8")
    .AsBuilder()
    .UseFunctionInvocation()
    .Build();

// Usando McpClient del SDK de C# de MCP
McpClient learningServer = await McpClient.CreateAsync(
    new HttpClientTransport(new() { Endpoint = new("https://learn.microsoft.com/api/mcp") }));

ChatOptions options = new() { Tools = [.. await learningServer.ListToolsAsync()] };

Console.WriteLine(await chatClient.GetResponseAsync("Tell me about IChatClient", options));

Solicitudes y respuestas

Para enviar una solicitud a la API de Claude, crea una instancia de una clase Params y pásala al método de cliente correspondiente. Cuando se recibe la respuesta, se deserializa en una instancia de una clase de C#.

Por ejemplo, client.Messages.Create debe llamarse con una instancia de MessageCreateParams, y devolverá una instancia de Task<Message>.

Uso avanzado

Respuestas binarias

El SDK define métodos que devuelven respuestas binarias, que se usan para respuestas de la API que no necesariamente deben analizarse, como datos que no son JSON.

Estos métodos devuelven HttpResponse:

using System;
using Anthropic.Models.Beta.Files;

FileDownloadParams parameters = new() { FileID = "file_id" };

var response = await client.Beta.Files.Download(parameters);

Console.WriteLine(response);

Para guardar el contenido de la respuesta en un archivo, o en cualquier Stream, usa el método CopyToAsync:

using System.IO;

using var response = await client.Beta.Files.Download(parameters);
using var contentStream = await response.ReadAsStream();
using var fileStream = File.Open(path, FileMode.OpenOrCreate);
await contentStream.CopyToAsync(fileStream); // Or any other Stream

Respuestas sin procesar

El SDK define métodos que deserializan respuestas en instancias de clases de C#. Para acceder a los encabezados de respuesta, el código de estado o el cuerpo de la respuesta sin procesar, antepón WithRawResponse a cualquier llamada a método HTTP en un cliente o servicio:

var response = await client.WithRawResponse.Messages.Create(parameters);
var statusCode = response.StatusCode;
var headers = response.Headers;

También se puede acceder al HttpResponseMessage sin procesar a través de la propiedad RawMessage.

Para respuestas sin streaming, puedes deserializar la respuesta en una instancia de una clase de C# si es necesario:

using System;
using Anthropic.Models.Messages;

var response = await client.WithRawResponse.Messages.Create(parameters);
Message deserialized = await response.Deserialize();
Console.WriteLine(deserialized);

Para respuestas con streaming, puedes deserializar la respuesta a un IAsyncEnumerable si es necesario:

using System;

var response = await client.WithRawResponse.Messages.CreateStreaming(parameters);
await foreach (var item in response.Enumerate())
{
    Console.WriteLine(item);
}

Registro de logs

Todos los mensajes de log están destinados únicamente a la depuración. El formato y el contenido de los mensajes de log pueden cambiar entre versiones.

Habilita el registro de depuración estableciendo una variable de entorno:

export ANTHROPIC_LOG=debug

Funcionalidad de API no documentada

El SDK está tipado para un uso conveniente de la API documentada. Sin embargo, también admite trabajar con partes de la API no documentadas o aún no compatibles.

Integraciones de plataforma

Para obtener guías detalladas de configuración de plataforma con ejemplos de código, consulta:

  • Amazon Bedrock
  • Amazon Bedrock (legacy)
  • Vertex AI
  • Microsoft Foundry
  • Claude Platform en AWS

El SDK de C# admite las siguientes plataformas a través de paquetes NuGet separados:

  • Bedrock: Anthropic.Bedrock. Usa AnthropicBedrockMantleClient para el endpoint de Bedrock de la API de Messages, o AnthropicBedrockClient (ruta bedrock-runtime). AnthropicBedrockMantleClient acepta un objeto de configuración opcional MantleAwsClientOptions; AnthropicBedrockClient acepta AnthropicBedrockCredentialsHelper.FromEnv() o credenciales explícitas.
  • Vertex AI: Anthropic.Vertex. Consulta Vertex AI para la configuración del cliente.
  • Foundry: Anthropic.Foundry. Usa AnthropicFoundryClient con DefaultAnthropicFoundryCredentials.FromEnv() o credenciales explícitas.
  • . Usa ; establece en el cliente o la variable de entorno (consulta ). Disponible en beta.

Usa AnthropicBedrockMantleClient para proyectos nuevos; AnthropicBedrockClient se mantiene para aplicaciones existentes que usan la API InvokeModel de Bedrock.

Versionado semántico

Aunque este paquete tiene versión 10+, actualmente está en beta. Durante el período beta, pueden producirse cambios incompatibles en versiones menores o de parche. Una vez que la biblioteca alcance una versión estable, las convenciones de SemVer se seguirán de forma más estricta. Comparte tus comentarios abriendo un issue.

Este paquete generalmente sigue las convenciones de SemVer, aunque ciertos cambios incompatibles con versiones anteriores pueden publicarse como versiones menores:

  1. Cambios en los componentes internos de la biblioteca que son técnicamente públicos pero no están destinados ni documentados para uso externo.
  2. Cambios que no se espera que afecten a la gran mayoría de los usuarios en la práctica.

La compatibilidad con versiones anteriores se toma muy en serio para garantizar que puedas contar con una experiencia de actualización fluida.

Recursos adicionales

  • Repositorio de GitHub
  • Paquete de NuGet
  • Referencia de la API
  • Mensajes con streaming

Was this page helpful?

  • Instalación
  • Requisitos
  • Uso
  • Configuración del cliente
  • Modificar la configuración
  • Streaming
  • Manejo de errores
  • Reintentos
  • Tiempos de espera
  • Paginación
  • Paginación automática
  • Paginación manual
  • Validación de respuestas
  • Integración con IChatClient
  • Solicitudes y respuestas
  • Uso avanzado
  • Respuestas binarias
  • Respuestas sin procesar
  • Registro de logs
  • Funcionalidad de API no documentada
  • Integraciones de plataforma
  • Versionado semántico
  • Recursos adicionales
Claude Platform en AWS:
Anthropic.Aws
AnthropicAwsClient
WorkspaceId
ANTHROPIC_AWS_WORKSPACE_ID
Workspaces