通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Foundry Local SDK 参考

Foundry Local SDK 使你能够在应用程序中交付 AI 功能,这些功能可以通过简单直观的 API 使用本地 AI 模型。 SDK 将管理 AI 模型的复杂性抽象化,并提供无缝体验,用于将本地 AI 功能集成到应用程序中。 此参考文档介绍了适用于 C#、JavaScript、Python 和 Rust 的 SDK 实现。

SDK 不需要在最终用户计算机上安装 Foundry Local CLI,因此无需为用户提供额外的设置步骤即可交付应用程序 - 应用程序是自包含的。 Foundry Local SDK 的额外优势包括:

  • 硬件检测和优化:GPU、NPU 和 CPU 的自动功能评估。
  • 执行提供者管理(Windows):基于设备功能自动下载和注册适当的 ONNX 运行时执行提供者(CUDA、Vitis、QNN、OpenVINO、TensorRT)。
  • 通过 WebGpu 支持 Metal (macOS):原生支持在 Apple Silicon 上运行模型,性能经过优化。
  • 模型获取:从 Foundry 模型目录无缝下载,支持版本管理、更新以及自动进行硬件优化的模型选择,并提供回退支持。
  • 高效运行时:将大约 20 MB 添加到应用大小,在手机到台式机的设备上运行。
  • OpenAI API 兼容性:与 OpenAI 模型和工具轻松集成。
  • 可选 REST 服务器:将 Foundry Local 作为其他应用程序可访问的本地服务运行。

C# SDK 参考

安装软件包

如果您正在Windows上开发或部署,请选择“Windows”选项卡。Windows包与Windows ML运行时集成,提供相同的API接口,并支持更广泛的硬件加速范围。

dotnet add package Microsoft.AI.Foundry.Local.WinML
dotnet add package OpenAI

GitHub存储库中的 C# 示例是预配置项目。 如果要从头开始生成,则应阅读 Foundry Local SDK 参考 ,详细了解如何使用 Foundry Local 设置 C# 项目。

项目配置

示例存储库包含一个自动处理平台检测的 .csproj 文件。 如果要从头开始生成项目,请使用此配置作为参考:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <!-- Windows: target Windows SDK for WinML hardware acceleration -->
  <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
    <TargetFramework>net9.0-windows10.0.26100</TargetFramework>
    <WindowsAppSDKSelfContained>false</WindowsAppSDKSelfContained>
    <Platforms>ARM64;x64</Platforms>
    <WindowsPackageType>None</WindowsPackageType>
    <EnableCoreMrtTooling>false</EnableCoreMrtTooling>
  </PropertyGroup>

  <!-- Non-Windows: standard .NET -->
  <PropertyGroup Condition="!$([MSBuild]::IsOSPlatform('Windows'))">
    <TargetFramework>net9.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(RuntimeIdentifier)'==''">
    <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
  </PropertyGroup>

  <!-- Windows: WinML for hardware acceleration -->
  <ItemGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
    <PackageReference Include="Microsoft.AI.Foundry.Local.WinML" />
  </ItemGroup>

  <!-- Non-Windows: standard SDK -->
  <ItemGroup Condition="!$([MSBuild]::IsOSPlatform('Windows'))">
    <PackageReference Include="Microsoft.AI.Foundry.Local" />
  </ItemGroup>

  <!-- Linux GPU support -->
  <ItemGroup Condition="'$(RuntimeIdentifier)' == 'linux-x64'">
    <PackageReference Include="Microsoft.ML.OnnxRuntime.Gpu" />
    <PackageReference Include="Microsoft.ML.OnnxRuntimeGenAI.Cuda" />
  </ItemGroup>

  <!-- Shared utilities -->
  <ItemGroup>
    <Compile Include="../Shared/*.cs" />
  </ItemGroup>

</Project>

下表说明了关键项目设置:

设置 说明
TargetFramework 在 Windows 上,目标为 net9.0-windows10.0.26100 以实现 WinML 硬件加速。 在其他平台上,目标为 net9.0
WindowsAppSDKSelfContained 设置为 false 以使用系统安装的Windows 应用 SDK而不是捆绑它。
WindowsPackageType 将其设置为 None 以生成未打包的桌面应用程序(无 MSIX 打包)。
EnableCoreMrtTooling 设置为 false 禁用控制台应用不需要的 MRT Core 资源工具。
RuntimeIdentifier 默认为当前 SDK 的运行时标识符,以确保能够选择正确的平台二进制文件。
Microsoft.AI.Foundry.Local.WinML Windows专用软件包,利用 WinML 进行硬件加速和自动执行提供程序管理。
Microsoft.AI.Foundry.Local 适用于没有 WinML 的 macOS、Linux 和Windows的跨平台包。
Microsoft.ML.OnnxRuntime.Gpu / OnnxRuntimeGenAI.Cuda Linux GPU 支持包,用于支持启用 CUDA 的硬件。

快速入门

使用此代码片段验证 SDK 是否可以初始化和访问本地模型目录。

using Microsoft.AI.Foundry.Local;
using Microsoft.Extensions.Logging;
using System.Linq;

var config = new Configuration
{
  AppName = "app-name",
  LogLevel = Microsoft.AI.Foundry.Local.LogLevel.Information,
};

using var loggerFactory = LoggerFactory.Create(builder =>
{
  builder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Information);
});
var logger = loggerFactory.CreateLogger<Program>();

await FoundryLocalManager.CreateAsync(config, logger);
var manager = FoundryLocalManager.Instance;

var catalog = await manager.GetCatalogAsync();
var models = await catalog.ListModelsAsync();

Console.WriteLine($"Models available: {models.Count()}");

此示例打印你的硬件支持的模型数量。

示例

API 参考

本机音频转录 API

C# SDK 包括一个本机音频客户端,用于使用 Whisper 模型在设备上转录音频文件。 这会在进程内运行推理,而无需 REST Web 服务器。

获取音频客户端

加载 Whisper 模型后,获取音频客户端:

var audioClient = await model.GetAudioClientAsync();

音频听录方法

方法 Signature 说明
TranscribeAudioStreamingAsync() (string audioFilePath, CancellationToken ct) => IAsyncEnumerable<TranscriptionChunk> 按区块流式传输听录结果。 每个区块都有一个 Text 属性。

AudioClient 设置

财产 类型 说明
Language string ISO 639-1 语言代码(例如, "en")。 提高准确性。
Temperature float 采样温度(0.0–1.0)。 较低的值更具确定性。

示例

var audioClient = await model.GetAudioClientAsync();
audioClient.Settings.Language = "en";
audioClient.Settings.Temperature = 0.0f;

await foreach (var chunk in audioClient.TranscribeAudioStreamingAsync(
    "recording.mp3", CancellationToken.None))
{
    Console.Write(chunk.Text);
}

参考:

JavaScript SDK 参考文档

安装软件包

如果您正在Windows上开发或部署,请选择“Windows”选项卡。Windows包与Windows ML运行时集成,提供相同的API接口,并支持更广泛的硬件加速范围。

npm install foundry-local-sdk-winml openai

快速入门

使用此代码片段验证 SDK 是否可以初始化和访问本地模型目录。

import { FoundryLocalManager } from 'foundry-local-sdk';

console.log('Initializing Foundry Local SDK...');

const manager = FoundryLocalManager.create({
    appName: 'foundry_local_samples',
    logLevel: 'info'
});
console.log('✓ SDK initialized successfully');

// Explore available models
console.log('\nFetching available models...');
const catalog = manager.catalog;
const models = await catalog.getModels();

console.log(`Found ${models.length} models:`);
for (const model of models) {
    console.log(`  - ${model.alias}`);
}

此示例输出硬件的可用模型列表。

示例

API 参考

参考

Python SDK 参考

安装软件包

如果您正在Windows上开发或部署,请选择“Windows”选项卡。Windows包与Windows ML运行时集成,提供相同的API接口,并支持更广泛的硬件加速范围。

pip install foundry-local-sdk-winml openai

快速入门

使用此代码片段验证 SDK 是否可以初始化和访问本地模型目录。

import asyncio
from foundry_local_sdk import Configuration, FoundryLocalManager


async def main():
    config = Configuration(app_name="app-name")
    FoundryLocalManager.initialize(config)
    manager = FoundryLocalManager.instance

    models = manager.catalog.list_models()
    print(f"Models available: {len(models)}")


if __name__ == "__main__":
    asyncio.run(main())

此示例打印你的硬件支持的模型数量。

示例

配置

Configuration 允许自定义 SDK 行为:

from foundry_local_sdk import Configuration

config = Configuration(
    app_name="app-name",
    log_level="info",
    model_cache_dir="./foundry_local_data/model_cache",
    web={"urls": "http://127.0.0.1:55588"},
)
参数 类型 说明
app_name str 应用程序的名称。
log_level str 日志记录级别(例如,"info", "debug")。
model_cache_dir str 缓存模型的目录。
web dict 使用urls密钥的Web服务配置。

核心 API

方法 说明
FoundryLocalManager.initialize(config) 使用Configuration初始化单例管理器。
FoundryLocalManager.instance 访问初始化的管理器实例。
manager.catalog.list_models() 列出目录中的所有可用模型。
manager.catalog.get_model(alias) 通过别名获取模型。
manager.catalog.get_cached_models() 列出本地缓存中的模型。
manager.catalog.get_loaded_models() 列出当前加载的模型。
model.download(progress_callback) 下载模型(如果缓存的话跳过)。
model.load() 加载模型进行推理。
model.unload() 卸载模型。
model.is_cached 检查模型是否在本地缓存。
model.is_loaded 检查模型是否已加载。

原生聊天补全 API

加载模型后,获取聊天客户端:

client = model.get_chat_client()
方法 说明
client.complete_chat(messages) 生成完整的聊天响应。
client.complete_streaming_chat(messages) 流式传输聊天响应分块。

本机音频转录 API

加载 Whisper 模型后,获取音频客户端:

audio_client = model.get_audio_client()
方法 说明
audio_client.transcribe(file_path) 转录音频文件。 返回具有 text 属性的对象。

参考:

Rust SDK 文档参考

安装软件包

如果您正在Windows上开发或部署,请选择“Windows”选项卡。Windows包与Windows ML运行时集成,提供相同的API接口,并支持更广泛的硬件加速范围。

cargo add foundry-local-sdk --features winml
cargo add tokio --features full
cargo add tokio-stream anyhow

快速入门

使用此代码片段验证 SDK 是否可以初始化和访问本地模型目录。

use foundry_local_sdk::{FoundryLocalConfig, FoundryLocalManager};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let manager = FoundryLocalManager::create(FoundryLocalConfig::new("app-name"))?;

    let models = manager.catalog().get_models().await?;
    println!("Models available: {}", models.len());

    Ok(())
}

此示例打印你的硬件支持的模型数量。

示例

配置

FoundryLocalConfig 结构允许自定义 SDK 行为:

use foundry_local_sdk::FoundryLocalConfig;

let config = FoundryLocalConfig::new("app-name")
    .with_log_level("info")
    .with_model_cache_dir("./foundry_local_data/model_cache")
    .with_web_urls("http://127.0.0.1:55588");

核心 API

方法 说明
FoundryLocalManager::create(config) 使用 FoundryLocalConfig. 创建一个新管理器。
manager.catalog().get_models().await 列出所有可用模型。
manager.catalog().get_model(alias).await 按别名获取模型。
manager.catalog().get_cached_models().await 列出本地缓存中的模型。
manager.catalog().get_loaded_models().await 列出当前加载的模型。
model.download(callback).await 下载模型(如果缓存的话跳过)。
model.load().await 加载模型进行推理。
model.unload().await 卸载模型。

原生聊天补全 API

加载模型后,使用可选设置创建聊天客户端:

let client = model.create_chat_client()
    .temperature(0.7)
    .max_tokens(256);
方法 说明
client.complete_chat(&messages, tools).await 生成完整的聊天响应。
client.complete_streaming_chat(&messages, tools).await 流式传输聊天响应分块。

消息类型:ChatCompletionRequestSystemMessage、、ChatCompletionRequestUserMessageChatCompletionRequestMessage.

本机音频转录 API

加载 Whisper 模型后,创建音频客户端:

let audio_client = model.create_audio_client();
方法 说明
audio_client.transcribe(file_path).await 转录音频文件。 返回具有 text 字段的对象。

参考: