Compartir a través de


Introducción a PhiLice en el SDK de Aplicaciones para Windows

Importante

Disponible en la versión más reciente del canal experimental del SDK de aplicaciones de Windows.

El canal experimental del SDK de aplicaciones de Windows incluye API y características en las primeras fases de desarrollo. Todas las API del canal experimental están sujetas a revisiones exhaustivas y cambios importantes y se pueden eliminar de versiones posteriores en cualquier momento. Las características experimentales no se admiten para su uso en entornos de producción y las aplicaciones que las usan no se pueden publicar en Microsoft Store.

  • PhiLice no está disponible en China.
  • No se admiten aplicaciones desempaquetadas.

PhiLice es un modelo de lenguaje local que se puede integrar en las aplicaciones de Windows mediante el SDK de aplicaciones de Windows .

Como modelo de lenguaje local con ajuste de NPU más potente de Microsoft, PhiLice está optimizado para mejorar la eficiencia y el rendimiento en los dispositivos con Windows Copilot+, a la vez que ofrece muchas de las funcionalidades que se encuentran en modelos de lenguaje grande (LLM).

Este nivel de optimización es exclusivo del modelo dentro de la SDK de Aplicaciones para Windows y no está disponible en otras versiones de Phi.

Para detalles de la API, consulte Referencia de la API para Phi Silica en el SDK de aplicaciones de Windows.

Para obtener detalles sobre la moderación de contenido, consulte la seguridad de contenido con APIs de IA generativa.

Sugerencia

Proporcione comentarios sobre estas API y su funcionalidad creando una nueva incidencia en el repositorio de GitHub de Windows App SDK (incluya Phi Silica en el título) o respondiendo a una incidencia existente.

Requisitos previos

Usar el SDK de Aplicaciones para Windows para integrar PhiLice en la aplicación de Windows

Con un modelo de lenguaje Phi Silica local y el SDK de Aplicaciones para Windows puede generar respuestas de texto a las solicitudes del usuario.

Generar una respuesta completa

En este ejemplo se muestra cómo generar una respuesta a una serie de preguntas y respuestas, donde se genera la respuesta completa antes de que se devuelva el resultado.

  1. Asegúrese de que el modelo de lenguaje está disponible llamando al método IsAvailable y esperando a que el método MakeAvailableAsync devuelva correctamente.

  2. Una vez disponible el modelo de lenguaje, cree un objeto LanguageModel para hacer referencia a él.

  3. Envíe un mensaje de cadena al modelo mediante el método GenerateResponseAsync, que devuelve el resultado completo.

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 respuesta que se genera en este ejemplo es:

The molecular formula for glucose is C6H12O6.

Generar una respuesta completa

Nuestra API tiene moderación de contenido integrada que es personalizable. En este ejemplo se muestra cómo especificar sus propios umbrales para la moderación de contenido interno. Más información sobre Moderación de contenidos con Windows Copilot Runtime.

  1. Cree un objeto LanguageModel para hacer referencia al modelo de lenguaje local. *Ya se ha realizado una comprobación para asegurarse de que el modelo de lenguaje PhiLice está disponible en el dispositivo del usuario en el fragmento de código anterior.
  2. Cree un objeto ContentFilterOptions y especifique los valores preferidos.
  3. Envíe un mensaje de cadena al modelo mediante el método GenerateResponseAsync con el ContentFilterOptions como uno de los parámetros.
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;

Generación de un flujo de respuestas parciales

En este ejemplo se muestra cómo generar una respuesta a una serie de preguntas y respuestas, donde se devuelve la respuesta como una secuencia de resultados parciales.

  1. Cree un objeto LanguageModel para hacer referencia al modelo de lenguaje local. *Ya se ha realizado una comprobación para asegurarse de que el modelo de lenguaje PhiLice está disponible en el dispositivo del usuario en el fragmento de código anterior.

  2. Recuperar de forma asíncrona el LanguageModelResponse en una llamada a GenerateResponseWithProgressAsync. Escríbalo en la consola a medida que se genera la respuesta.

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;

Aplicar formatos de texto predefinidos para respuestas más coherentes en la aplicación

PhiLice incluye la capacidad de predefinir formatos de respuesta de texto para su uso en la aplicación. La definición previa de un formato de texto puede proporcionar resultados de respuesta más coherentes con las siguientes opciones:

  • Texto a tabla: Convierte la respuesta del prompt en un formato de tabla.
  • Resumir: Devuelve un resumen basado en el texto de la solicitud.
  • Reescritura: Reformula el texto del mensaje para añadir claridad y expresar la respuesta de forma más comprensible.
  1. Cree un objeto LanguageModel para hacer referencia al modelo de lenguaje local. *Ya se ha realizado una comprobación para asegurarse de que el modelo de lenguaje PhiLice está disponible en el dispositivo del usuario en el fragmento de código anterior.

  2. Cree un objeto LanguageModelOptions y especifique el formato de texto predefinido que se usará asignando una enumeración LanguageModelSkill al campo Skill del objeto LanguageModelOptions. Los siguientes valores están disponibles para la enumeración LanguageModelSkill.

    Enum Descripción
    LanguageModelSkill.General Valor predeterminado, sin formato predefinido aplicado.
    LanguageModelSkill.TextToTable Convierte el texto de solicitud en una tabla si corresponde.
    LanguageModelSkill.Summarize Devuelve un resumen basado en el texto del mensaje.
    LanguageModelSkill.Rewrite Reescriba la respuesta al texto del aviso mejorando claridad y comprensión.
  3. A continuación, se recupera de forma asíncrona el elemento LanguageModelResponse en una llamada a GenerateResponseWithProgressAsync y se escribe en la consola a medida que se genera la respuesta.

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 proporciona a los desarrolladores un modelo eficaz y confiable para crear aplicaciones con experiencias de inteligencia artificial seguras. Se han realizado los siguientes pasos para garantizar que PhiLice sea confiable, seguro y construido de forma responsable. Se recomienda revisar las mejores prácticas descritas en Desarrollo de IA Generativa Responsable en Windows al implementar características de inteligencia artificial en tu aplicación.

  • Pruebas exhaustivas y evaluación de la calidad del modelo para identificar y mitigar los posibles riesgos.
  • Despliegue gradual de las versiones experimentales de Phi Silica. Después de la versión experimental final de Phi Silica, el lanzamiento se expandirá a las aplicaciones firmadas para asegurarse de que los exámenes de malware se han aplicado a las aplicaciones con funcionalidades del modelo local.
  • PhiLice proporciona un modelo de inteligencia artificial localizado que incluye una API de moderación de contenido de texto. Esta API identifica y filtra el contenido potencialmente perjudicial tanto en la entrada como en la salida generada por IA. El modelo de moderación de contenido de texto local se basa en el modelo de de seguridad de contenido de Azure AI para la moderación de contenido y proporciona un rendimiento similar. Consulte moderación de contenido de texto con Windows Copilot Runtime para obtener una descripción de las opciones de filtro de nivel de gravedad y un ejemplo de código que muestra cómo implementar estas opciones.

Importante

No se puede producir ningún sistema de seguridad de contenido y se pueden producir errores ocasionales, por lo que se recomienda integrar herramientas y prácticas complementarias de INTELIGENCIA ARTIFICIAL responsable (RAI). Para obtener más información, consulte Desarrollo de IA generativa responsable en Windows.