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