Partager via


Phi Silica dans le SDK d’application Windows

Utilisez le SDK d’application Windows pour connecter votre application Windows à des modèles linguistiques sur appareil, y compris Phi Silica, notre modèle de langage local optimisé pour le NPU le plus puissant pour l’instant.

Le SDK d’application Windows sera fourni avec plusieurs API d’intelligence artificielle (IA) pour accéder à ces modèles et permettre le traitement local et la génération de conversation, la résolution mathématique, la génération de code, le raisonnement sur le texte, et d’autres encore.

Important

Le canal expérimental du SDK d’application Windows comprend des API et des fonctionnalités qui en sont aux premières phases de développement. Toutes les API du canal expérimental font l’objet de révisions approfondies et de changements cassants et peuvent être supprimées des versions ultérieures à tout moment. Elles ne sont pas prises en charge dans les environnements de production et les applications qui utilisent des fonctionnalités expérimentales ne peuvent pas être publiées dans Microsoft Store.

Prérequis

IA responsable

Phi Silica fournit aux développeurs un modèle puissant et fiable pour créer des applications avec des expériences d'IA sûres et sécurisées. Les mesures suivantes ont été prises pour garantir que Phi Silica est digne de confiance, sécurisé et construit de manière responsable.

  • Test et évaluation approfondis de la qualité du modèle afin d'identifier et d'atténuer les risques potentiels.
  • Création d'une carte du modèle Phi Silica décrivant les points forts et les limites du modèle et clarifiant les utilisations prévues.
  • Déploiement incrémentiel des versions expérimentales de Phi Silica. Après la version expérimentale finale de Phi Silica, le déploiement s'étendra aux applications signées afin de garantir que les analyses de logiciels malveillants ont été appliquées aux applications dotées de capacités de modélisation locales.
  • Fournir des contrôles clients via le gestionnaire d'accès aux capacités dans les paramètres afin que les utilisateurs puissent désactiver le modèle sur l'appareil pour le système, l'utilisateur ou l'application.

Remarque

La modération du contenu est en cours de développement.

En plus de ce qui précède, nous recommandons de revoir les meilleures pratiques décrites dans Responsible Generative AI Development on Windows.

Que puis-je faire avec Phi Silica et le SDK d’application Windows ?

Avec un modèle de langage Phi Silica local et le SDK d’application Windows, vous pouvez générer des réponses textuelles aux invites utilisateur.

Obtenir une réponse unique et complète basée sur une invite de chaînes

Cet exemple montre comment générer une réponse à une invite Q&R dans laquelle la réponse complète est générée avant le retour du résultat.

  1. Tout d’abord, nous nous assurons que le modèle de langage est disponible en appelant la méthode IsAvailable et en attendant que la méthode MakeAvailableAsync renvoie avec succès.
  2. Une fois le modèle de langage disponible, nous créons un objet LanguageModel pour le référencer.
  3. Enfin, nous envoyons une invite de chaînes au modèle à l’aide de la méthode GenerateResponseAsync, qui retourne le résultat complet.
using Microsoft.Windows.AI.Generative; 
 
 
if (!LanguageModel.IsAvailable()) 
{ 
   var op = await LanguageModel.MakeAvailableAsync(); 
} 
 
using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "Provide the molecular formula for glucose."; 
 
var result = await languageModel.GenerateResponseAsync(prompt); 
 
Console.WriteLine(result.Response); 
using namespace winrt::Microsoft::Windows::AI::Generative;

if (!LanguageModel::IsAvailable()) 
{
    auto op = LanguageModel::MakeAvailableAsync().get();
}

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

auto result = languageModel.GenerateResponseAsync(prompt).get();

std::cout << result.Response << std::endl;

La réponse générée par cet exemple est la suivante :

The molecular formula for glucose is C6H12O6.

Obtenir un flux de résultats partiels en fonction d’une invite de chaînes

Cet exemple montre comment générer une réponse à une invite Q&R où la réponse est retournée en tant que flux de résultats partiels.

  1. Tout d’abord, nous créons un objet LanguageModel pour référencer le modèle de langage local (nous avons déjà vérifiez la présence du modèle de langue dans l’extrait de code précédent).
  2. Ensuite, nous récupérons de façon asynchrone le LanguageModelResponse en communication avec GenerateResponseWithProgressAsync et l’écrivons dans la console à mesure que la réponse est générée.
using Microsoft.Windows.AI.Generative; 

using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
 string prompt = "Provide the molecular formula for glucose."; 
 
  AsyncOperationProgressHandler<LanguageModelResponse, string> 
 progressHandler = (asyncInfo, delta) => 
 { 
     Console.WriteLine($"Progress: {delta}"); 
     Console.WriteLine($"Response so far: {asyncInfo.GetResults().Response()}"); 
 }; 
 
var asyncOp = languageModel.GenerateResponseWithProgressAsync(prompt); 
 
 asyncOp.Progress = progressHandler; 
 
 var result = await asyncOp;  
 
 Console.WriteLine(result.Response);
using namespace winrt::Microsoft::Windows::AI::Generative;

auto languageModel = LanguageModel::CreateAsync().get();

std::string prompt = "Provide the molecular formula for glucose.";

AsyncOperationProgressHandler<LanguageModelResponse, std::string> progressHandler = 
    [](const IAsyncOperationWithProgress<LanguageModelResponse, std::string>& asyncInfo, const std::string& delta) 
    { 
        std::cout << "Progress: " << delta << std::endl; 
        std::cout << "Response so far: " << asyncInfo.GetResults().Response() << std::endl; 
    };

auto asyncOp = languageModel.GenerateResponseWithProgressAsync(prompt);

asyncOp.Progress(progressHandler); 

auto result = asyncOp.get();

std::cout << result.Response() << std::endl;

Ressources supplémentaires

Accéder aux fichiers et dossiers avec le SDK d’application Windows et les API WinRT