Documentación de la API
Usa la API compatible con OpenAI de Seven Assistant para integrar capacidades de IA en tus propias aplicaciones.
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.
Crear una clave API
En ajustes, sección “Claves API”
Establecer la URL base
YOUR_DOMAIN/v1/
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
- 1Abre la app de Seven Assistant y ve a Ajustes → Claves API.
- 2Haz clic en “Crear clave API” y asigna un nombre (p. ej. “Mi proyecto”).
- 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
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.
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.
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ámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| model | string | ✓ | ID del modelo (p. ej. educa-ai) |
| messages | array | ✓ | Lista de mensajes con role y content |
| temperature | number | – | Creatividad (0.0 – 2.0, por defecto: depende del modelo) |
| max_tokens | integer | – | Número máximo de tokens generados |
| stream | boolean | – | Activar streaming (true/false) |
| top_p | number | – | 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
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
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
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);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
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
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ódigo | Significado |
|---|---|
| 200 | Éxito |
| 400 | Solicitud inválida (p. ej. campo faltante, modelo desconocido) |
| 401 | Clave API faltante o inválida |
| 403 | Acceso a la API no disponible para tu cuenta |
| 429 | Límite de frecuencia excedido: espera e inténtalo de nuevo |
| 500 | Error 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
| Plan | Límite | Periodo |
|---|---|---|
| Pro | 100 solicitudes | por 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.