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."
            }
        ]
    }'
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.