DMR REST API
一旦啟用了 Model Runner,新的 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/
注意
172.17.0.1介面預設可能無法供 Compose 專案中的容器存取。在此情況下,請將extra_hosts指令新增至您的 Compose 服務 YAML 中extra_hosts: - "model-runner.docker.internal:host-gateway"之後,您就可以透過 http://model-runner.docker.internal:12434/ 存取 Docker Model Runner 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/completionsPOST /engines/llama.cpp/v1/completionsPOST /engines/llama.cpp/v1/embeddings
若要透過 Unix socket (/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 Model Runner。
使用
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 socket 從主機請求
若要從主機使用 curl 透過 Docker socket 呼叫 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."
}
]
}'