# OpenAI 및 Ollama 호환성

> LMSP 서비스가 하나의 실행 코어 위에 얇은 데이터 변환 계층을 두어 기존 OpenAI 및 Ollama 클라이언트와 호환되는 방법과, 그 호환성의 한계를 설명합니다.

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

## 8.1 OpenAI 호환 엔드포인트 {#openai}

서비스는 LMSP 인터페이스와 함께 OpenAI 호환 인터페이스를 제공하고 `interfaces`에 `kind`를 `openai`로 선언하는 **것이 좋다**. 기존 클라이언트를 지원하기 위해, 그렇게 하는 서비스는 `/v1` 접두사 아래에 최소한 다음 엔드포인트를 구현**해야 한다**.

| 엔드포인트 | 비고 |
| --- | --- |
| `GET /v1/models` | LMSP 카탈로그의 모델을 나열한다. 각 `id`는 LMSP 모델 id이다. |
| `POST /v1/chat/completions` | Chat Completions. 스트리밍 여부 모두 지원. |
| `POST /v1/responses` | OpenAI Responses 형태. |
| `POST /v1/embeddings` | LMSP 1.0 핵심 인터페이스에는 embeddings 엔드포인트가 없다. 어댑터가 `capabilities.embeddings`가 `true`인 모델을 위해 이 엔드포인트를 직접 제공한다. |

이 엔드포인트들은 LMSP 인터페이스와 같은 베어러 토큰을 받는다. OpenAI 프로토콜을 쓰는 클라이언트는 LMSP 토큰을 API 키로 설정한다.

첫 구현은 `/v1/models`와 `/v1/chat/completions`로 시작할 수 있다([12장](https://madeforagent.com/ko/lmsp/1.0/mvp.md)).

## 8.2 Ollama 호환 엔드포인트 {#ollama}

서비스는 Ollama용으로 작성된 클라이언트도 동작하도록 다음 엔드포인트도 제공하는 **것이 좋다**.

| 엔드포인트 | 비고 |
| --- | --- |
| `GET /api/tags` | LMSP 카탈로그의 모델을 나열한다. |
| `POST /api/chat` | 채팅. |
| `POST /api/generate` | 일반 텍스트 생성. |

이를 제공하는 서비스는 `kind`가 `ollama`인 인터페이스를 선언한다.

## 8.3 하나의 실행 코어 {#core}

호환 계층은 데이터 변환만 수행해**야 한다**. 모델 관리 로직을 별도로 만들어서는 **안 된다**. 호환 인터페이스의 요청은 LMSP 응답으로 매핑되어, 네이티브 요청과 같은 코어와 어댑터에서 실행되며, 같은 모델 카탈로그와 인증을 사용한다.

```text
OpenAI Chat Completions
          |  요청 매핑
          v
     LMSP Response
          |  백엔드 적응
          v
llama.cpp / Ollama / vLLM / 기타 런타임
```

`/v1`과 `/api` 엔드포인트에서 서비스는 수정하지 않은 클라이언트가 해석할 수 있도록, 해당 API가 정의한 형식으로 오류를 보고하는 **것이 좋다**. LMSP 인터페이스는 항상 `application/problem+json`을 사용한다.

## 8.4 한계 {#boundaries}

호환성에는 한계가 있으며, 이를 분명히 밝혀 둘 필요가 있다.

- 기존 OpenAI 호환 클라이언트는 보통 `base_url`만 바꾸면 된다. LMSP 검색이 자동으로 생기지는 않는다.
- 서비스를 자동으로 찾고, 자세한 기능을 읽고, 이벤트 스트림을 재개하고, 비동기 작업을 관리할 수 있는 것은 LMSP를 지원하는 클라이언트뿐이다.
- 설정할 수 없고 공식 클라우드 주소만 받아들이는 클라이언트를 동작하게 만들 수 있는 서버 측 프로토콜은 없다.
