Saltar al contenido
SDKs

SDKs

Cualquier SDK de OpenAI o Anthropic funciona sin configuración adicional.

Shannon habla los formatos de red de OpenAI y de Anthropic, así que usas los SDK oficiales de ambos tal como son. Cambias tres valores en el cliente: la URL base, la clave API y el id del modelo. El resto de tu código queda igual.

Qué configurar

Ajuste SDK de OpenAI SDK de Anthropic
URL base https://api.shannon-ai.com/v1 https://api.shannon-ai.com
Clave API Tu clave de Shannon. El SDK la envía como Authorization: Bearer. Tu clave de Shannon. El SDK la envía como x-api-key.
Modelo Un id de modelo publicado, por ejemplo shannon-3. Un id de modelo publicado, por ejemplo shannon-1.6-lite.
Endpoints a los que llega /v1/chat/completions, /v1/responses, /v1/models /v1/messages, /v1/messages/count_tokens
Variables de entorno OPENAI_API_KEY y OPENAI_BASE_URL, que leen los SDK de Python y JavaScript cuando no pasas ningún valor. ANTHROPIC_API_KEY y ANTHROPIC_BASE_URL, que leen los SDK de Python y TypeScript cuando no pasas ningún valor.

Las dos URL base se diferencian por /v1: un SDK de OpenAI añade /chat/completions a su URL base, un SDK de Anthropic añade /v1/messages. Un nombre de modelo que Shannon no publica se responde con 400 y unknown model. Modelos y precios

Tu clave está en la página Keys & usage. Claves y uso

SDK de OpenAI

Los SDK oficiales de OpenAI llaman a POST /v1/chat/completions y POST /v1/responses. Cada ejemplo envía un mensaje de usuario e imprime la respuesta.

# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
print(response.choices[0].message.content)
Lenguaje Instalación Opción de URL base Código fuente
Python pip install openai base_url openai/openai-python
JavaScript / TypeScript npm install openai baseURL openai/openai-node
Go go get github.com/openai/openai-go/v3 option.WithBaseURL openai/openai-go
Java com.openai:openai-java baseUrl openai/openai-java
.NET dotnet add package OpenAI OpenAIClientOptions.Endpoint openai/openai-dotnet

Cada campo de los dos endpoints se describe en sus propias páginas. Chat Completions API Responses

SDK de Anthropic

Los SDK oficiales de Anthropic llaman a POST /v1/messages. Exigen max_tokens en cada llamada, por eso los ejemplos usan shannon-1.6-lite, que lo aplica. Cada ejemplo imprime los bloques de texto de la respuesta.

# pip install anthropic
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="shannon-1.6-lite",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
for block in message.content:
    if block.type == "text":
        print(block.text)
Lenguaje Instalación Opción de URL base Código fuente
Python pip install anthropic base_url anthropics/anthropic-sdk-python
TypeScript npm install @anthropic-ai/sdk baseURL anthropics/anthropic-sdk-typescript
Go go get github.com/anthropics/anthropic-sdk-go option.WithBaseURL anthropics/anthropic-sdk-go
Java com.anthropic:anthropic-java baseUrl anthropics/anthropic-sdk-java

El formato Messages y sus diferencias están en la página de compatibilidad con Anthropic. Formato Anthropic

En qué pueden confiar los SDK

  • Un campo de solicitud que la API no usa se acepta. Un campo que la API conoce, enviado con el tipo incorrecto, se responde con 422.
  • Los headers de versión y beta que añaden los SDK (anthropic-version, anthropic-beta, openai-beta) se aceptan. Ninguno es obligatorio.
  • El model de una respuesta es el id publicado, así que puedes enviarlo de vuelta tal cual.
  • En /v1/messages una respuesta puede empezar con un bloque thinking. Lee los bloques de tipo text en lugar de tomar el primer bloque.
  • El streaming funciona con los helpers de stream del propio SDK. El uso llega al final de cada stream.
  • Toda respuesta lleva un header x-request-id. Envía tu propio x-request-id y vuelve el mismo valor.

SDK de la comunidad

Los clientes escritos para la API de OpenAI por otros autores funcionan igual: dale al cliente la URL base con /v1, tu clave y un id de modelo de Shannon. Los mantienen sus autores, no Shannon.

Lenguaje Instalación Cliente
Go go get github.com/sashabaranov/go-openai sashabaranov/go-openai
Ruby gem install ruby-openai alexrudall/ruby-openai
PHP composer require openai-php/client openai-php/client
Rust cargo add async-openai 64bit/async-openai

Sin un SDK

No necesitas un SDK. Sirve cualquier cliente HTTP que pueda enviar JSON:

  • POST con un cuerpo JSON y el header Content-Type: application/json. Sin él la solicitud se responde con 415.
  • Tu clave en Authorization: Bearer <key> o en x-api-key: <key>. Ambas funcionan en todos los endpoints.
  • Un cuerpo de hasta 32 MiB.
  • Con "stream": true la respuesta es un stream de server-sent events (text/event-stream). Léelo línea por línea y no lo almacenes en búfer.
  • Un error es un cuerpo JSON con error.type y error.message, junto al estado HTTP.
curl https://api.shannon-ai.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shannon-3",
    "messages": [{"role": "user", "content": "Hello, Shannon!"}]
  }'

Para los eventos de un stream y los tipos de error, consulta: Streaming Manejo de errores