Inceptiva· SDKv0.4.0
SDK

.NET

El paquete oficial Inceptiva tiene como objetivo .NET 8 o posterior.

Instalación

shell
dotnet add package Inceptiva

Cliente y agente

csharp
using Inceptiva;

var client = new InceptivaClient(
    apiKey: Environment.GetEnvironmentVariable("INCEPTIVA_API_KEY")!,
    agentId: Environment.GetEnvironmentVariable("INCEPTIVA_AGENT_ID")!
);

var agent = await client.GetAgentAsync();
Console.WriteLine(agent.Capabilities);

Respuestas y continuidad

csharp
var first = await client.Responses.CreateAsync(new InvokeRequest(
    Message: "Analiza esta oportunidad",
    Metadata: new Dictionary<string, object?> { ["source"] = "crm" }
));

var followUp = await client.Responses.CreateAsync(new InvokeRequest(
    Message: "¿Cuál es el siguiente paso?",
    ConversationId: first.ConversationId
));

Console.WriteLine(followUp.Response);
Console.WriteLine(followUp.Citations.Count);

client.InvokeAsync(...) permanece disponible como alias compatible.

Streaming SSE

csharp
await foreach (var streamEvent in client.Responses.StreamAsync(
    new InvokeRequest("Resume la oportunidad", followUp.ConversationId),
    cancellationToken
))
{
    if (streamEvent is ResponseOutputTextDeltaEvent delta)
        Console.Write(delta.Delta);
}

InceptivaStreaming.CollectAsync(...) acumula los deltas y devuelve un InvokeResponse final. La enumeración libera la conexión al completarse, cancelarse o abandonarse. Un stream iniciado nunca se reintenta automáticamente.

Historial y eliminación

csharp
var history = await client.Conversations.GetMessagesAsync(followUp.ConversationId);

foreach (var message in history.Items)
    Console.WriteLine($"{message.Role}: {message.Content}");

await client.Conversations.DeleteAsync(followUp.ConversationId);

Errores y cancelación

csharp
try
{
    await client.GetAgentAsync(cancellationToken);
}
catch (InceptivaRateLimitException error)
{
    Console.WriteLine(error.RetryAfter);
}
catch (InceptivaApiException error)
{
    Console.WriteLine($"{error.Status}: {error.Detail}");
}

También se exportan excepciones específicas para 401, 403, 404 y 422. Todas las operaciones aceptan CancellationToken. El SDK solo expone citas públicas y nunca retrieval_sources.

Contrato robusto 0.4.0

csharp
var result = await client.Responses.CreateAsync(new InvokeRequest(
    Message: "Actualiza el resumen",
    ExternalReference: "ticket-4821",
    IdempotencyKey: "request-unique-id"
));

var history = await client.Conversations.GetMessagesAsync(result.ConversationId, page: 1, pageSize: 50);
Console.WriteLine(result.ResponseMetadata?.IdempotencyReplayed);
Console.WriteLine(history.Total);