你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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接口,并支持更广泛的硬件加速范围。
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()}");
此示例打印你的硬件支持的模型数量。
示例
- 有关演示如何使用 Foundry Local C# SDK 的示例应用程序,请参阅 Foundry Local C# SDK 示例GitHub存储库。
API 参考
- 有关 Foundry Local C# SDK 的更多详细信息,请参阅 Foundry Local C# SDK 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接口,并支持更广泛的硬件加速范围。
快速入门
使用此代码片段验证 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}`);
}
此示例输出硬件的可用模型列表。
示例
- 有关演示如何使用 Foundry Local JavaScript SDK 的示例应用程序,请参阅 Foundry Local JavaScript SDK 示例GitHub存储库。
API 参考
- 有关 Foundry Local JavaScript SDK 的更多详细信息,请参阅 Foundry Local JavaScript SDK API 参考。
参考
Python SDK 参考
安装软件包
如果您正在Windows上开发或部署,请选择“Windows”选项卡。Windows包与Windows ML运行时集成,提供相同的API接口,并支持更广泛的硬件加速范围。
快速入门
使用此代码片段验证 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())
此示例打印你的硬件支持的模型数量。
示例
- 有关演示如何使用 Foundry Local Python SDK 的示例应用程序,请参阅 Foundry Local SDK 示例GitHub存储库。
配置
类 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(())
}
此示例打印你的硬件支持的模型数量。
示例
- 有关演示如何使用 Foundry Local Rust SDK 的示例应用程序,请参阅 Foundry Local SDK 示例GitHub存储库。
配置
该 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 字段的对象。 |
参考: