Compatibilidade com OpenAI e Ollama
- Normativa
- Rascunho 1.0
- Atualizado em
- Ver como Markdown
8.1 Endpoints compatíveis com a OpenAI
Um serviço DEVERIA oferecer uma interface compatível com a OpenAI ao lado da interface LMSP e declará-la em interfaces com kind definido como openai. Para atender aos clientes existentes, um serviço que faz isso DEVE implementar pelo menos estes endpoints sob o prefixo /v1:
| Endpoint | Observações |
|---|---|
GET /v1/models |
Lista os modelos do catálogo LMSP. Cada id é o ID de modelo do LMSP. |
POST /v1/chat/completions |
Chat Completions, com e sem streaming. |
POST /v1/responses |
O formato OpenAI Responses. |
POST /v1/embeddings |
A interface principal do LMSP 1.0 não tem endpoint de embeddings. O adaptador serve este endpoint diretamente, para modelos cujo capabilities.embeddings é true. |
Esses endpoints aceitam os mesmos tokens de portador que a interface LMSP. Um cliente que fala o protocolo OpenAI define o token do LMSP como sua chave de API.
Uma primeira implementação pode começar com /v1/models e /v1/chat/completions (página 12).
8.2 Endpoints compatíveis com o Ollama
Um serviço DEVERIA fornecer também estes endpoints, para que os clientes escritos para o Ollama funcionem igualmente:
| Endpoint | Observações |
|---|---|
GET /api/tags |
Lista os modelos do catálogo LMSP. |
POST /api/chat |
Chat. |
POST /api/generate |
Geração de texto simples. |
Um serviço que os fornece declara uma interface com kind definido como ollama.
8.3 Um único núcleo de execução
A camada de compatibilidade DEVE apenas converter dados. Ela NÃO DEVE criar um segundo conjunto de lógica de gerenciamento de modelos. Uma requisição em uma interface de compatibilidade é mapeada para uma resposta LMSP, roda no mesmo núcleo e no mesmo adaptador que uma requisição nativa e usa o mesmo catálogo de modelos e a mesma autenticação.
OpenAI Chat Completions
| mapeamento da requisição
v
LMSP Response
| adaptação ao backend
v
llama.cpp / Ollama / vLLM / outros ambientes de execução
Nos endpoints /v1 e /api, um serviço DEVERIA relatar os erros no formato que a API correspondente define, para que clientes não modificados consigam interpretá-los. A interface LMSP sempre usa application/problem+json.
8.4 Limites
A compatibilidade tem limites, e vale a pena enunciá-los com clareza:
- Um cliente existente compatível com a OpenAI geralmente só precisa de um
base_urlalterado. Ele não ganha automaticamente a descoberta do LMSP. - Somente os clientes que suportam o LMSP conseguem descobrir um serviço automaticamente, ler suas capacidades detalhadas, retomar fluxos de eventos e gerenciar tarefas assíncronas.
- Nenhum protocolo do lado do servidor consegue fazer funcionar um cliente que não pode ser configurado e aceita apenas endereços oficiais de nuvem.