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

Foundry 本地 SDK 迁移指南

本指南提供有关将代码从旧版 Foundry Local SDK 迁移到当前版本的说明。 新 SDK 会删除 Foundry 本地 CLI 上的依赖项,因此,无需用户安装 CLI 或设置本地 Foundry 环境即可交付应用程序。 新 SDK 还包括对 API 的改进,以提高可用性和性能。

C# SDK 迁移指南

为了提高使用设备 AI 发布应用程序的能力,从版本 0.8.0 及更高版本开始,C# SDK 的体系结构发生了重大变化。 在本部分中,我们将概述关键更改,以帮助你将应用程序迁移到最新版本的 SDK。

注释

在 SDK 版本 0.8.0 及更高版本中,与之前版本(<=0.3.0)相比,API 存在重大变更。

下图显示了以前的架构(对于低于 0.8.0 的版本)如何非常依赖使用 REST Web服务器来管理模型和推理,比如聊天补全。

Foundry Local 之前的架构图。

SDK 将使用远程过程调用(RPC)在计算机上查找 Foundry Local CLI 可执行文件,启动 Web 服务器,然后通过 HTTP 与其通信。 此体系结构有几个限制,包括:

  • 管理 Web 服务器生命周期的复杂性。
  • 具有挑战性的部署:最终用户需要在其计算机 和 应用程序中安装 Foundry Local CLI。
  • CLI 和 SDK 的版本管理可能会导致兼容性问题。

在版本 0.8.0 及之后的版本中,为了解决这些问题,体系结构进行了重新设计,采用了更简化的方法。 新体系结构如下所示:

Foundry Local 的新体系结构示意图。

在此新体系结构中:

  • 应用程序是独立的。 它不需要在最终用户的计算机上安装 Foundry Local CLI,因此可以更轻松地部署应用程序。
  • REST Web 服务器是 可选的。 如果想要与其他通过 HTTP 通信的工具集成,仍可使用 Web 服务器。 可以查阅通过 REST 服务器与 Foundry Local 使用聊天补全以了解此功能的使用详情。
  • SDK 原生 支持聊天完成和音频听录,使你可以生成依赖项较少的聊天 AI 应用程序。 有关如何使用此功能的详细信息,请阅读 Use Foundry Local native chat completions API 。
  • 在 Windows 设备上,通过安装正确的运行时和驱动程序,可以使用 Windows ML 版本来处理设备上模型的硬件加速。

API 更改

从版本 0.8.0 开始及更高版本提供了更加面向对象且可组合的 API。 主要入口点仍然是 FoundryLocalManager 类,但 SDK 现在不再以一组通过静态调用无状态 HTTP API 的简单方法来实现,而是通过 FoundryLocalManager 实例公开方法,这些实例能够保持关于服务和模型的状态。

原始 版本 < 0.8.0 版本 >= 0.8.0
配置 不适用 config = Configuration(...)
获取管理器 mgr = FoundryLocalManager(); await FoundryLocalManager.CreateAsync(config, logger);
var mgr = FoundryLocalManager.Instance;
获取目录 不适用 catalog = await mgr.GetCatalogAsync();
列出模型 mgr.ListCatalogModelsAsync(); catalog.ListModelsAsync();
获取模型 mgr.GetModelInfoAsync("aliasOrModelId"); catalog.GetModelAsync(alias: "alias");
获取变体 不适用 model.SelectedVariant;
设置变体 不适用 model.SelectVariant();
下载模型 mgr.DownloadModelAsync("aliasOrModelId"); model.DownloadAsync()
加载模型 mgr.LoadModelAsync("aliasOrModelId"); model.LoadAsync()
卸载模型 mgr.UnloadModelAsync("aliasOrModelId"); model.UnloadAsync()
列出加载的模型 mgr.ListLoadedModelsAsync(); catalog.GetLoadedModelsAsync();
获取模型路径 不适用 model.GetPathAsync()
启动服务 mgr.StartServiceAsync(); mgr.StartWebServerAsync();
停止服务 mgr.StopServiceAsync(); mgr.StopWebServerAsync();
缓存位置 mgr.GetCacheLocationAsync(); config.ModelCacheDir
列出缓存的模型 mgr.ListCachedModelsAsync(); catalog.GetCachedModelsAsync();

API 允许 Foundry Local 通过 Web 服务器、日志记录、缓存位置和模型变体选择进行更可配置。 例如,类 Configuration 允许为应用程序数据、模型缓存和日志设置应用程序名称、日志记录级别、Web 服务器 URL 和目录:

var config = new Configuration
{
    AppName = "app-name",
    LogLevel = Microsoft.AI.Foundry.Local.LogLevel.Information,
    Web = new Configuration.WebService
    {
        Urls = "http://127.0.0.1:55588"
    },
    AppDataDir = "./foundry_local_data",
    ModelCacheDir = "{AppDataDir}/model_cache",
    LogsDir = "{AppDataDir}/logs"
};

API 参考

JavaScript SDK 迁移指南

为了提高使用设备 AI 交付应用程序的能力,JavaScript SDK 的体系结构发生了重大变化。 在本部分中,我们将概述关键更改,以帮助你将应用程序迁移到最新版本的 SDK。

注释

在 JavaScript SDK 0.9.0 及更高版本中,API 相对于先前版本(<=0.5.0)发生了重大变更。

下图显示了先前的体系结构如何严重依赖使用 REST Web 服务器来管理模型和推理,例如聊天完成。

Foundry Local 之前的架构图。

SDK 将使用远程过程调用(RPC)在计算机上查找 Foundry Local CLI 可执行文件,启动 Web 服务器,然后通过 HTTP 与其通信。 此体系结构有几个限制,包括:

  • 管理 Web 服务器生命周期的复杂性。
  • 具有挑战性的部署:最终用户需要在其计算机 和 应用程序中安装 Foundry Local CLI。
  • CLI 和 SDK 的版本管理可能会导致兼容性问题。

为了解决这些问题,重新设计的体系结构使用更简化的方法。 新体系结构如下所示:

Foundry Local 的新体系结构示意图。

在此新体系结构中:

  • 应用程序是独立的。 它不需要在最终用户的计算机上安装 Foundry Local CLI,因此可以更轻松地部署应用程序。
  • REST Web 服务器是 可选的。 如果想要与其他通过 HTTP 通信的工具集成,仍可使用 Web 服务器。
  • SDK 原生 支持聊天完成和音频听录,使你可以生成依赖项较少的聊天 AI 应用程序。

API 更改

最新版本提供更面向对象的可组合 API。 主要入口点仍然是 FoundryLocalManager 类,但 SDK 现在不再以一组通过静态调用无状态 HTTP API 的简单方法来实现,而是通过 FoundryLocalManager 实例公开方法,这些实例能够保持关于服务和模型的状态。

原始 以前的版本 当前版本
配置 不适用 config = { appName: "app-name", ... }
获取管理器 mgr = new FoundryLocalManager(); mgr = FoundryLocalManager.create(config);
获取目录 不适用 catalog = mgr.catalog;
列出模型 mgr.listCatalogModels(); catalog.getModels();
获取模型 mgr.getModelInfo("aliasOrModelId"); catalog.getModel(alias);
获取变体 不适用 model.id;
设置变体 不适用 model.selectVariant(modelId);
下载模型 mgr.downloadModel("aliasOrModelId"); model.download();
加载模型 mgr.loadModel("aliasOrModelId"); model.load();
卸载模型 mgr.unloadModel("aliasOrModelId"); model.unload();
列出加载的模型 mgr.listLoadedModels(); catalog.getLoadedModels();
获取模型路径 不适用 model.path;
启动服务 mgr.startService(); mgr.startWebService();
停止服务 不适用 mgr.stopWebService();
缓存位置 mgr.getCacheLocation(); config.modelCacheDir
列出缓存的模型 mgr.listCachedModels(); catalog.getCachedModels();

API 允许 Foundry Local 通过 Web 服务器、日志记录、缓存位置和模型变体选择进行更可配置。 例如, config 允许为应用程序数据、模型缓存和日志设置应用程序名称、日志记录级别、Web 服务器 URL 和目录:

const config = {
  appName: "app-name",
  logLevel: "info",
  webServiceUrls: "http://127.0.0.1:55588",
  appDataDir: "./foundry_local_data",
  modelCacheDir: "{appDataDir}/model_cache",
  logsDir: "{appDataDir}/logs",
};

在以前版本的 Foundry Local JavaScript SDK 中,无法直接通过 SDK 配置这些设置,这限制了自定义服务行为的能力。

参考

Python SDK 迁移指南

为了提高使用设备 AI 交付应用程序的能力,Python SDK 的体系结构发生了重大更改。 在本部分中,我们将概述关键更改,以帮助你将应用程序迁移到最新版本的 SDK。

注释

在最新的 Python SDK 版本(1.0.0)中,与之前版本(<=0.5.1)相比,API 存在重大变更。

下图显示了先前的体系结构如何严重依赖使用 REST Web 服务器来管理模型和推理,例如聊天完成。

Foundry Local 之前的架构图。

SDK 将使用远程过程调用(RPC)在计算机上查找 Foundry Local CLI 可执行文件,启动 Web 服务器,然后通过 HTTP 与其通信。 此体系结构有几个限制,包括:

  • 管理 Web 服务器生命周期的复杂性。
  • 具有挑战性的部署:最终用户需要在其计算机 和 应用程序中安装 Foundry Local CLI。
  • CLI 和 SDK 的版本管理可能会导致兼容性问题。

为了解决这些问题,重新设计的体系结构使用更简化的方法。 新体系结构如下所示:

Foundry Local 的新体系结构示意图。

在此新体系结构中:

  • 应用程序是独立的。 它不需要在最终用户的计算机上安装 Foundry Local CLI,因此可以更轻松地部署应用程序。
  • REST Web 服务器是 可选的。 如果想要与其他通过 HTTP 通信的工具集成,仍可使用 Web 服务器。
  • SDK 原生 支持聊天完成和音频听录,使你可以生成依赖项较少的聊天 AI 应用程序。

API 更改

最新版本提供更面向对象的可组合 API。 主要入口点仍然是 FoundryLocalManager 类,但初始化模式、模型管理和推理都发生了重大变化。

原始 以前的版本 (foundry-local) 当前版本 (foundry-local-sdk)
包 pip install foundry-local pip install foundry-local-sdk
进口 from foundry_local import FoundryLocalManager from foundry_local_sdk import Configuration, FoundryLocalManager
配置 不适用 config = Configuration(app_name="app-name")
获取管理器 manager = FoundryLocalManager(alias) FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
获取目录 不适用 catalog = manager.catalog
列出模型 manager.list_catalog_models() catalog.list_models()
获取模型 manager.get_model_info(alias) catalog.get_model(alias)
下载模型 manager.download_model(alias) model.download(progress_callback)
加载模型 manager.load_model(alias) model.load()
卸载模型 manager.unload_model(alias) model.unload()
列出加载的模型 manager.list_loaded_models() catalog.get_loaded_models()
列出缓存的模型 manager.list_cached_models() catalog.get_cached_models()
缓存位置 manager.get_cache_location() config.model_cache_dir
启动服务 manager.start_service() manager.start_web_service()
服务终结点 manager.endpoint manager.urls

API 允许 Foundry Local 通过 Web 服务器、日志记录、缓存位置和模型变体选择进行更可配置。 例如,类 Configuration 允许为应用程序数据、模型缓存和日志设置应用程序名称、日志记录级别、Web 服务器 URL 和目录:

from foundry_local_sdk import Configuration

config = Configuration(
    app_name="app-name",
    log_level="info",
    web={"urls": "http://127.0.0.1:55588"},
    model_cache_dir="./foundry_local_data/model_cache",
)

参考

Rust SDK 迁移指南

为了提高使用设备 AI 交付应用程序的能力,Rust SDK 的体系结构发生了重大变化。 在本部分中,我们将概述关键更改,以帮助你将应用程序迁移到最新版本的 SDK。

注释

在最新的 Rust SDK 版本(1.0.0)中,API 与以前版本相比有重大变更。 箱名称已从foundry-local更改为foundry-local-sdk。

下图显示了先前的体系结构如何严重依赖使用 REST Web 服务器来管理模型和推理,例如聊天完成。

Foundry Local 之前的架构图。

SDK 将使用远程过程调用(RPC)在计算机上查找 Foundry Local CLI 可执行文件,启动 Web 服务器,然后通过 HTTP 与其通信。 此体系结构有几个限制,包括:

  • 管理 Web 服务器生命周期的复杂性。
  • 具有挑战性的部署:最终用户需要在其计算机 和 应用程序中安装 Foundry Local CLI。
  • CLI 和 SDK 的版本管理可能会导致兼容性问题。

为了解决这些问题,重新设计的体系结构使用更简化的方法。 新体系结构如下所示:

Foundry Local 的新体系结构示意图。

在此新体系结构中:

  • 应用程序是独立的。 它不需要在最终用户的计算机上安装 Foundry Local CLI,因此可以更轻松地部署应用程序。
  • REST Web 服务器是 可选的。 如果想要与其他通过 HTTP 通信的工具集成,仍可使用 Web 服务器。
  • SDK 原生 支持聊天完成和音频听录,使你可以生成依赖项较少的聊天 AI 应用程序。

API 更改

最新版本提供更面向对象的可组合 API。 生成器模式已替换为基于配置的方法,模型管理现在使用专用 Model 对象。

原始 以前的版本 (foundry-local) 当前版本 (foundry-local-sdk)
箱子 foundry-local foundry-local-sdk
配置 不适用 FoundryLocalConfig::new("app-name")
获取管理器 FoundryLocalManager::builder().build().await? FoundryLocalManager::create(config)?
获取目录 不适用 manager.catalog()
列出模型 manager.list_catalog_models().await? manager.catalog().get_models().await?
获取模型 manager.get_model_info(alias).await? manager.catalog().get_model(alias).await?
下载模型 manager.download_model(alias).await? model.download(callback).await?
加载模型 manager.load_model(alias).await? model.load().await?
卸载模型 manager.unload_model(alias).await? model.unload().await?
列出加载的模型 manager.list_loaded_models().await? manager.catalog().get_loaded_models().await?
列出缓存的模型 manager.list_cached_models().await? manager.catalog().get_cached_models().await?
启动服务 manager.start_service()? manager.start_web_service().await?
终结点 manager.endpoint()? manager.urls()
HTTP 调用 reqwest::Client (手动 REST) 本机 SDK: model.create_chat_client()

新 SDK 提供本机聊天和音频客户端,在大多数情况下无需手动 HTTP 请求:

use foundry_local_sdk::{FoundryLocalConfig, FoundryLocalManager};

let config = FoundryLocalConfig::new("app-name");
let manager = FoundryLocalManager::create(config)?;

let model = manager.catalog().get_model("qwen2.5-0.5b").await?;
model.download(None).await?;
model.load().await?;

// Native chat client - no HTTP server needed
let client = model.create_chat_client().temperature(0.7).max_tokens(256);

参考