DMR REST API
啟用模型執行器後,將提供新的 API 端點。您可以使用這些端點以程式設計方式與模型互動。
確定基本 URL
用於與端點互動的基本 URL 取決於您如何執行 Docker
- 從容器:
http://model-runner.docker.internal/
- 從主機程序:
https://:12434/
,假設在預設埠 (12434) 上啟用了 TCP 主機訪問。
- 從容器:
http://172.17.0.1:12434/
(其中172.17.0.1
表示主機閘道器地址) - 從主機程序:
https://:12434/
注意預設情況下,Compose 專案中的容器可能無法訪問
172.17.0.1
介面。在這種情況下,請在 Compose 服務 YAML 中新增extra_hosts
指令extra_hosts: - "model-runner.docker.internal:host-gateway"
然後,您可以透過 http://model-runner.docker.internal:12434/ 訪問 Docker 模型執行器 API。
可用的 DMR 端點
建立模型
POST /models/create
列出模型
GET /models
獲取模型
GET /models/{namespace}/{name}
刪除本地模型
DELETE /models/{namespace}/{name}
可用的 OpenAPI 端點
DMR 支援以下 OpenAPI 端點
列出模型:
GET /engines/llama.cpp/v1/models
檢索模型:
GET /engines/llama.cpp/v1/models/{namespace}/{name}
POST /engines/llama.cpp/v1/chat/completions
建立完成:
POST /engines/llama.cpp/v1/completions
建立嵌入:
POST /engines/llama.cpp/v1/embeddings
要透過 Unix 套接字 (/var/run/docker.sock
) 呼叫這些端點,請在其路徑前加上 /exp/vDD4.40
。
注意您可以從路徑中省略
llama.cpp
。例如:POST /engines/v1/chat/completions
。
REST API 示例
從容器內請求
要使用 curl
從另一個容器內呼叫 chat/completions
OpenAI 端點
#!/bin/sh
curl http://model-runner.docker.internal/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/smollm2",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Please write 500 words about the fall of Rome."
}
]
}'
使用 TCP 從主機請求
要透過 TCP 從主機呼叫 chat/completions
OpenAI 端點
透過 Docker Desktop GUI 或 Docker Desktop CLI 啟用主機端 TCP 支援。例如:
docker desktop enable model-runner --tcp <port>
。如果您在 Windows 上執行,請同時啟用 GPU 支援的推理。請參閱在 Docker Desktop 中啟用 Docker 模型執行器。
使用
localhost
和正確的埠,按照上一節中描述的方式進行互動。
#!/bin/sh
curl https://:12434/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/smollm2",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Please write 500 words about the fall of Rome."
}
]
}'
使用 Unix 套接字從主機請求
要使用 curl
透過 Docker 套接字從主機呼叫 chat/completions
OpenAI 端點
#!/bin/sh
curl --unix-socket $HOME/.docker/run/docker.sock \
localhost/exp/vDD4.40/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/smollm2",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Please write 500 words about the fall of Rome."
}
]
}'