Partilhar via


Referência do SDK local do Foundry

Importante

  • O Foundry Local está disponível em pré-visualização. Os lançamentos de pré-visualização pública proporcionam acesso antecipado a funcionalidades que estão em implementação ativa.
  • Recursos, abordagens e processos podem mudar ou ter recursos limitados, antes da Disponibilidade Geral (GA).

O Foundry Local SDK permite-lhe disponibilizar funcionalidades de IA nas suas aplicações capazes de tirar partido de modelos locais de IA através de uma API simples e intuitiva. O SDK abstrai as complexidades da gestão de modelos de IA e proporciona uma experiência fluida para integrar capacidades locais de IA nas suas aplicações. Esta referência documenta implementações de SDK para JavaScript e C#. Mais línguas serão adicionadas no futuro.

O SDK não requer que a CLI local do Foundry seja instalada na máquina do utilizador final, permitindo-lhe enviar as suas aplicações sem passos adicionais de configuração para os seus utilizadores – as suas aplicações são autónomas. Os benefícios extra do Foundry Local SDK incluem:

  • Deteção e otimização por hardware: Avaliação automática de capacidades para GPU, NPU e CPU.
  • Gestão do fornecedor de execução (Windows): Download e registo automáticos dos fornecedores de execução ONNX apropriados (CUDA, Vitis, QNN, OpenVINO, TensorRT) com base nas capacidades do dispositivo.
  • Suporte a Metal via WebGpu (macOS): Suporte nativo para execução de modelos em Apple Silicon com desempenho otimizado.
  • Aquisição de modelos: Download contínuo do Catálogo de Modelos Foundry com versionamento, atualizações e seleção automática de modelos otimizada por hardware com suporte a backup.
  • Tempo de execução eficiente: Adiciona <20MB ao tamanho da aplicação, funciona em dispositivos desde telemóveis a desktops.
  • Compatibilidade com APIs OpenAI: Integração fácil com modelos e ferramentas OpenAI.
  • Servidor REST opcional: Executar o Foundry Local como um serviço local acessível por outras aplicações.

Referência do SDK JavaScript

Configuração do projeto

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

Diagrama da nova arquitetura para a Foundry Local.

O SDK é um wrapper leve em torno de uma API Foundry Local Core C (.dll/.so/.dylib) que oferece uma interface mais amigável para os programadores JavaScript. O SDK trata do carregamento da biblioteca nativa, da gestão da memória e da conversão dos tipos de dados entre JavaScript e C. A API Foundry Local Core C tem duas variantes, mas a mesma superfície API:

  • WindowsML (WinML) - Específico para Windows que utiliza o WindowsML para adquirir os drivers e fornecedores de execução necessários para o hardware disponível. Esta é a opção recomendada para utilizadores Windows, pois proporciona melhor desempenho e compatibilidade com uma vasta gama de hardware.
  • Multiplataforma - pode ser usado no Windows, macOS e Linux. Convém notar que, em dispositivos macOS com Apple Silicon, o SDK multiplataforma utilizará a framework Metal da Apple para aceleração de hardware através do provedor de execução WebGPU ONNX.

Quando instala o pacote Foundry Local SDK no seu projeto, pode optar por instalar a versão WinML ou multiplataforma.

Use o Foundry Local no seu projeto JavaScript seguindo estas instruções específicas para 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 Foundry Local SDK:
    npm install --winml foundry-local-sdk
    npm install openai
    

Início Rápido

Use este excerto para verificar se o SDK pode inicializar-se e aceder ao catálogo local de modelos.

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 apresenta a lista de modelos disponíveis para o seu hardware.

Samples

Referência da API

Referências

Referência do SDK do C#

Guia de configuração do projeto

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

  • Windows: Utiliza o pacote Microsoft.AI.Foundry.Local.WinML específico para aplicações Windows, que utiliza o framework Windows Machine Learning (WinML).
  • Multiplataforma: Utiliza o Microsoft.AI.Foundry.Local pacote que pode ser usado para aplicações multiplataforma (Windows, Linux, macOS).

Dependendo da sua plataforma de destino, siga estas instruções para criar uma nova aplicação C# e adicionar as dependências necessárias:

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

  1. Crie um novo projeto em C# e navegue para ele:
    dotnet new console -n app-name
    cd app-name
    
  2. Abrir e editar o app-name.csproj ficheiro 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 ficheiro 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 objetivo net8.0. Com a compatibilidade futura do .NET, funciona perfeitamente em projetos que visam .NET 9, .NET 10 e posteriores — não é necessária outra configuração. O SDK usa apenas APIs .NET 8 e não contém caminhos de código específicos do framework, pelo que o comportamento é idêntico independentemente do runtime que a tua aplicação vise. O nosso objetivo é o .NET 8, pois é a versão atual de Suporte a Longo Prazo (LTS) com a base de instalações mais ampla.

Início Rápido

Use este excerto para verificar se o SDK pode inicializar-se e aceder ao catálogo local de modelos.

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 o seu hardware.

Samples

Referência da API