Partager via


Prise en main de Phi Silicon dans le Kit de développement logiciel (SDK) d’application Windows

Important

Disponible dans la dernière version de la chaîne expérimentale du SDK d’applications Windows.

Le canal expérimental du Kit de développement logiciel (SDK) d’application Windows inclut des API et des fonctionnalités au début du 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. Les fonctionnalités expérimentales ne sont pas prises en charge pour une utilisation dans les environnements de production et les applications qui les utilisent ne peuvent pas être publiées dans le Microsoft Store.

  • Phi Silicon n’est pas disponible en Chine.
  • Les applications non empaquetées ne sont pas prises en charge.

Phi Silica est un modèle de langage local que vous pouvez intégrer à vos applications Windows à l’aide du Windows App SDK .

Comme le modèle de langage local le plus puissant de Microsoft, Phi Silicon est optimisé pour optimiser l’efficacité et les performances sur les pc Windows Copilot+ tout en offrant une grande partie des fonctionnalités trouvées dans les modèles de langage volumineux (LLMs).

Ce niveau d’optimisation est exclusif au modèle dans le Kit de développement logiciel (SDK) de l’application Windows et n’est pas disponible dans d’autres versions de Phi.

Pour les détails de l'API , consultez la référence de l'API pour Phi Silica dans le Kit de développement logiciel d'application Windows.

Pour plus de détails sur la modération du contenu, voir Sécurité du contenu avec les API d’IA générative.

Conseil

Fournissez des commentaires sur ces API et leurs fonctionnalités en créant un nouveau sujet dans le dépôt GitHub du Kit de développement logiciel (SDK) d’application Windows (incluez Phi Silica dans le titre) ou en répondant à un sujet existant.

Prérequis

Utiliser le Kit de développement logiciel (SDK) d’application Windows pour intégrer Phi Silicon à votre 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.

Générer une réponse complète

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. Vérifiez que le modèle de langage est disponible en appelant la méthode IsAvailable et en attendant que la méthode MakeAvailableAsync retourne correctement.

  2. Une fois le modèle de langage disponible, créez un objet LanguageModel pour le référencer.

  3. Soumettez une chaîne de caractères 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.

Générer une réponse complète

Notre API a intégré la modération du contenu qui est personnalisable. Cet exemple montre comment spécifier vos propres seuils pour la modération de contenu interne. En savoir plus sur la modération de contenu avec Windows Copilot Runtime.

  1. Créez un objet LanguageModel pour référencer le modèle de langage local. *Une vérification a déjà été effectuée pour s’assurer que le modèle de langage Phi Silicon est disponible sur l’appareil de l’utilisateur dans l’extrait de code précédent.
  2. Créez un objet ContentFilterOptions et spécifiez vos valeurs préférées.
  3. Soumettez une requête sous forme de chaîne au modèle à l’aide de la méthode GenerateResponseAsync avec ContentFilterOptions comme un des paramètres.
using Microsoft.Windows.AI.Generative; 

using LanguageModel languageModel = await LanguageModel.CreateAsync(); 
 
string prompt = "Provide the molecular formula for glucose."; 

ContentFilterOptions filterOptions = new ContentFilterOptions();
filterOptions.PromptMinSeverityLevelToBlock.ViolentContentSeverity = SeverityLevel.Medium;
filterOptions.ResponseMinSeverityLevelToBlock.ViolentContentSeverity = SeverityLevel.Medium;
 
// var result = await languageModel.GenerateResponseAsync(null, prompt, filterOptions); 
 
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.";

ContentFilterOptions contentFilter = ContentFilterOptions(); 
contentFilter.PromptMinSeverityLevelToBlock().ViolentContentSeverity(SeverityLevel::Medium); 
contentFilter.ResponseMinSeverityLevelToBlock().ViolentContentSeverity(SeverityLevel::Medium); 

// auto result = languageModel.GenerateResponseAsync(nullptr, prompt, filterOptions).get();

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

Générer un flux de réponses partielles

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. Créez un objet LanguageModel pour référencer le modèle de langage local. *Une vérification a déjà été effectuée pour s’assurer que le modèle de langage Phi Silicon est disponible sur l’appareil de l’utilisateur dans l’extrait de code précédent.

  2. Récupérer de manière asynchrone le LanguageModelResponse dans un appel à GenerateResponseWithProgressAsync. Écrivez-le 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;

Appliquer des formats de texte prédéfinis pour des réponses plus cohérentes dans votre application

Phi Silicon inclut la possibilité de prédéfinir des formats de réponse de texte à utiliser dans votre application. La définition préalable d’un format de texte peut fournir des résultats de réponse plus cohérents avec les options suivantes :

  • Du texte au tableau : Convertir la réponse à la requête en un tableau.
  • Résumer : Renvoie un résumé basé sur le texte de la requête.
  • Réécrire : Reformulez le texte de la requête pour le rendre plus clair et exprimer la réponse d’une manière plus facile à comprendre.
  1. Créez un objet LanguageModel pour référencer le modèle de langage local. *Une vérification a déjà été effectuée pour s’assurer que le modèle de langage Phi Silicon est disponible sur l’appareil de l’utilisateur dans l’extrait de code précédent.

  2. Créez un objet LanguageModelOptions et spécifiez le format de texte prédéfini à utiliser en affectant une énumération LanguageModelSkill au champ Compétence de l’objet LanguageModelOptions. Les valeurs suivantes sont disponibles pour l’énumération LanguageModelSkill.

    Énumération Description
    LanguageModelSkill.General Valeur par défaut, aucune mise en forme prédéfinie appliquée.
    LanguageModelSkill.TextToTable Convertir le texte de la requête en tableau, le cas échéant.
    LanguageModelSkill.Summarize Renvoie un résumé basé sur le texte de la requête.
    LanguageModelSkill.Rewrite Réécrivez la réponse au texte de la requête pour en améliorer la clarté et la compréhension.
  3. 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 = "This is a large amount of text I want to have summarized.";

LanguageModelOptions options = new LanguageModelOptions {
    Skill = LanguageModelSkill.Summarize
};
 
var result = await languageModel.GenerateResponseAsync(options, prompt); 
 
Console.WriteLine(result.Response); 
using namespace winrt::Microsoft::Windows::AI::Generative;

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

std::string prompt = "This is a large amount of text I want to have summarized.";

LanguageModelOptions options = LanguageModelOptions();
options.Skill = LanguageModelSkill.Summarize;

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

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

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 étapes suivantes ont été prises pour garantir la confiance, la sécurité et la construction responsable de Phi Silicon. Nous vous recommandons de consulter les meilleures pratiques décrites dans développement d’IA responsable sur Windows lors de l’implémentation de fonctionnalités IA dans votre application.

  • Test et évaluation approfondis de la qualité du modèle afin d'identifier et d'atténuer les risques potentiels.
  • 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.
  • Phi Silicon fournit un modèle IA localisé qui inclut une API de modération de contenu texte. Cette API identifie et filtre du contenu potentiellement dangereux dans la sortie générée par l’entrée et l’IA. Le modèle de modération de contenu texte local est basé sur le modèle Azure AI Content Safety pour la modération du contenu et fournit des performances similaires. Consultez modération du contenu texte avec Windows Copilot Runtime pour obtenir une description des options de filtre de niveau de gravité et un exemple de code illustrant comment implémenter ces options.

Important

Aucun système de sécurité du contenu n’est infaillible et des erreurs occasionnelles peuvent se produire. Nous vous recommandons donc d’intégrer des outils et pratiques supplémentaires d’IA responsable (RAI). Pour plus d’informations, consultez Développement d’INTELLIGENCE artificielle responsable sur Windows.