# Compatibilidade com OpenAI e Ollama

> Como um serviço LMSP continua compatível com clientes OpenAI e Ollama existentes por meio de uma fina camada de conversão de dados sobre um único núcleo de execução, e onde essa compatibilidade termina.

Source: https://madeforagent.com/pt-br/lmsp/1.0/compatibility/
Language: pt-BR
Specification: LMSP 1.0 (draft)
Updated: 2026-11-08

## 8.1 Endpoints compatíveis com a OpenAI {#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](https://madeforagent.com/pt-br/lmsp/1.0/mvp.md)).

## 8.2 Endpoints compatíveis com o Ollama {#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 {#core}

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.

```text
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 {#boundaries}

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_url` alterado. 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.
