Saltar para o conteúdo

Documentação da API

Utilize a API compatível com OpenAI do Seven Assistant para integrar funcionalidades de IA nas suas próprias aplicações.

Compatível com OpenAI REST API Streaming

Início rápido

O seu primeiro pedido à API em 2 minutos

Como funciona

A API do Seven Assistant é totalmente compatível com OpenAI. Isto significa que todas as ferramentas, bibliotecas e SDK que funcionam com a API da OpenAI também funcionam com o Seven Assistant. Só precisa de alterar o URL base.

1

Criar uma chave API

Nas Configurações, secção “Chaves API”

2

Definir o URL base

YOUR_DOMAIN/v1/

3

Chamar a API

Como na OpenAI, com os mesmos formatos

Primeiro pedido com 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": "És um assistente prestável."},
      {"role": "user", "content": "O que é a fotossíntese?"}
    ]
  }'

Autenticação

Criar e utilizar chaves API

Criar uma chave API

  1. 1Abra a app do Seven Assistant e vá a Configurações → Chaves API.
  2. 2Clique em “Criar chave API” e atribua um nome (p. ex. “O meu projeto”).
  3. 3Copie a chave imediatamente. Só será mostrada uma vez.

Utilização da chave

Envie a chave no cabeçalho Authorization:

Authorization: Bearer sk-educa-xxxxxxxxxxxxx

⚠ Notas de segurança

  • •Nunca inclua a sua chave API em código do lado do cliente (JavaScript no navegador).
  • •Guarde as chaves em variáveis de ambiente, não no código-fonte.
  • •Se uma chave for comprometida, revogue-a imediatamente nas Configurações.
  • •Crie chaves separadas para projetos diferentes.

Modelos disponíveis

Escolha o modelo adequado ao seu caso de utilização

Padrão

educa-ai

Modelo de utilização geral

O melhor modelo para a maioria dos casos de utilização. Alta qualidade na geração de texto, resumos, traduções e resposta a perguntas.

Rápido

educa-ai-mistral

Mistral Small 3.1

Modelo mais rápido e eficiente. Ideal para volumes elevados de pedidos, tarefas simples e aplicações em tempo real.

Código

educa-ai-code

Qwen3 Coder

Especializado em programação e geração de código. Ideal para autocompletar, depuração e tarefas técnicas.

Obter os modelos através da API

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

Chat Completions

POST /v1/chat/completions

Formato do pedido

{
  "model": "educa-ai",
  "messages": [
    {"role": "system", "content": "És professor de Biologia."},
    {"role": "user", "content": "Explica a mitose em termos simples."}
  ],
  "temperature": 0.7,
  "max_tokens": 1000,
  "stream": false
}

Parâmetros

ParâmetroTipoObrigatórioDescrição
modelstringSimID do modelo (p. ex. educa-ai)
messagesarraySimLista de mensagens com role e content
temperaturenumberNãoCriatividade (0.0 a 2.0, predefinição: depende do modelo)
max_tokensintegerNãoNúmero máximo de tokens gerados
streambooleanNãoAtivar streaming (true/false)
top_pnumberNãoAmostragem de núcleo (0.0 a 1.0)

Formato da resposta

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1711900000,
  "model": "educa-ai",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A mitose é o processo em que..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 156,
    "total_tokens": 184
  }
}

Papéis das mensagens

  • systemDefine o comportamento e o contexto do assistente. É enviada como primeira mensagem.
  • userA mensagem do utilizador: perguntas, instruções ou dados de entrada.
  • assistantRespostas anteriores do assistente. Servem para o histórico da conversa.

Streaming

Respostas em tempo real através de Server-Sent Events (SSE)

Como funciona o streaming

Defina "stream": true no pedido. A resposta é transmitida como Server-Sent Events (SSE) e cada fragmento contém uma parte do texto. O fluxo termina com 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": "Conta até 5"}],
    "stream": true
  }'

Fragmentos do fluxo

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 que servem os embeddings?

Os embeddings convertem texto em vetores numéricos. Estes vetores podem ser utilizados para pesquisa semântica, agrupamento (clustering), sistemas de recomendação e Retrieval Augmented Generation (RAG).

Exemplo

curl YOUR_DOMAIN/v1/embeddings \
  -H "Authorization: Bearer sk-educa-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "educa-ai",
    "input": "A fotossíntese é o processo pelo qual as plantas convertem luz em energia."
  }'

Resposta

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

Exemplos de código e integrações

Exemplos prontos a usar em Python, JavaScript e outras linguagens

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": "És um professor prestável."},
        {"role": "user", "content": "Cria 5 perguntas de quiz sobre a Idade Média."}
    ],
    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": "Explica a democracia."}],
    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="A fotossíntese explicada às crianças"
)

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

Instalação: 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: "És um professor prestável." },
    { role: "user", content: "O que é a regra de três simples?" }
  ]
});

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

// Streaming
const stream = await client.chat.completions.create({
  model: "educa-ai",
  messages: [{ role: "user", content: "Explica o ciclo da água." }],
  stream: true
});

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

Instalação: npm install openai

TypeScript fetch, sem 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: "Cria um plano semanal de Matemática para o 5.º ano." }
    ]
  })
});

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("És um professor prestável."),
        new UserChatMessage("O que é uma parábola em Matemática?")
    }
);

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("Cria um resumo da Revolução Francesa.")
print(response.content)

Instalação: pip install langchain-openai

IDE Continue.dev (VS Code / JetBrains)

Pode utilizar o Seven Assistant como assistente de IA no seu IDE. Configure o seguinte no config.json do Continue.dev:

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

Tratamento de erros e limites

Códigos de estado HTTP, mensagens de erro e limites de pedidos

Códigos de estado HTTP

CódigoSignificado
200Sucesso
400Pedido inválido (p. ex. campo em falta, modelo desconhecido)
401Chave API em falta ou inválida
403Acesso à API não disponível para a sua conta
429Limite de pedidos excedido: aguarde e tente novamente
500Erro interno do servidor

Formato da resposta de erro

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

Limites de pedidos

PlanoLimitePeríodo
Pro100 pedidospor dia

A utilização de tokens é registada por chave API e pode ser consultada nas Configurações.

Limite de pedidos excedido?

  • •Implemente recuo exponencial (exponential backoff): aguarde 1 s, 2 s, 4 s, 8 s, etc. entre tentativas.
  • •Utilize cache para pedidos repetidos com conteúdo idêntico.
  • •Utilize agrupamento (batching): combine várias perguntas num só prompt.

Pronto para começar?

Crie a sua primeira chave API e integre o Seven Assistant na sua aplicação.

Abrir app