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 端點

要透過 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 端點

  1. 透過 Docker Desktop GUI 或 Docker Desktop CLI 啟用主機端 TCP 支援。例如:docker desktop enable model-runner --tcp <port>

    如果您在 Windows 上執行,請同時啟用 GPU 支援的推理。請參閱在 Docker Desktop 中啟用 Docker 模型執行器

  2. 使用 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."
            }
        ]
    }'