Compartilhar via


Referência do SDK Local do Foundry

Importante

  • A Fábrica Local está disponível na versão prévia. Versões de visualização pública fornecem acesso antecipado aos recursos que estão em desenvolvimento ativo.
  • Os recursos, abordagens e processos podem mudar ou ter seus recursos limitados antes da GA (disponibilidade geral).

O SDK Local do Foundry permite que você envie recursos de IA em seus aplicativos capazes de aproveitar modelos de IA locais por meio de uma API simples e intuitiva. O SDK abstrai as complexidades do gerenciamento de modelos de IA e fornece uma experiência perfeita para integrar recursos locais de IA em seus aplicativos. Essa referência documenta implementações do SDK para JavaScript e C#. Mais idiomas serão adicionados no futuro.

O SDK não exige que a CLI Local do Foundry seja instalada no computador de usuários finais, permitindo que você envie seus aplicativos sem etapas adicionais de instalação para seus usuários – seus aplicativos são independentes. Os benefícios extras do SDK Local do Foundry incluem:

  • Detecção e otimização de hardware: avaliação automática de funcionalidade para GPU, NPU e CPU.
  • Gerenciamento de provedor de execução (Windows): download e registro automático de provedores de execução do ONNX Runtime apropriados (CUDA, Vitis, QNN, OpenVINO, TensorRT) com base nos recursos do dispositivo.
  • Suporte Metal via WebGPU (macOS): suporte nativo para execução de modelos no Apple Silicon com desempenho otimizado.
  • Aquisição de modelo: download perfeito do Catálogo de Modelos do Foundry com controle de versão, atualizações e seleção automática de modelos otimizados para hardware com suporte a fallback.
  • Runtime eficiente: adiciona 20 MB ao tamanho do aplicativo, é executado em dispositivos de celulares a desktops.
  • Compatibilidade da API openai: fácil integração com modelos e ferramentas do OpenAI.
  • Servidor REST opcional: execute Foundry Local como um serviço local acessível por outros aplicativos.

Referência do SDK do JavaScript

Configuração do projeto

A arquitetura de alto nível do SDK Local do Foundry é a seguinte:

Diagrama da nova arquitetura para Foundry Local.

O SDK é um wrapper leve em torno de uma API C do Foundry Local Core (.dll/.so/.dylib) que fornece uma interface mais amigável para desenvolvedores JavaScript. O SDK manipula o carregamento da biblioteca nativa, o gerenciamento de memória e a conversão de tipos de dados entre JavaScript e C. A API C do Foundry Local Core tem dois sabores, mas a mesma superfície de API:

  • WindowsML (WinML) – solução específica do Windows que utiliza o WindowsML para adquirir os drivers e provedores de execução necessários para o hardware disponível. Essa é a opção recomendada para usuários do Windows, pois fornece melhor desempenho e compatibilidade com uma ampla gama de hardware.
  • Multiplataforma – pode ser usado no Windows, macOS e Linux. É importante observar que, em dispositivos macOS com o Apple Silicon, o SDK multiplataforma usará o framework Metal da Apple para aceleração de hardware, por meio do provedor de execução WebGPU do ONNX Runtime.

Ao instalar o pacote do SDK Local do Foundry em seu projeto, você pode optar por instalar o WinML ou a versão multiplataforma.

Use o Foundry Local em seu projeto JavaScript seguindo estas instruções específicas do Windows ou multiplataforma (macOS/Linux/Windows):

  1. Crie um novo projeto JavaScript:
    mkdir app-name
    cd app-name
    npm init -y
    npm pkg set type=module
    
  2. Instale o pacote do SDK Local do Foundry:
    npm install --winml foundry-local-sdk
    npm install openai
    

Início Rápido

Use este trecho de código para verificar se o SDK pode inicializar e acessar o catálogo de modelos local.

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}`);
}

Este exemplo gera a lista de modelos disponíveis para seu hardware.

Samples

Referência de API

References

Referência do SDK do C#

Guia de configuração do projeto

Há dois pacotes NuGet para o SDK Local do Foundry - um WinML e um pacote multiplataforma - que têm a mesma superfície de API, mas são otimizados para plataformas diferentes:

  • Windows: usa o pacote Microsoft.AI.Foundry.Local.WinML específico para aplicativos Windows, que usa a estrutura do Windows Machine Learning (WinML).
  • Multiplataforma: usa o Microsoft.AI.Foundry.Local pacote que pode ser usado para aplicativos multiplataforma (Windows, Linux, macOS).

Dependendo da plataforma de destino, siga estas instruções para criar um novo aplicativo C# e adicionar as dependências necessárias:

Use o Foundry Local em seu projeto em C# seguindo estas instruções específicas do Windows ou multiplataforma (macOS/Linux/Windows):

  1. Crie um novo projeto em C# e navegue até ele:
    dotnet new console -n app-name
    cd app-name
    
  2. Abra e edite o app-name.csproj arquivo para:
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net9.0-windows10.0.26100</TargetFramework>
        <RootNamespace>app-name</RootNamespace>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <WindowsAppSDKSelfContained>false</WindowsAppSDKSelfContained>
        <WindowsPackageType>None</WindowsPackageType>
        <EnableCoreMrtTooling>false</EnableCoreMrtTooling>
      </PropertyGroup>
    
      <PropertyGroup Condition="'$(RuntimeIdentifier)'==''">
        <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.AI.Foundry.Local.WinML" Version="0.9.0" />
        <PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.10" />
        <PackageReference Include="OpenAI" Version="2.5.0" />
      </ItemGroup>
    
    </Project>
    
  3. Crie um nuget.config arquivo na raiz do projeto com o seguinte conteúdo para que os pacotes sejam restaurados corretamente:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <clear />
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
        <add key="ORT" value="https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT/nuget/v3/index.json" />
      </packageSources>
      <packageSourceMapping>
        <packageSource key="nuget.org">
          <package pattern="*" />
        </packageSource>
        <packageSource key="ORT">
          <package pattern="*Foundry*" />
        </packageSource>
      </packageSourceMapping>
    </configuration>
    

Observação

O pacote NuGet Microsoft.AI.Foundry.Local tem como destino net8.0. Com a compatibilidade futura do .NET, ele funciona perfeitamente em projetos direcionados ao .NET 9, .NET 10 e posteriores, sem necessidade de outra configuração. O SDK usa apenas APIs do .NET 8 e não contém caminhos de código específicos da estrutura, portanto, o comportamento é idêntico, independentemente de qual runtime seu aplicativo é direcionado. Temos como destino o .NET 8, pois é a versão atual do LTS (Suporte a Longo Prazo) com a base de instalação mais ampla.

Início Rápido

Use este trecho de código para verificar se o SDK pode inicializar e acessar o catálogo de modelos local.

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()}");

Este exemplo imprime o número de modelos disponíveis para seu hardware.

Samples

Referência de API