Saltar ao contido
Visión xeral

Visión xeral

O mapa da API: todos os endpoints, como son unha solicitude e un erro, como se pagan as chamadas e o que convén saber cando vés dun SDK de OpenAI ou Anthropic.

Endpoints

Todos os endpoints están baixo unha URL base e serven por HTTPS.

URL base
https://api.shannon-ai.com
Endpoint Formato Para que serve
POST /v1/chat/completions OpenAI Chat Completions Envía unha conversa e obtén a seguinte resposta. Con ou sen streaming.
POST /v1/messages Anthropic Messages O mesmo, coas formas de solicitude e resposta dos SDK de Anthropic.
POST /v1/responses OpenAI Responses O mesmo, coas formas de Responses. O endpoint non garda estado: envía a conversa en cada solicitude.
GET /v1/models Lista de modelos de OpenAI Lista os modelos coa ventá de contexto, os prezos e as capacidades. Non necesita clave.
POST /v1/tokenize API de Shannon Conta os tokens dun texto ou dunha solicitude de chat para un modelo open-weight alojado. Gratuíto.
POST /v1/messages/count_tokens Reconto de tokens de Anthropic Conta os tokens de entrada dunha solicitude de Messages para un modelo open-weight alojado. Gratuíto.

Os tres endpoints que producen texto chegan aos mesmos modelos. Escolle aquel cuxo formato xa usa o teu código.

Conceptos básicos da solicitude

Cabeceira Descrición
Authorization: Bearer <key> A túa clave API. Obrigatoria en todos os endpoints excepto GET /v1/models, a menos que envíes x-api-key.
x-api-key: <key> A mesma clave na cabeceira que envían os SDK de Anthropic. Lese en todos os endpoints.
Content-Type: application/json Obrigatoria en todos os POST. Sen ela, a resposta é 415.
x-request-id: <your id> Opcional. O teu propio id para a solicitude; volve na cabeceira de resposta x-request-id. Sen el, a API crea un de 12 caracteres hexadecimais.
  • O corpo de cada POST é un obxecto JSON, de ata 32 MiB.
  • Un campo que a API non coñece non causa ningún erro nin ten efecto. Unha solicitude escrita para outro provedor non falla por un campo adicional.
  • Un campo coñecido co tipo JSON incorrecto, ou un campo obrigatorio ausente, recibe 422. Un corpo que non é JSON válido recibe 400.
  • model é un dos ids de Modelos e prezos. Non importan as maiúsculas e minúsculas.

Unha resposta é JSON, ou un stream de server-sent events cando a solicitude define stream como true. Cada endpoint responde no seu propio formato. Todas as respostas teñen a cabeceira x-request-id.

O que pasa unha solicitude

Unha solicitude comprobase nunha orde fixa antes de que se execute un modelo. Responde a primeira comprobación que falla, así que un 401 aínda non che di nada sobre o corpo.

Forma dos erros

Un erro é un obxecto JSON cun error que contén type e message. /v1/messages envólveo como esperan os SDK de Anthropic; todas as demais rutas usan a forma de OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Le type e message. code e param só están presentes nalgúns erros: trátaos como opcionais. param é sempre null.
  • Despois de que comece un stream, o estado xa é 200. Un fallo chega entón como un frame de erro dentro do stream.
  • Todas as respostas de erro levan a cabeceira x-request-id.
Estado Tipo Cando
400 invalid_request_error O corpo non é JSON válido, o id do modelo é descoñecido, ou o modelo non acepta un tipo de entrada que enviaches.
401 authentication_error A clave falta ou non é válida.
404 not_found_error A ruta non existe.
405 api_error A ruta existe, pero o método é incorrecto.
413 invalid_request_error O corpo é maior de 32 MiB.
415 invalid_request_error Content-Type non é application/json.
422 invalid_request_error Un campo ten o tipo JSON incorrecto ou falta un campo obrigatorio.
429 rate_limit_error O saldo non cobre a solicitude, chegaron máis de 120 solicitudes nun minuto, esgotáronse as chamadas de Shannon Coder da xanela ou o modelo está ocupado. A mensaxe indica cal é o caso.
5xx api_error Estado 500, 502, 503 ou 504: a solicitude era válida e non se puido responder. Envíaa de novo. Un 500 pode levar o tipo server_error.

Xestión de erros

Facturación e saldo

  • Hai un saldo por conta, e o chat e a API compártenno: primeiro a cota do plan de hoxe e despois o crédito adquirido. A API non ten cota propia.
  • Unha solicitude reserva o seu orzamento de saída (max_tokens, 4,096 por defecto) e despois cóbrase polos tokens que realmente usou, ao prezo do modelo.
  • Todas as respostas informan dos seus recontos de tokens en usage. A páxina Claves e uso mostra o saldo e o que custou cada solicitude.
  • Todas as solicitudes se atenden por igual. O único límite á taxa de solicitudes é a protección contra inundación: 120 solicitudes por minuto e conta. As solicitudes enviadas en paralelo agardan na cola.

Límites e saldo Modelos e prezos Claves e uso

Campos que dependen do modelo

Todos os modelos aceptan a mesma solicitude. Uns poucos campos teñen efecto só nalgúns modelos; a táboa indica onde. As páxinas dos endpoints listan todos os campos.

Campo Descrición Aplicado por
system Instrucións para o modelo: unha mensaxe system en Chat Completions, system en Messages, instructions en Responses. Modelos open-weight alojados, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Temperatura de mostraxe. Modelos open-weight alojados, shannon-1.6-*, shannon-coder-1
top_p Mostraxe por núcleo (nucleus sampling). Modelos open-weight alojados
seed Unha semente fixa para a mostraxe. Modelos open-weight alojados
stop Ata 4 secuencias de parada. Modelos open-weight alojados
reasoning_effort Canto razoa o modelo antes de responder. reasoning.effort en Responses, thinking en Messages. Modelos open-weight alojados
web_search true permite que o modelo busque na web para esta solicitude. Un campo desta API, en Chat Completions e Messages. Modelos Shannon excepto shannon-coder-1
max_tokens O orzamento de saída. En todos os modelos define a cantidade reservada do teu saldo. Como límite da lonxitude da resposta: modelos open-weight alojados, shannon-1.6-*, shannon-coder-1

Chat Completions

Se vés dun SDK de OpenAI

  • Define a URL base como https://api.shannon-ai.com/v1 e a clave como a túa clave de Shannon. As chamadas a Chat Completions e Responses funcionan entón co SDK tal como está.
  • model debe ser un id de Shannon. Un nome de modelo doutro provedor, como gpt-4o, recibe 400 e unknown model.
  • O razoamento vén nun campo propio: reasoning_content xunto a content, na mensaxe e nos deltas do stream.
  • Un stream leva sempre usage no seu último chunk, xunto con finish_reason.
  • Unha chamada a unha ferramenta nun stream chega como un chunk coa cadea arguments completa.
  • Unha resposta ten unha soa opción (choice).
  • As rutas da API de OpenAI que non están na táboa anterior, como /v1/embeddings, reciben 404.

Se vés dun SDK de Anthropic

  • Define a URL base como https://api.shannon-ai.com, sen /v1, e a clave como a túa clave de Shannon. O SDK envíaa como x-api-key.
  • model debe ser un id de Shannon.
  • max_tokens é opcional nesta API. O seu valor predeterminado é 4,096.
  • Unha resposta contén bloques de contido de tipo thinking, text e tool_use. O primeiro bloque non sempre é o texto: escolle os bloques por type.
  • stop_reason é end_turn ou tool_use. Un stream dun modelo Shannon tamén pode rematar con max_tokens.
  • Acéptanse anthropic-version e anthropic-beta, así que o SDK funciona sen cambios. Unha solicitude non os necesita.
  • Os erros en /v1/messages teñen a forma de Anthropic: {"type": "error", "error": {…}}.

As ferramentas de programación que falan estes formatos configúranse da mesma maneira: URL base, clave e un id de Shannon como modelo. Ferramentas de código CLI