Saltar al contenido

Documentación de la API

Usa la API compatible con OpenAI de Seven Assistant para integrar capacidades de IA en tus propias aplicaciones.

Compatible con OpenAI REST API Streaming

Inicio rápido

Tu primera solicitud a la API en 2 minutos

Cómo funciona

La API de Seven Assistant es totalmente compatible con OpenAI. Esto significa: cualquier herramienta, biblioteca y SDK que funcione con la API de OpenAI también funciona con Seven Assistant. Solo necesitas cambiar la URL base.

1

Crear una clave API

En ajustes, sección “Claves API”

2

Establecer la URL base

YOUR_DOMAIN/v1/

3

Llamar a la API

Igual que OpenAI: mismos formatos

Primera solicitud con curl

curl YOUR_DOMAIN/v1/chat/completions \
  -H "Authorization: Bearer sk-educa-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "educa-ai",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "What is photosynthesis?"}
    ]
  }'

Autenticación

Crear y utilizar claves API

Crear una clave API

  1. 1Abre la app de Seven Assistant y ve a Ajustes → Claves API.
  2. 2Haz clic en “Crear clave API” y asigna un nombre (p. ej. “Mi proyecto”).
  3. 3Copia la clave inmediatamente: solo se mostrará una vez.

Uso de la clave

Envía la clave en la cabecera Authorization:

Authorization: Bearer sk-educa-xxxxxxxxxxxxx

⚠ Notas de seguridad

  • •Nunca incluyas tu clave API en código del lado del cliente (JavaScript en el navegador).
  • •Almacena las claves en variables de entorno, no en el código fuente.
  • •Si una clave se ve comprometida, revócala inmediatamente en los ajustes.
  • •Crea claves separadas para diferentes proyectos.

Modelos disponibles

Elige el modelo adecuado para tu caso de uso

Estándar

educa-ai

Modelo de uso general

El mejor modelo para la mayoría de los casos de uso. Alta calidad para generación de texto, resúmenes, traducciones y respuesta a preguntas.

Rápido

educa-ai-mistral

Mistral Small 3.1

Modelo más rápido y eficiente. Ideal para requisitos de alto rendimiento, tareas sencillas y aplicaciones en tiempo real.

Código

educa-ai-code

Qwen3 Coder

Optimizado para programación y generación de código. Ideal para autocompletado, depuración y tareas técnicas.

Obtener modelos a través de la API

curl YOUR_DOMAIN/v1/models \
  -H "Authorization: Bearer sk-educa-YOUR_API_KEY"

Chat Completions

POST /v1/chat/completions

Formato de solicitud

{
  "model": "educa-ai",
  "messages": [
    {"role": "system", "content": "You are a biology teacher."},
    {"role": "user", "content": "Explain mitosis in simple terms."}
  ],
  "temperature": 0.7,
  "max_tokens": 1000,
  "stream": false
}

Parámetros

ParámetroTipoObligatorioDescripción
modelstring✓ID del modelo (p. ej. educa-ai)
messagesarray✓Lista de mensajes con role y content
temperaturenumber–Creatividad (0.0 – 2.0, por defecto: depende del modelo)
max_tokensinteger–Número máximo de tokens generados
streamboolean–Activar streaming (true/false)
top_pnumber–Muestreo de núcleo (0.0 – 1.0)

Formato de respuesta

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1711900000,
  "model": "educa-ai",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Mitosis is the process in which..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 156,
    "total_tokens": 184
  }
}

Roles de mensajes

  • systemDefine el comportamiento y el contexto del asistente. Se envía como primer mensaje.
  • userEl mensaje del usuario: preguntas, instrucciones o datos de entrada.
  • assistantRespuestas anteriores del asistente. Se utiliza para el historial de conversación.

Streaming

Respuestas en tiempo real mediante Server-Sent Events (SSE)

Cómo funciona el streaming

Establece "stream": true en la solicitud. La respuesta se transmite como Server-Sent Events (SSE). Cada fragmento contiene una parte del texto. El flujo termina con data: [DONE].

curl YOUR_DOMAIN/v1/chat/completions \
  -H "Authorization: Bearer sk-educa-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -N \
  -d '{
    "model": "educa-ai",
    "messages": [{"role": "user", "content": "Count to 5"}],
    "stream": true
  }'

Fragmentos del flujo

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1711900000,"model":"educa-ai","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1711900000,"model":"educa-ai","choices":[{"index":0,"delta":{"content":"1, "},"finish_reason":null}]}

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1711900000,"model":"educa-ai","choices":[{"index":0,"delta":{"content":"2, "},"finish_reason":null}]}

data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","created":1711900000,"model":"educa-ai","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

Embeddings

POST /v1/embeddings

¿Para qué sirven los embeddings?

Los embeddings convierten texto en vectores numéricos. Estos vectores se pueden utilizar para búsqueda semántica, agrupamiento, sistemas de recomendación y Generación Aumentada por Recuperación (RAG).

Ejemplo

curl YOUR_DOMAIN/v1/embeddings \
  -H "Authorization: Bearer sk-educa-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "educa-ai",
    "input": "Photosynthesis is the process by which plants convert light into energy."
  }'

Respuesta

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "embedding": [0.0023, -0.0091, 0.0152, ...],
      "index": 0
    }
  ],
  "model": "educa-ai",
  "usage": {
    "prompt_tokens": 18,
    "total_tokens": 18
  }
}

Ejemplos de código e integraciones

Ejemplos listos para usar en Python, JavaScript y más

Python OpenAI SDK
from openai import OpenAI

client = OpenAI(
    api_key="sk-educa-YOUR_API_KEY",
    base_url="YOUR_DOMAIN/v1/"
)

# Chat Completion
response = client.chat.completions.create(
    model="educa-ai",
    messages=[
        {"role": "system", "content": "You are a helpful teacher."},
        {"role": "user", "content": "Create 5 quiz questions about the Middle Ages."}
    ],
    temperature=0.7,
    max_tokens=1000
)

print(response.choices[0].message.content)

# Streaming
stream = client.chat.completions.create(
    model="educa-ai",
    messages=[{"role": "user", "content": "Explain democracy."}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

# Embeddings
embedding = client.embeddings.create(
    model="educa-ai",
    input="Photosynthesis explained for children"
)

print(embedding.data[0].embedding[:5])

Instalación: pip install openai

JavaScript Node.js: OpenAI SDK
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-educa-YOUR_API_KEY",
  baseURL: "YOUR_DOMAIN/v1/"
});

// Chat Completion
const response = await client.chat.completions.create({
  model: "educa-ai",
  messages: [
    { role: "system", content: "You are a helpful teacher." },
    { role: "user", content: "What is the rule of three?" }
  ]
});

console.log(response.choices[0].message.content);

// Streaming
const stream = await client.chat.completions.create({
  model: "educa-ai",
  messages: [{ role: "user", content: "Explain the water cycle." }],
  stream: true
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}

Instalación: npm install openai

TypeScript fetch: sin SDK
const response = await fetch("YOUR_DOMAIN/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk-educa-YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "educa-ai",
    messages: [
      { role: "user", content: "Create a weekly plan for math, grade 5." }
    ]
  })
});

const data = await response.json();
console.log(data.choices[0].message.content);
C# .NET: Azure OpenAI SDK
using Azure.AI.OpenAI;
using OpenAI.Chat;
using System.ClientModel;

var client = new ChatClient(
    model: "educa-ai",
    credential: new ApiKeyCredential("sk-educa-YOUR_API_KEY"),
    options: new OpenAIClientOptions
    {
        Endpoint = new Uri("YOUR_DOMAIN/v1/")
    }
);

var response = await client.CompleteChatAsync(
    new ChatMessage[]
    {
        new SystemChatMessage("You are a helpful teacher."),
        new UserChatMessage("What is a parabola in math?")
    }
);

Console.WriteLine(response.Value.Content[0].Text);

NuGet: Azure.AI.OpenAI

Python LangChain
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="educa-ai",
    api_key="sk-educa-YOUR_API_KEY",
    base_url="YOUR_DOMAIN/v1/"
)

response = llm.invoke("Create a summary of the French Revolution.")
print(response.content)

Instalación: pip install langchain-openai

IDE Continue.dev (VS Code / JetBrains)

Puedes usar Seven Assistant como asistente de IA en tu IDE. Configura lo siguiente en el config.json de Continue.dev:

{
  "models": [
    {
      "title": "Seven Assistant",
      "provider": "openai",
      "model": "educa-ai",
      "apiKey": "sk-educa-YOUR_API_KEY",
      "apiBase": "YOUR_DOMAIN/v1/"
    }
  ]
}

Manejo de errores y límites

Códigos de estado HTTP, mensajes de error y límites de frecuencia

Códigos de estado HTTP

CódigoSignificado
200Éxito
400Solicitud inválida (p. ej. campo faltante, modelo desconocido)
401Clave API faltante o inválida
403Acceso a la API no disponible para tu cuenta
429Límite de frecuencia excedido: espera e inténtalo de nuevo
500Error interno del servidor

Formato de respuesta de error

{
  "error": {
    "message": "Model 'unknown-model' is not available.",
    "type": "invalid_request_error",
    "code": "model_not_found"
  }
}

Límites de frecuencia

PlanLímitePeriodo
Pro100 solicitudespor día

El uso de tokens se registra por clave API y se puede consultar en los ajustes.

¿Límite de frecuencia excedido?

  • •Implementa retroceso exponencial: espera 1s, 2s, 4s, 8s, etc. entre intentos.
  • •Usa caché para solicitudes repetidas con contenido idéntico.
  • •Usa agrupamiento: combina varias preguntas en un solo prompt.

¿Listo para empezar?

Crea tu primera clave API e integra Seven Assistant en tu aplicación.

Abrir app