Поделиться через


Справочник по локальному REST API Foundry

Это важно

  • 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
  }