다음을 통해 공유


Foundry 로컬 SDK 참조

중요합니다

  • Foundry Local은 미리 보기로 제공됩니다. 공개 미리 보기 릴리스는 활성 배포 중인 기능에 대한 초기 access 제공합니다.
  • GA(일반 공급) 전에는 기능, 방식 및 프로세스가 변경되거나 기능이 제한될 수 있습니다.

Foundry 로컬 SDK를 사용하면 간단하고 직관적인 API를 통해 로컬 AI 모델을 활용할 수 있는 AI 기능을 애플리케이션에 제공할 수 있습니다. SDK는 AI 모델 관리의 복잡성을 추상화하고 로컬 AI 기능을 애플리케이션에 통합하기 위한 원활한 환경을 제공합니다. 이 참조는 JavaScript 및 C#에 대한 SDK 구현을 문서화합니다. 향후 추가 언어가 추가될 예정입니다.

SDK는 최종 사용자 컴퓨터에 Foundry 로컬 CLI를 설치할 필요가 없으므로 사용자에 대한 추가 설정 단계 없이 애플리케이션을 배송할 수 있습니다. 애플리케이션은 자체 포함됩니다. Foundry 로컬 SDK의 추가 이점은 다음과 같습니다.

  • 하드웨어 검색 및 최적화: GPU, NPU 및 CPU에 대한 자동 기능 평가입니다.
  • 실행 공급자 관리(Windows): 디바이스 기능에 따라 적절한 ONNX 런타임 실행 공급자(CUDA, Vitis, QNN, OpenVINO, TensorRT)의 자동 다운로드 및 등록
  • WebGpu(macOS)을 통한 Metal 지원: 최적화된 성능으로 Apple Silicon에서 모델을 실행하는 기본 지원입니다.
  • 모델 획득: Foundry 모델 카탈로그에서 버전 관리 및 업데이트와 함께 자동으로 하드웨어 최적화된 모델을 선택하여, 원활하게 다운로드하고 대체 지원을 제공합니다.
  • 효율적인 런타임: 앱 크기에 20MB를 추가하고 <휴대폰에서 데스크톱에 이르는 디바이스에서 실행됩니다.
  • OpenAI API 호환성: OpenAI 모델 및 도구와 쉽게 통합합니다.
  • 선택적 REST 서버: 다른 애플리케이션에서 액세스할 수 있는 로컬 서비스로 Foundry Local을 실행합니다.

JavaScript SDK 참조

프로젝트 설정

Foundry 로컬 SDK의 상위 수준 아키텍처는 다음과 같습니다.

Foundry Local의 새 아키텍처 다이어그램

SDK는 JavaScript 개발자에게 보다 사용자에게 친숙한 인터페이스를 제공하는 Foundry Local Core C API(.dll/.so/.dylib)를 중심으로 하는 경량 래퍼입니다. SDK는 네이티브 라이브러리 로드, 메모리 관리 및 JavaScript와 C 간의 데이터 형식 변환을 처리합니다. Foundry Local Core C API에는 두 가지 버전이 있지만 API 표면은 동일합니다.

  • WinML(WindowsML) - WindowsML을 사용하여 사용 가능한 하드웨어에 필요한 드라이버 및 실행 공급자를 획득하는 Windows 전용입니다. 이 옵션은 다양한 하드웨어와 더 나은 성능 및 호환성을 제공하기 때문에 Windows 사용자에게 권장되는 옵션입니다.
  • 플랫폼 간 - Windows, macOS 및 Linux에서 사용할 수 있습니다. macOS 장치 중 Apple Silicon이 있는 경우, 크로스 플랫폼 SDK는 하드웨어 가속을 위해 ONNX 런타임 WebGPU 실행 제공자를 통해 Apple의 Metal 프레임워크를 사용합니다.

프로젝트에 Foundry 로컬 SDK 패키지를 설치할 때 WinML 또는 플랫폼 간 버전을 설치하도록 선택할 수 있습니다.

Windows별 또는 플랫폼 간(macOS/Linux/Windows) 지침에 따라 JavaScript 프로젝트에서 Foundry Local을 사용합니다.

  1. 새 JavaScript 프로젝트를 만듭니다.
    mkdir app-name
    cd app-name
    npm init -y
    npm pkg set type=module
    
  2. Foundry 로컬 SDK 패키지를 설치합니다.
    npm install --winml foundry-local-sdk
    npm install 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 참조

참조

C# SDK 참조

프로젝트 설정 가이드

Foundry 로컬 SDK에 대한 두 가지 NuGet 패키지(WinML 및 플랫폼 간 패키지)는 API 표면이 동일하지만 다른 플랫폼에 최적화되어 있습니다.

  • Windows: WinML(Windows Machine Learning) 프레임워크를 사용하는 Windows 애플리케이션과 관련된 Microsoft.AI.Foundry.Local.WinML 패키지를 사용합니다.
  • 플랫폼 간: 플랫폼 간 애플리케이션(Windows, Linux, macOS)에 사용할 수 있는 패키지를 사용합니다 Microsoft.AI.Foundry.Local .

대상 플랫폼에 따라 다음 지침에 따라 새 C# 애플리케이션을 만들고 필요한 종속성을 추가합니다.

다음 Windows별 또는 플랫폼 간(macOS/Linux/Windows) 지침에 따라 C# 프로젝트에서 Foundry Local을 사용합니다.

  1. 새 C# 프로젝트를 만들고 그 안으로 이동합니다.
    dotnet new console -n app-name
    cd app-name
    
  2. app-name.csproj 파일을 열고 편집하여 다음을 수행합니다.
    <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. 프로젝트 루트에 다음 내용을 포함하는 nuget.config 파일을 만들어 패키지가 올바르게 복원되도록 하세요.
    <?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>
    

메모

Microsoft.AI.Foundry.Local NuGet 패키지는 net8.0을 대상으로 합니다. 와 함께. NET의 전방 호환성은 .NET 9, .NET 10 이상을 대상으로 하는 프로젝트에서 원활하게 작동하며 다른 구성은 필요하지 않습니다. SDK는 .NET 8 API만 사용하고 프레임워크별 코드 경로가 없으므로 앱이 대상으로 하는 런타임에 관계없이 동작이 동일합니다. 가장 광범위한 설치 기반이 있는 현재 LTS(장기 지원) 릴리스이므로 .NET 8을 대상으로 합니다.

빠른 시작

이 코드 조각을 사용하여 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 참조