Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Эта ссылка относится к более ранним версиям локального пакета SDK Foundry, зависящим от локального интерфейса командной строки Foundry для управления службами.
Для новой разработки используйте текущую ссылку на пакет SDK.
В следующей таблице показаны версии пакета SDK, в которых была зависимость от интерфейса командной строки:
| Язык | Package | Версии, зависящие от клиента командной строки |
|---|---|---|
| C# | Microsoft. AI. Foundry.Local | 0.3.0 и более ранние |
| JavaScript | foundry-local-sdk | 0.5.0 и более ранние |
| Python | foundry-local-sdk | 0.5.1 и более ранние версии |
| Rust | foundry-local / foundry-local-sdk | 0.x |
Поддержка версий, зависящих от интерфейса командной строки, заканчивается 31 августа 2026 г.
Справочник по пакету SDK Python
Необходимые условия
- Установите локальный интерфейс командной строки Foundry и убедитесь,
foundryчто команда доступна в вашейPATHсреде. - Используйте Python версии 3.9 или более поздней версии.
Installation
Установите пакет Python:
pip install foundry-local-sdk==0.5.1
Быстрый старт
Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может запустить службу и получить доступ к локальному каталогу.
from foundry_local import FoundryLocalManager
manager = FoundryLocalManager()
manager.start_service()
catalog = manager.list_catalog_models()
print(f"Catalog models available: {len(catalog)}")
В этом примере выводится ненулевое число при запуске службы, а каталог доступен.
Ссылки:
Класс FoundryLocalManager
Класс FoundryLocalManager предоставляет методы для управления моделями, кэшем и локальной службой Foundry.
Инициализация
from foundry_local import FoundryLocalManager
# Initialize and optionally bootstrap with a model
manager = FoundryLocalManager(alias_or_model_id=None, bootstrap=True)
-
alias_or_model_id: (необязательно) Псевдоним или идентификатор модели для скачивания и загрузки при запуске. -
bootstrap: (по умолчанию true) Если значение true, запускает службу, если она не запущена и загружает модель, если она указана.
Примечание по псевдонимам
Многие методы, описанные в этой ссылке, имеют alias_or_model_id параметр в сигнатуре. Можно передать в метод псевдоним или идентификатор модели в качестве значения. Использование псевдонима позволит:
- Выберите лучшую модель для доступного оборудования. Например, если gpu Nvidia CUDA доступен, Foundry Local выбирает модель CUDA. Если доступен поддерживаемый NPU, Foundry Local выбирает модель NPU.
- Позволяет использовать более короткое имя без необходимости запоминать идентификатор модели.
Подсказка
Рекомендуется передать в параметр alias_or_model_idпсевдоним, так как при развертывании приложения Foundry Local получает наилучшую модель для компьютера конечного пользователя в режиме выполнения.
Замечание
Если у вас есть NPU Intel на Windows, убедитесь, что вы установили драйвер Intel NPU для оптимального ускорения NPU.
Управление сервисом
| Метод | Signature | Описание |
|---|---|---|
is_service_running() |
() -> bool |
Проверяет, запущена ли локальная служба Foundry. |
start_service() |
() -> None |
Запускает локальную службу Foundry. |
service_uri |
@property -> str |
Возвращает универсальный код ресурса (URI) службы. |
endpoint |
@property -> str |
Возвращает конечную точку службы. |
api_key |
@property -> str |
Возвращает ключ API (из env или по умолчанию). |
Управление каталогами
| Метод | Signature | Описание |
|---|---|---|
list_catalog_models() |
() -> list[FoundryModelInfo] |
Выводит список всех доступных моделей в каталоге. |
refresh_catalog() |
() -> None |
Обновляет каталог моделей. |
get_model_info() |
(alias_or_model_id: str, raise_on_not_found=False) -> FoundryModelInfo \| None |
Возвращает сведения о модели по псевдониму или идентификатору. |
Управление кэшем
| Метод | Signature | Описание |
|---|---|---|
get_cache_location() |
() -> str |
Возвращает путь к каталогу кэша моделей. |
list_cached_models() |
() -> list[FoundryModelInfo] |
Выводит список моделей, скачанных в локальный кэш. |
Управление моделями
| Метод | Signature | Описание |
|---|---|---|
download_model() |
(alias_or_model_id: str, token: str = None, force: bool = False) -> FoundryModelInfo |
Загружает модель в локальный кэш. |
load_model() |
(alias_or_model_id: str, ttl: int = 600) -> FoundryModelInfo |
Загружает модель на сервер вывода. |
unload_model() |
(alias_or_model_id: str, force: bool = False) -> None |
Выгружает модель с сервера вывода. |
list_loaded_models() |
() -> list[FoundryModelInfo] |
Выводит список всех моделей, загруженных в настоящее время в сервисе. |
FoundryModelInfo
Методы list_catalog_models()list_cached_models()и list_loaded_models() возвращает список FoundryModelInfo объектов. Для дальнейшего уточнения списка можно использовать сведения, содержащиеся в этом объекте. Или получите сведения для модели непосредственно путем вызова get_model_info(alias_or_model_id) метода.
Эти объекты содержат следующие поля:
| Поле | Тип | Описание |
|---|---|---|
alias |
str |
Псевдоним модели. |
id |
str |
Уникальный идентификатор модели. |
version |
str |
Версия модели. |
execution_provider |
str |
Акселератор (поставщик выполнения), используемый для запуска модели. |
device_type |
DeviceType |
Тип устройства модели: ЦП, GPU, NPU. |
uri |
str |
универсальный код ресурса (URI) модели. |
file_size_mb |
int |
Размер модели на диске в МБ. |
supports_tool_calling |
bool |
Поддерживает ли модель вызов инструментов. |
prompt_template |
dict \| None |
Шаблон запроса для модели. |
provider |
str |
Поставщик модели (где публикуется модель). |
publisher |
str |
Publisher модели (которая опубликовала модель). |
license |
str |
Имя лицензии модели. |
task |
str |
Задача модели. Один из chat-completions или automatic-speech-recognition. |
ep_override |
str \| None |
Переопределение для поставщика выполнения, если отличается от модели по умолчанию. |
Поставщики выполнения
Одно из:
-
CPUExecutionProvider— выполнение на базе ЦПУ -
CUDAExecutionProvider— выполнение GPU NVIDIA CUDA -
WebGpuExecutionProvider— выполнение WebGPU -
QNNExecutionProvider- Выполнение нейронной сети Qualcomm (NPU) -
OpenVINOExecutionProvider— Выполнение Intel OpenVINO -
NvTensorRTRTXExecutionProvider— выполнение NVIDIA TensorRT -
VitisAIExecutionProvider— выполнение ИИ AMD Vitis
Пример использования
В следующем коде показано, как использовать FoundryLocalManager класс для управления моделями и взаимодействия с локальной службой Foundry.
from foundry_local import FoundryLocalManager
# By using an alias, the most suitable model will be selected
# to your end-user's device.
alias = "qwen2.5-0.5b"
# Create a FoundryLocalManager instance. This will start the Foundry.
manager = FoundryLocalManager()
# List available models in the catalog
catalog = manager.list_catalog_models()
print(f"Available models in the catalog: {catalog}")
# Download and load a model
model_info = manager.download_model(alias)
model_info = manager.load_model(alias)
print(f"Model info: {model_info}")
# List models in cache
local_models = manager.list_cached_models()
print(f"Models in cache: {local_models}")
# List loaded models
loaded = manager.list_loaded_models()
print(f"Models running in the service: {loaded}")
# Unload a model
manager.unload_model(alias)
В этом примере перечислены модели, загружается и скачивается одна из них, а затем выгружается.
Ссылки:
Интеграция с пакетом SDK OpenAI
Установите пакет OpenAI:
pip install openai
В следующем коде демонстрируется, как интегрировать FoundryLocalManager с SDK OpenAI для взаимодействия с локальной моделью.
import openai
from foundry_local import FoundryLocalManager
# By using an alias, the most suitable model will be downloaded
# to your end-user's device.
alias = "qwen2.5-0.5b"
# Create a FoundryLocalManager instance. This will start the Foundry
# Local service if it is not already running and load the specified model.
manager = FoundryLocalManager(alias)
# The remaining code uses the OpenAI Python SDK to interact with the local model.
# Configure the client to use the local Foundry service
client = openai.OpenAI(
base_url=manager.endpoint,
api_key=manager.api_key # API key is not required for local usage
)
# Set the model to use and generate a streaming response
stream = client.chat.completions.create(
model=manager.get_model_info(alias).id,
messages=[{"role": "user", "content": "Why is the sky blue?"}],
stream=True
)
# Print the streaming response
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)
В этом примере выполняется потоковая передача ответа на завершение чата из локальной модели.
Ссылки:
Справочник по пакету SDK для JavaScript
Необходимые условия
- Установите локальный интерфейс командной строки Foundry и убедитесь,
foundryчто команда доступна в вашейPATHсреде.
Installation
Установите пакет из npm:
npm install foundry-local-sdk@0.5.0
Быстрый старт
Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может запустить службу и получить доступ к локальному каталогу.
import { FoundryLocalManager } from "foundry-local-sdk";
const manager = new FoundryLocalManager();
await manager.startService();
const catalogModels = await manager.listCatalogModels();
console.log(`Catalog models available: ${catalogModels.length}`);
В этом примере выводится ненулевое число при запуске службы, а каталог доступен.
Ссылки:
Класс FoundryLocalManager
Класс FoundryLocalManager позволяет управлять моделями, управлять кэшем и взаимодействовать с локальной службой Foundry в браузерах и Node.js средах.
Инициализация
import { FoundryLocalManager } from "foundry-local-sdk";
const foundryLocalManager = new FoundryLocalManager();
Доступные варианты:
-
host: базовый URL-адрес локальной службы Foundry -
fetch: (необязательно) Настраиваемая функция извлечения для таких сред, как Node.js
Примечание по псевдонимам
Многие методы, описанные в этой ссылке, имеют aliasOrModelId параметр в сигнатуре. Можно передать в метод псевдоним или идентификатор модели в качестве значения. Использование псевдонима позволит:
- Выберите лучшую модель для доступного оборудования. Например, если gpu Nvidia CUDA доступен, Foundry Local выбирает модель CUDA. Если доступен поддерживаемый NPU, Foundry Local выбирает модель NPU.
- Позволяет использовать более короткое имя без необходимости запоминать идентификатор модели.
Подсказка
Рекомендуется передать в параметр aliasOrModelIdпсевдоним, так как при развертывании приложения Foundry Local получает наилучшую модель для компьютера конечного пользователя в режиме выполнения.
Замечание
Если у вас есть NPU Intel на Windows, убедитесь, что вы установили драйвер Intel NPU для оптимального ускорения NPU.
Управление сервисом
| Метод | Signature | Описание |
|---|---|---|
init() |
(aliasOrModelId?: string) => Promise<FoundryModelInfo \| void> |
Инициализирует пакет SDK и при необходимости загружает модель. |
isServiceRunning() |
() => Promise<boolean> |
Проверяет, запущена ли локальная служба Foundry. |
startService() |
() => Promise<void> |
Запускает локальную службу Foundry. |
serviceUrl |
string |
Базовый URL-адрес локальной службы Foundry. |
endpoint |
string |
Конечная точка API (serviceUrl + /v1). |
apiKey |
string |
Ключ API (нет). |
Управление каталогами
| Метод | Signature | Описание |
|---|---|---|
listCatalogModels() |
() => Promise<FoundryModelInfo[]> |
Выводит список всех доступных моделей в каталоге. |
refreshCatalog() |
() => Promise<void> |
Обновляет каталог моделей. |
getModelInfo() |
(aliasOrModelId: string, throwOnNotFound = false) => Promise<FoundryModelInfo \| null> |
Возвращает сведения о модели по псевдониму или идентификатору. |
Управление кэшем
| Метод | Signature | Описание |
|---|---|---|
getCacheLocation() |
() => Promise<string> |
Возвращает путь к каталогу кэша моделей. |
listCachedModels() |
() => Promise<FoundryModelInfo[]> |
Выводит список моделей, скачанных в локальный кэш. |
Управление моделями
| Метод | Signature | Описание |
|---|---|---|
downloadModel() |
(aliasOrModelId: string, token?: string, force = false, onProgress?) => Promise<FoundryModelInfo> |
Загружает модель в локальный кэш. |
loadModel() |
(aliasOrModelId: string, ttl = 600) => Promise<FoundryModelInfo> |
Загружает модель на сервер вывода. |
unloadModel() |
(aliasOrModelId: string, force = false) => Promise<void> |
Выгружает модель с сервера вывода. |
listLoadedModels() |
() => Promise<FoundryModelInfo[]> |
Выводит список всех моделей, загруженных в настоящее время в сервисе. |
Пример использования
В следующем коде показано, как использовать FoundryLocalManager класс для управления моделями и взаимодействия с локальной службой Foundry.
import { FoundryLocalManager } from "foundry-local-sdk";
// By using an alias, the most suitable model will be downloaded
// to your end-user's device.
// TIP: You can find a list of available models by running the
// following command in your terminal: `foundry model list`.
const alias = "qwen2.5-0.5b";
const manager = new FoundryLocalManager();
// Initialize the SDK and optionally load a model
const modelInfo = await manager.init(alias);
console.log("Model Info:", modelInfo);
// Check if the service is running
const isRunning = await manager.isServiceRunning();
console.log(`Service running: ${isRunning}`);
// List available models in the catalog
const catalog = await manager.listCatalogModels();
// Download and load a model
await manager.downloadModel(alias);
await manager.loadModel(alias);
// List models in cache
const localModels = await manager.listCachedModels();
// List loaded models
const loaded = await manager.listLoadedModels();
// Unload a model
await manager.unloadModel(alias);
В этом примере скачиваются и загружаются модели, а затем перечисляются кэшированные и загруженные модели.
Ссылки:
Интеграция с клиентом OpenAI
Установите пакет OpenAI:
npm install openai
В следующем коде показано, как интегрировать FoundryLocalManager с клиентом OpenAI для взаимодействия с локальной моделью.
import { OpenAI } from "openai";
import { FoundryLocalManager } from "foundry-local-sdk";
// By using an alias, the most suitable model will be downloaded
// to your end-user's device.
// TIP: You can find a list of available models by running the
// following command in your terminal: `foundry model list`.
const alias = "qwen2.5-0.5b";
// Create a FoundryLocalManager instance. This will start the Foundry
// Local service if it is not already running.
const foundryLocalManager = new FoundryLocalManager();
// Initialize the manager with a model. This will download the model
// if it is not already present on the user's device.
const modelInfo = await foundryLocalManager.init(alias);
console.log("Model Info:", modelInfo);
const openai = new OpenAI({
baseURL: foundryLocalManager.endpoint,
apiKey: foundryLocalManager.apiKey,
});
async function streamCompletion() {
const stream = await openai.chat.completions.create({
model: modelInfo.id,
messages: [{ role: "user", content: "What is the golden ratio?" }],
stream: true,
});
for await (const chunk of stream) {
if (chunk.choices[0]?.delta?.content) {
process.stdout.write(chunk.choices[0].delta.content);
}
}
}
streamCompletion();
В этом примере выполняется потоковая передача ответа на завершение чата из локальной модели.
Ссылки:
Использование браузера
Пакет SDK включает версию, совместимую с браузером, где необходимо указать URL-адрес узла вручную:
import { FoundryLocalManager } from "foundry-local-sdk/browser";
// Specify the service URL
// Run the Foundry Local service using the CLI: `foundry service start`
// and use the URL from the CLI output
const host = "HOST";
const manager = new FoundryLocalManager({ host });
// Note: The `init`, `isServiceRunning`, and `startService` methods
// are not available in the browser version
Замечание
Версия браузера не поддерживает методы init, isServiceRunning и startService. Перед использованием пакета SDK в среде браузера необходимо убедиться, что локальная служба Foundry запущена. Вы можете запустить службу с помощью локального интерфейса командной строки Foundry: foundry service start. Url-адрес службы можно получить из выходных данных ИНТЕРФЕЙСА командной строки.
Пример использования
import { FoundryLocalManager } from "foundry-local-sdk/browser";
// Specify the service URL
// Run the Foundry Local service using the CLI: `foundry service start`
// and use the URL from the CLI output
const host = "HOST";
const manager = new FoundryLocalManager({ host });
const alias = "qwen2.5-0.5b";
// Get all available models
const catalog = await manager.listCatalogModels();
console.log("Available models in catalog:", catalog);
// Download and load a specific model
await manager.downloadModel(alias);
await manager.loadModel(alias);
// View models in your local cache
const localModels = await manager.listCachedModels();
console.log("Cached models:", localModels);
// Check which models are currently loaded
const loaded = await manager.listLoadedModels();
console.log("Loaded models in inference service:", loaded);
// Unload a model when finished
await manager.unloadModel(alias);
Ссылки:
Справочник по пакету SDK для C#
Необходимые условия
- Установите локальный интерфейс командной строки Foundry и убедитесь,
foundryчто команда доступна в вашейPATHсреде.
Installation
Чтобы использовать Local C# SDK Foundry, необходимо установить пакет NuGet:
dotnet add package Microsoft.AI.Foundry.Local --version 0.3.0
Примечание по псевдонимам
Многие методы, описанные в этой ссылке, имеют aliasOrModelId параметр в сигнатуре. Можно передать в метод псевдоним или идентификатор модели в качестве значения. Использование псевдонима позволит:
- Выберите лучшую модель для доступного оборудования. Например, если gpu Nvidia CUDA доступен, Foundry Local выбирает модель CUDA. Если доступен поддерживаемый NPU, Foundry Local выбирает модель NPU.
- Позволяет использовать более короткое имя без необходимости запоминать идентификатор модели.
Подсказка
Рекомендуется передать в параметр aliasOrModelIdпсевдоним, так как при развертывании приложения Foundry Local получает наилучшую модель для компьютера конечного пользователя в режиме выполнения.
Замечание
Если у вас есть NPU Intel на Windows, убедитесь, что вы установили драйвер Intel NPU для оптимального ускорения NPU.
Перечисления
DeviceType
Представляет тип устройства, используемого для выполнения модели.
| Ценность | Описание |
|---|---|
| ЦП | Устройство ЦП |
| графический процессор (GPU) | Устройство GPU |
| НПУ | Устройство NPU |
| Недопустимо | Недопустимый или неизвестный |
ExecutionProvider
Представляет поставщика выполнения для вывода модели.
| Ценность | Описание |
|---|---|
| Недопустимо | Недопустимый поставщик |
| CPUExecutionProvider | Выполнение ЦП |
| WebGpuExecutionProvider | Выполнение WebGPU |
| CUDAExecutionProvider | Выполнение CUDA на GPU |
| QNNExecutionProvider | Выполнение NPU Qualcomm |
| OpenVINOExecutionProvider | Выполнение Intel OpenVINO |
| NvTensorRTRTXExecutionProvider | Выполнение TensorRT от NVIDIA |
| VitisAIExecutionProvider | Выполнение ИИ AMD Vitis |
Класс FoundryLocalManager
Основная точка входа для управления моделями, кэшем и локальной службой Foundry.
Строительство
var manager = new FoundryLocalManager();
Свойства
| Недвижимость | Тип | Описание |
|---|---|---|
| ServiceUri | Uri |
Базовый УРИ локальной службы Foundry. |
| Конечная точка | Uri |
Конечная точка API (ServiceUri + /v1). |
| Ключ API (ApiKey) | string |
Ключ API (по умолчанию: "OPENAI_API_KEY"). |
| IsServiceRunning | bool |
Указывает, запущена ли служба. |
Управление сервисом
Запуск службы
await manager.StartServiceAsync(CancellationToken.None);
Запускает локальную службу Foundry, если она еще не запущена.
Остановка службы
await manager.StopServiceAsync(CancellationToken.None);
Останавливает локальную службу Foundry.
Запуск и загрузка модели (статическое вспомогательное средство)
var manager = await FoundryLocalManager.StartModelAsync("aliasOrModelId");
Запускает службу и загружает указанную модель.
Управление каталогами
Перечислить все модели каталога
List<ModelInfo> models = await manager.ListCatalogModelsAsync();
Возвращает все доступные модели в каталоге.
Обновление каталога
manager.RefreshCatalog();
Очищает кэшированный каталог, чтобы он был перезагружен при следующем доступе.
Получение сведений о модели по псевдониму или идентификатору
ModelInfo? info = await manager.GetModelInfoAsync("aliasOrModelId");
Возвращает сведения о модели или null, если не найдено.
Управление кэшем
Получение расположения кэша
string cachePath = await manager.GetCacheLocationAsync();
Возвращает путь к каталогу, в котором кэшируются модели.
Список кэшированных моделей
List<ModelInfo> cached = await manager.ListCachedModelsAsync();
Возвращает модели, скачанные в локальный кэш.
Управление моделями
Скачивание модели
ModelInfo? model = await manager.DownloadModelAsync("aliasOrModelId");
Загружает модель в локальный кэш.
Скачивание модели с прогрессом
await foreach (var progress in manager.DownloadModelWithProgressAsync("aliasOrModelId"))
{
// progress.Percentage, progress.Status, etc.
}
Потоки обновляют информацию о ходе загрузки.
Загрузка модели
ModelInfo loaded = await manager.LoadModelAsync("aliasOrModelId");
Загружает модель на сервер вывода.
Список загруженных моделей
List<ModelInfo> loaded = await manager.ListLoadedModelsAsync();
Выводит список всех моделей, загруженных в настоящее время в сервисе.
Выгрузите модель
await manager.UnloadModelAsync("aliasOrModelId");
Выгружает модель с сервера вывода.
Устранение
Реализует оба IDisposable и IAsyncDisposable для правильной очистки.
manager.Dispose();
// or
await manager.DisposeAsync();
Типы моделей
На этой странице описаны ключевые типы данных, используемые пакетом SDK для Foundry Local C# для описания моделей, загрузки и сведений о среде выполнения.
PromptTemplate
Представляет шаблон подсказки для модели.
| Недвижимость | Тип | Описание |
|---|---|---|
| Помощник | струна | Шаблон запроса помощника. |
| Подсказка | струна | Шаблон запроса пользователя. |
Runtime
Описывает среду выполнения для модели.
| Недвижимость | Тип | Описание |
|---|---|---|
| Тип устройства | DeviceType |
Тип устройства (ЦП, GPU и т. д.). |
| Провайдер выполнения | ExecutionProvider |
Поставщик выполнения (CUDA, ЦП и т. д.). |
ModelSettings
Представляет параметры, относящиеся к модели.
| Недвижимость | Тип | Описание |
|---|---|---|
| Параметры | Список<JsonElement> | Коллекция параметров модели |
ModelInfo
Описывает модель в локальном каталоге Или кэше Foundry.
| Недвижимость | Тип | Описание |
|---|---|---|
| ModelId | струна | Уникальный идентификатор модели. |
| DisplayName | струна | Читаемое человеком имя модели. |
| ProviderType | струна | Тип поставщика (например, "CUDA", "ЦПУ"). |
| Ури | струна | Скачайте URI для модели. |
| Версия | струна | Версия модели. |
| Тип модели | струна | Тип модели (например, "llm"). |
| Шаблон подсказывающего текста | Шаблон подсказывающего текста | Шаблон запроса для модели. |
| Издатель | струна | Publisher модели. |
| задачи | струна | Тип задачи (например, "чат", "завершение"). |
| Режим выполнения | Режим выполнения | Сведения о среде выполнения. |
| РазмерФайлаМб | long | Размер файла модели в МБ. |
| Настройки модели | Настройки модели | Параметры, относящиеся к модели. |
| псевдоним | струна | Псевдоним модели. |
| Поддержка вызова инструментов | bool | Поддерживается ли вызов инструментов. |
| Лицензия | струна | Идентификатор лицензии. |
| Описание лицензии | струна | Описание лицензии. |
| ParentModelUri | струна | Универсальный код ресурса (URI) родительской модели, если таковой имеется. |
ModelDownloadProgress
Представляет ход выполнения операции скачивания модели.
| Недвижимость | Тип | Описание |
|---|---|---|
| Процент | двойной | Скачайте процент завершения (0–100). |
| IsCompleted | bool | Завершено ли скачивание. |
| Информация о модели | ModelInfo? | Сведения о модели, если загрузка завершена. |
| Сообщение об ошибке | струна? | Сообщение об ошибке при сбое скачивания. |
Статические методы:
-
Progress(double percentage): Подготовьте обновление хода выполнения. -
Completed(ModelInfo modelInfo): создайте завершенный результат выполнения. -
Error(string errorMessage): создать сообщение об ошибке.
Пример использования
using Microsoft.AI.Foundry.Local;
var manager = new FoundryLocalManager();
await manager.StartServiceAsync();
var models = await manager.ListCatalogModelsAsync();
var alias = "qwen2.5-0.5b";
await manager.DownloadModelAsync(alias);
await manager.LoadModelAsync(alias);
var loaded = await manager.ListLoadedModelsAsync();
await manager.UnloadModelAsync(alias);
manager.Dispose();
Справочник по пакету SDK Rust
Пакет SDK Rust для Foundry Local позволяет управлять моделями, управлять кэшем и взаимодействовать с локальной службой Foundry.
Необходимые условия
- Установите локальный интерфейс командной строки Foundry и убедитесь,
foundryчто команда доступна в вашейPATHсреде. - Используйте Rust 1.70.0 или более поздней версии.
Installation
Чтобы использовать локальный SDK Foundry для Rust, добавьте следующее в Cargo.toml:
[dependencies]
foundry-local = "0.1.0"
Кроме того, можно добавить локальный модуль Foundry с помощью cargo:
cargo add foundry-local@0
Быстрый старт
Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может запустить службу и прочитать локальный каталог.
use anyhow::Result;
use foundry_local::FoundryLocalManager;
#[tokio::main]
async fn main() -> Result<()> {
let mut manager = FoundryLocalManager::builder().bootstrap(true).build().await?;
let models = manager.list_catalog_models().await?;
println!("Catalog models available: {}", models.len());
Ok(())
}
В этом примере выводится ненулевое число, когда служба запущена, и каталог доступен.
Ссылки:
FoundryLocalManager
Менеджер по операциям с локальным SDK для Foundry.
Fields
-
service_uri: Option<String>: URI службы Foundry. -
client: Option<HttpClient>: HTTP-клиент для запросов API. -
catalog_list: Option<Vec<FoundryModelInfo>>: кэшированный список моделей каталога. -
catalog_dict: Option<HashMap<String, FoundryModelInfo>>: кэшированный словарь моделей каталога. -
timeout: Option<u64>: Необязательный тайм-аут для HTTP-клиента.
Методы
pub fn builder() -> FoundryLocalManagerBuilder
Создайте нового построителя дляFoundryLocalManager.pub fn service_uri(&self) -> Result<&str>
Получите идентификатор ресурса (URI) службы.
Возвращает: URI службы Foundry.fn client(&self) -> Result<&HttpClient>
Получите экземпляр клиента HTTP.
Возвращает: HTTP-клиент.pub fn endpoint(&self) -> Result<String>
Получите конечную точку для службы.
Возвращает: URL-адрес конечной точки.pub fn api_key(&self) -> String
Получите ключ API для проверки подлинности.
Возвращает: Ключ API.pub fn is_service_running(&mut self) -> bool
Проверьте, запущена ли служба и задайте универсальный код ресурса (URI) службы, если он найден.
Возвращает:trueесли выполняется,falseв противном случае.pub fn start_service(&mut self) -> Result<()>
Запустите локальную службу Foundry.pub async fn list_catalog_models(&mut self) -> Result<&Vec<FoundryModelInfo>>
Получите список доступных моделей в каталоге.pub fn refresh_catalog(&mut self)
Обновите кэш каталога.pub async fn get_model_info(&mut self, alias_or_model_id: &str, raise_on_not_found: bool) -> Result<FoundryModelInfo>
Получение сведений о модели по псевдониму или идентификатору.
Аргументы:-
alias_or_model_id: псевдоним или идентификатор модели. -
raise_on_not_found: если значение истинно, ошибка, если не найдено.
-
pub async fn get_cache_location(&self) -> Result<String>
Получение расположения кэша в виде строки.pub async fn list_cached_models(&mut self) -> Result<Vec<FoundryModelInfo>>
Список кэшированных моделей.pub async fn download_model(&mut self, alias_or_model_id: &str, token: Option<&str>, force: bool) -> Result<FoundryModelInfo>
Скачайте модель.
Аргументы:-
alias_or_model_id: псевдоним или идентификатор модели. -
token: необязательный маркер проверки подлинности. -
force: принудительно скачать заново, если файл уже кэширован.
-
pub async fn load_model(&mut self, alias_or_model_id: &str, ttl: Option<i32>) -> Result<FoundryModelInfo>
Загрузите модель для вывода.
Аргументы:-
alias_or_model_id: псевдоним или идентификатор модели. -
ttl: необязательное время жизни в секундах.
-
pub async fn unload_model(&mut self, alias_or_model_id: &str, force: bool) -> Result<()>
Выгрузить модель.
Аргументы:-
alias_or_model_id: псевдоним или идентификатор модели. -
force: принудительно выгружает, даже если используется.
-
pub async fn list_loaded_models(&mut self) -> Result<Vec<FoundryModelInfo>>
Список загруженных моделей.
FoundryLocalManagerBuilder
Конструктор для создания экземпляра FoundryLocalManager.
Fields
-
alias_or_model_id: Option<String>— псевдоним или идентификатор модели для скачивания и загрузки. -
bootstrap: bool— следует ли запускать службу, если она не запущена. -
timeout_secs: Option<u64>— время ожидания клиента HTTP в секундах.
Методы
pub fn new() -> Self
Создайте новый экземпляр билдера.pub fn alias_or_model_id(mut self, alias_or_model_id: impl Into<String>) -> Self
Задайте псевдоним или идентификатор модели для скачивания и загрузки.pub fn bootstrap(mut self, bootstrap: bool) -> Self
Задайте, следует ли запускать службу, если она не запущена.pub fn timeout_secs(mut self, timeout_secs: u64) -> Self
Задайте время ожидания клиента HTTP в секундах.pub async fn build(self) -> Result<FoundryLocalManager>
Создайте экземплярFoundryLocalManager.
FoundryModelInfo
Представляет сведения о модели.
Fields
-
alias: String— псевдоним модели. -
id: String— идентификатор модели. -
version: String— версия модели. -
runtime: ExecutionProvider— поставщик выполнения (ЦП, CUDA и т. д.). -
uri: String— идентификатор ресурса (URI) модели. -
file_size_mb: i32— размер файла модели в МБ. -
prompt_template: serde_json::Value— шаблон подсказки для модели. -
provider: String— имя поставщика. -
publisher: String— имя Publisher. -
license: String— тип лицензии. -
task: String— задача модели (например, создание текста).
Методы
from_list_response(response: &FoundryListResponseModel) -> Self
Создает объектFoundryModelInfoиз ответа каталога.to_download_body(&self) -> serde_json::Value
Преобразует сведения о модели в текст JSON для запросов на скачивание.
ExecutionProvider
Перечисление поддерживаемых поставщиков сред выполнения.
CPUWebGPUCUDAQNN
Методы
get_alias(&self) -> String
Возвращает строковый псевдоним для поставщика выполнения.
ModelRuntime
Описывает среду выполнения для модели.
device_type: DeviceTypeexecution_provider: ExecutionProvider