你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
- Foundry Local 以预览版形式提供。 通过公共预览版,可以提前访问正处于开发状态的功能。
- 正式发布 (GA) 之前,功能、方法和流程可能会发生更改或功能受限。
谨慎
此 API 正在积极开发中,可能会包含不通知的重大变更。 强烈建议在生成生产应用程序之前监视更改日志。
OpenAI v1 兼容性
POST /v1/chat/completions
此终结点处理聊天完成请求。
它与 OpenAI 聊天完成 API 完全兼容。
请求正文:
---Standard OpenAI 属性---
-
model(字符串)
用于完成的具体模型。 -
messages(数组)
将对话历史记录显示为消息列表。- 每条消息都需要:
-
role(字符串)
邮件发件人的角色。 必须为system、user或assistant。 -
content(字符串)
实际消息文本。
-
- 每条消息都需要:
-
temperature(数字,可选)
控制随机性,范围为 0 到 2。 较高的值 (0.8) 会创建不同的输出,而较低值 (0.2) 则创建聚焦的一致输出。 -
top_p(数字,可选)
控制从 0 到 1 的令牌选择多样性。 值为 0.1 表示仅考虑概率排名前 10% 的标记。 -
n(整数,可选)
为每个输入消息生成的备选补全数量。 -
stream(布尔值,可选)
如果为 true,则发送部分消息响应作为服务器发送的事件,以消息data: [DONE]结尾。 -
stop(字符串或数组,可选)
最多 4 个序列将导致模型停止生成更多令牌。 -
max_tokens(整数,可选)
要生成的标记的最大数目。 对于较新的模型,请改用max_completion_tokens。 -
max_completion_tokens(整数,可选)
模型可以生成的最大令牌数,包括可见输出和推理令牌。 -
presence_penalty(数字,可选)
介于 -2.0 和 2.0 之间的值。 正值通过惩罚已经出现的标记来鼓励模型讨论新主题。 -
frequency_penalty(数字,可选)
介于 -2.0 和 2.0 之间的值。 正值根据标记在文本中出现的频率对其进行惩罚,从而阻止重复。 -
logit_bias(地图,可选)
调整特定标记在补全中出现的概率。 -
user(字符串,可选)
最终用户的唯一标识符,可帮助监视和滥用预防。 -
functions(数组,可选)
可用函数,模型可以为其生成 JSON 输入。- 每个函数必须包括:
-
name(字符串)
函数名称。 -
description(字符串)
函数说明。 -
parameters(对象)
描述为 JSON 架构对象的函数参数。
-
- 每个函数必须包括:
-
function_call(字符串或对象,可选)
控制模型如何响应函数调用。- 如果是对象,可以包括:
-
name(字符串,可选)
要调用的函数名称。 -
arguments(对象,可选)
要传递给函数的参数。
-
- 如果是对象,可以包括:
-
metadata(对象,可选)
元数据键值对的字典。 -
top_k(数字,可选)
为 top-k-filtering 保留的最高概率词汇标记数。 -
random_seed(整数,可选)
可重现随机数生成的种子。 -
ep(字符串,可选)
覆盖 ONNX 模型的提供程序。 支持:"dml"、、"cuda""qnn"、"cpu"、"webgpu"。 -
ttl(整数,可选)
内存中模型的生存时间(以秒为单位)。 -
tools(对象,可选)
根据请求计算的工具。
响应正文:
-
id(字符串)
聊天补全的唯一标识符。 -
object(字符串)
对象类型始终为"chat.completion"。 -
created(整数)
创建时间戳(以纪元秒为单位)。 -
model(字符串)
用于补全的模型。 -
choices(数组)
完成选项的列表,每个选项都包含:-
index(整数)
此选项的索引。 -
message(对象)
生成的消息,其中包含:-
role(字符串)
对于响应始终为"assistant"。 -
content(字符串)
实际生成的文本。
-
-
finish_reason(字符串)
为什么生成停止(例如,"stop"、"length"、"function_call")。
-
-
usage(对象)
令牌使用情况统计信息:-
prompt_tokens(整数)
提示中的标记。 -
completion_tokens(整数)
补全中的标记。 -
total_tokens(整数)
使用的令牌总数。
-
示例:
- 请求正文
{ "model": "qwen2.5-0.5b-instruct-generic-cpu", "messages": [ { "role": "user", "content": "Hello, how are you?" } ], "temperature": 0.7, "top_p": 1, "n": 1, "stream": false, "stop": null, "max_tokens": 100, "presence_penalty": 0, "frequency_penalty": 0, "logit_bias": {}, "user": "user_id_123", "functions": [], "function_call": null, "metadata": {} } - 响应正文
{ "id": "chatcmpl-1234567890", "object": "chat.completion", "created": 1677851234, "model": "qwen2.5-0.5b-instruct-generic-cpu", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "I'm doing well, thank you! How can I assist you today?" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 20, "total_tokens": 30 } }
自定义 API
GET /foundry/list
获取目录中可用的 Foundry Local 模型的列表。
响应:
-
models(数组)
模型对象的数组。 每个模型包括:-
name:模型的唯一标识符。 -
displayName:模型的可读名称,通常与名称相同。 -
providerType:托管模型的提供程序类型(例如 AzureFoundry)。 -
uri:指向模型在注册表中的位置的资源 URI。 -
version:模型的版本号。 -
modelType:模型的格式或类型(例如 ONNX)。 -
promptTemplate:-
assistant:助手响应的模板。 -
prompt:用户助理交互的模板。
-
-
publisher:发布模型的实体或组织。 -
task:模型旨在执行的主要任务(例如聊天完成)。 -
runtime:-
deviceType:模型设计用于运行的硬件类型(例如 CPU)。 -
executionProvider:用于运行模型的执行提供程序。
-
-
fileSizeMb:模型文件的大小(以 MB 为单位)。 -
modelSettings:-
parameters:模型的可配置参数列表。
-
-
alias:模型的可选名称或简写 -
supportsToolCalling:指示模型是否支持工具调用功能。 -
license:分配模型的许可证类型。 -
licenseDescription:详细说明或指向许可条款的链接。 -
parentModelUri:从中派生此模型的父模型的 URI。
-
POST /openai/register
注册外部模型提供程序以供 Foundry Local 使用。
请求正文:
-
TypeName(字符串)
提供程序名称(例如"deepseek") -
ModelName(字符串)
要注册的模型名称(例如"deepseek-chat") -
BaseUri(字符串)
提供程序的 OpenAI 兼容基 URI
响应:
- 200 正常
空响应正文
示例:
- 请求正文
{ "TypeName": "deepseek", "ModelName": "deepseek-chat", "BaseUri": "https://api.deepseek.com/v1" }
GET /openai/models
获取所有可用的模型,包括本地模型和已注册的外部模型。
响应:
- 200 正常
字符串形式的模型名称数组。
示例:
- 响应正文
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
GET /openai/load/{name}
将模型加载到内存中以加快推理速度。
URI 参数:
-
name(字符串)
要加载的模型名称。
查询参数:
-
unload(布尔值,可选)
是否在空闲时间后自动卸载模型。 默认为true。 -
ttl(整数,可选)
生存时间(以秒为单位)。 如果大于 0,则此值将覆盖unload参数。 -
ep(字符串,可选)
用于运行此模型的执行提供程序。 支持:"dml"、、"cuda""qnn"、"cpu"、"webgpu"。
如果未指定,则使用来自genai_config.json.. 的设置。
响应:
- 200 正常
空响应正文
示例:
- 请求 URI
GET /openai/load/Phi-4-mini-instruct-generic-cpu?ttl=3600&ep=dml
### GET /openai/unload/{name}
Unload a model from memory.
**URI Parameters:**
- `name` (string)
The model name to unload.
**Query Parameters:**
- `force` (boolean, optional)
If `true`, ignores TTL settings and unloads immediately.
**Response:**
- 200 OK
Empty response body
**Example:**
- Request URI
```http
GET /openai/unload/Phi-4-mini-instruct-generic-cpu?force=true
GET /openai/unloadall
从内存中卸载所有模型。
响应:
- 200 正常
空响应正文
GET /openai/loadedmodels
获取当前加载的模型的列表。
响应:
- 200 正常
字符串形式的模型名称数组。
示例:
- 响应正文
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
GET /openai/getgpudevice
获取当前的 GPU 设备 ID。
响应:
- 200 正常
表示当前 GPU 设备 ID 的整数。
GET /openai/setgpudevice/{deviceId}
设置活动 GPU 设备。
URI 参数:
-
deviceId(整数)
要使用的 GPU 设备 ID。
响应:
- 200 正常
空响应正文
示例:
- 请求 URI
GET /openai/setgpudevice/1
### POST /openai/download
Download a model to local storage.
> [!NOTE]
> Large model downloads can take a long time. Set a high timeout for this request to avoid early termination.
**Request Body:**
- `model` (`WorkspaceInferenceModel` object)
- `Uri` (string)
The model URI to download.
- `Name` (string)
The model name.
- `ProviderType` (string, optional)
The provider type (for example, `"AzureFoundryLocal"`, `"HuggingFace"`).
- `Path` (string, optional)
Remote path to the model files. For example, in a Hugging Face repository, this is the path to the model files.
- `PromptTemplate` (`Dictionary<string, string>`, optional)
Includes:
- `system` (string, optional)
The template for the system message.
- `user` (string, optional)
The template for the user's message.
- `assistant` (string, optional)
The template for the assistant's response.
- `prompt` (string, optional)
The template for the user-assistant interaction.
- `Publisher` (string, optional)
The publisher of the model.
- `token` (string, optional)
Authentication token for protected models (GitHub or Hugging Face).
- `progressToken` (object, optional)
For AITK only. Token to track download progress.
- `customDirPath` (string, optional)
Custom download directory (used for CLI, not needed for AITK).
- `bufferSize` (integer, optional)
HTTP download buffer size in KB. No effect on NIM or Azure Foundry models.
- `ignorePipeReport` (boolean, optional)
If `true`, forces progress reporting via HTTP stream instead of pipe.
Defaults to `false` for AITK and `true` for Foundry Local.
**Streaming Response:**
During download, the server streams progress updates in the format:
```text
("file name", percentage_complete)
最终响应正文:
-
Success(布尔值)
下载是否已成功完成。 -
ErrorMessage(字符串,可选)
下载失败时显示的错误详细信息。
示例:
- 请求主体
{
"model": {
"Uri": "azureml://registries/azureml/models/Phi-4-mini-instruct-generic-cpu/versions/4",
"ProviderType": "AzureFoundryLocal",
"Name": "Phi-4-mini-instruct-generic-cpu",
"Publisher": "",
"promptTemplate": {
"system": "<|system|>{Content}<|end|>",
"user": "<|user|>{Content}<|end|>",
"assistant": "<|assistant|>{Content}<|end|>",
"prompt": "<|user|>{Content}<|end|><|assistant|>"
}
}
}
响应流
(“genai_config.json”, 0.01)(“genai_config.json”, 0.2)(“model.onnx.data”, 0.5)(“model.onnx.data”, 0.78) ...("", 1)
- Final response
```json
{
"Success": true,
"ErrorMessage": null
}
GET /openai/status
获取服务器状态信息。
响应正文:
-
Endpoints(字符串数组)
HTTP 服务器绑定终结点。 -
ModelDirPath(字符串)
存储本地模型的目录。 -
PipeName(字符串)
当前 NamedPipe 服务器名称。
示例:
- 响应正文
{ "Endpoints": ["http://localhost:5272"], "ModelDirPath": "/path/to/models", "PipeName": "inference_agent" }
POST /v1/chat/completions/tokenizer/encode/count
在不执行推理的情况下,为给定的聊天完成请求计算令牌数量。
请求正文:
- Content-Type:application/json
- 格式为
ChatCompletionCreateRequest的 JSON 对象:-
model(字符串)
用于标记化的模型。 -
messages(数组)
包含role和content. 的消息对象的数组。
-
响应正文:
- Content-Type:application/json
- 包含令牌计数的 JSON 对象:
-
tokenCount(整数)
请求中的标记数。
-
示例:
- 请求正文
{ "messages": [ { "role": "system", "content": "This is a system message" }, { "role": "user", "content": "Hello, what is Microsoft?" } ], "model": "Phi-4-mini-instruct-cuda-gpu" } - 响应正文
{ "tokenCount": 23 }