Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
- Foundry Local доступен в предварительной версии. Общедоступные предварительные выпуски предоставляют ранний доступ к функциям, которые находятся в активном развертывании.
- Функции, подходы и процессы могут изменяться или иметь ограниченные возможности до общедоступной доступности.
Предостережение
Этот API ссылается на REST API, доступный в локальном интерфейсе командной строки Foundry. Этот API находится в активной разработке и может включать критические изменения без уведомления. Мы настоятельно рекомендуем отслеживать журнал изменений перед созданием рабочих приложений.
POST /v1/chat/completions
Эта конечная точка обрабатывает запросы на завершение чата.
Он полностью совместим с API завершения чата OpenAI.
Текст запроса :
свойства OpenAI ---Standard---
-
model(строка)
Конкретная модель, используемая для завершения. -
messages(массив)
Журнал бесед в виде списка сообщений.- Для каждого сообщения требуется следующее:
-
role(строка)
Роль отправителя сообщения. Должно бытьsystem,userилиassistant. -
content(строка)
Фактический текст сообщения.
-
- Для каждого сообщения требуется следующее:
-
temperature(число, необязательно)
Управляет случайностью, начиная от 0 до 2. Более высокие значения (0,8) создают различные выходные данные, а более низкие значения (0.2) создают ориентированные, согласованные выходные данные. -
top_p(число, необязательно)
Управляет разнообразием выделения маркеров от 0 до 1. Значение 0,1 означает, что считаются только маркеры в верхней% вероятности 10. -
n(целое число, необязательно)
Количество альтернативных вариантов завершения для каждого входного сообщения. -
stream(логический, необязательный)
Если значение истинно, отправляет частичные ответы на сообщения как события, посылаемые сервером, заканчиваясь сообщением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. -
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(целое число)
Всего используемых токенов.
-
Example:
Основное содержание запроса
{
"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
}
}
GET /openai/status
Получение сведений о состоянии сервера.
Текст ответа:
-
Endpoints(массив строк)
Конечные точки привязки HTTP-сервера. -
ModelDirPath(строка)
Каталог, в котором хранятся локальные модели. -
PipeName(строка)
Текущее имя сервера NamedPipe.
Example:
Основная часть ответа
{
"Endpoints": ["http://localhost:5272"],
"ModelDirPath": "/path/to/models",
"PipeName": "inference_agent"
}
GET /foundry/list
Получите список доступных локальных моделей Foundry в каталоге.
Ответ.
-
models(массив)
Массив объектов модели. Каждая модель включает:-
name: уникальный идентификатор модели. -
displayName: человекочитаемое имя для модели, часто совпадающее с названием. -
providerType: тип поставщика, на котором размещена модель (например, AzureFoundry). -
uri: URI ресурса, указывающий на расположение модели в реестре. -
version: номер версии модели. -
modelType: формат или тип модели (например, ONNX). -
promptTemplate:-
assistant: шаблон ответа помощника. -
prompt: шаблон взаимодействия с помощником пользователя.
-
-
publisher: сущность или организация, опубликовавшая модель. -
task: основная задача модели предназначена для выполнения (например, завершения чата). -
runtime:-
deviceType: Тип оборудования, на котором предназначена для работы модель (например, центральный процессор). -
executionProvider: поставщик выполнения, используемый для выполнения модели.
-
-
fileSizeMb: размер файла модели в мегабайтах. -
modelSettings:-
parameters: список настраиваемых параметров для модели.
-
-
alias: альтернативное имя или сокращенное имя модели -
supportsToolCalling: указывает, поддерживает ли модель функцию вызова инструментов. -
license: тип лицензии, в котором распространяется модель. -
licenseDescription: подробное описание или ссылка на условия лицензии. -
parentModelUri: универсальный код ресурса (URI) родительской модели, от которой производна эта модель.
-
GET /openai/models
Получите список кэшированных моделей, включая локальные и зарегистрированные внешние модели.
Ответ.
- 200 OK (Запрос выполнен успешно)
Массив имен моделей в виде строк.
Example:
Основная часть ответа
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
POST /openai/download
Скачайте модель из каталога в локальное хранилище.
Замечание
Загрузка больших моделей может занять много времени. Задайте большое время ожидания для этого запроса, чтобы избежать раннего завершения.
Текст запроса :
-
model(WorkspaceInferenceModelобъект)-
Uri(строка)
URI модели для скачивания. -
Name(строка) Имя модели. -
ProviderType(строка, необязательно)
Тип поставщика (например,"AzureFoundryLocal","HuggingFace"). -
Path(строка, необязательно)
Удаленный путь к файлам модели. Например, в репозитории hugging Face это путь к файлам модели. -
PromptTemplate(Dictionary<string, string>необязательно)
Содержимое:-
system(строка, необязательно)
Шаблон для системного сообщения. -
user(строка, необязательно) Шаблон сообщения пользователя. -
assistant(строка, необязательно)
Шаблон ответа помощника. -
prompt(строка, необязательно)
Шаблон взаимодействия с помощником пользователя.
-
-
Publisher(строка, необязательно)
Издатель модели.
-
-
token(строка, необязательно)
Маркер проверки подлинности для защищенных моделей (GitHub или Hugging Face). -
progressToken(объект, необязательный)
Только для AITK. Маркер для отслеживания хода скачивания. -
customDirPath(строка, необязательно)
Пользовательский каталог загрузок (используется для CLI, не требуется для AITK). -
bufferSize(целое число, необязательно)
Размер буфера загрузки HTTP в КБ. Не влияет на модели NIM или Azure Foundry. -
ignorePipeReport(логический, необязательный)
Еслиtrue, принуждает передачу отчётов о ходе выполнения через HTTP поток вместо канала. По умолчанию устанавливаетсяfalseдля AITK иtrueдля Foundry Local.
Ответ потоковой передачи:
Во время загрузки сервер передаёт обновления о ходе в формате:
("file name", percentage_complete)
Окончательный текст ответа:
-
Success(логическое)
Выполняется ли скачивание успешно. -
ErrorMessage(строка, необязательно)
Сведения об ошибке при сбое скачивания.
Example:
Запрос URI
POST /openai/download
Основное содержание запроса
Обратите внимание, что суффикс версии должен быть указан в имени модели.
{
"model": {
"Uri": "azureml://registries/azureml/models/Phi-4-mini-instruct-generic-cpu/versions/4",
"ProviderType": "AzureFoundryLocal",
"Name": "Phi-4-mini-instruct-generic-cpu:4",
"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)
Окончательный ответ
{
"Success": true,
"ErrorMessage": null
}
GET /openai/load/{name}
Загрузите модель в память для ускорения вывода.
Параметры URI:
-
name(строка)
Имя модели для загрузки.
Параметры запроса:
-
unload(логический, необязательный)
Следует ли автоматически выгрузить модель после простоя. По умолчанию —true. -
ttl(целое число, необязательно)
Время жизни в секундах. Если значение больше 0, это значение переопределяетunloadпараметр. -
ep(строка, необязательно)
Поставщик исполнения для запуска этой модели. Поддерживает:"dml","cuda","qnn","cpu","webgpu".
Если параметр не указан, использует параметры изgenai_config.json.
Ответ.
- 200 OK (Запрос выполнен успешно)
Пустой текст ответа
Example:
Запрос URI
GET /openai/load/Phi-4-mini-instruct-generic-cpu?ttl=3600&ep=dml
GET /openai/unload/{name}
Выгрузка модели из памяти.
Параметры URI:
-
name(строка) Имя модели для выгрузки.
Параметры запроса:
-
force(логический, необязательный) Еслиtrueпараметр TTL игнорируется и выгружается немедленно.
Ответ.
- 200 ОК Пустой текст ответа
Example:
Запрос URI
GET /openai/unload/Phi-4-mini-instruct-generic-cpu?force=true
GET /openai/unloadall
Выгрузка всех моделей из памяти.
Ответ.
- 200 OK (Запрос выполнен успешно)
Пустой текст ответа
GET /openai/loadedmodels
Получите список загруженных в данный момент моделей.
Ответ.
- 200 OK (Запрос выполнен успешно)
Массив имен моделей в виде строк.
Example:
Основная часть ответа
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
GET /openai/getgpudevice
Получите текущий идентификатор устройства GPU.
Ответ.
- 200 OK (Запрос выполнен успешно)
Целое число, представляющее текущий идентификатор устройства GPU.
GET /openai/setgpudevice/{deviceId}
Задайте активное устройство GPU.
Параметры URI:
-
deviceId(целое число)
Идентификатор устройства GPU для использования.
Ответ.
- 200 OK (Запрос выполнен успешно)
Пустой текст ответа
Example:
- URI запроса
GET /openai/setgpudevice/1
POST /v1/chat/completions/tokenizer/encode/count
Подсчитывает токены для заданного чатового запроса на завершение без выполнения вычислений.
Текст запроса :
- Тип содержимого: application/json
- Объект JSON в
ChatCompletionCreateRequestформате:-
model(строка)
Модель, используемая для токенизации. -
messages(массив)
Массив объектов сообщений сroleиcontent.
-
Текст ответа:
- Тип содержимого: application/json
- Объект JSON со счетчиком маркеров:
-
tokenCount(целое число)
Количество маркеров в запросе.
-
Example:
Основное содержание запроса
{
"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
}