Compartir vía


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

Importante

Disponible en la última versión del canal experimental del Windows App SDK.

El canal experimental del SDK de Aplicaciones para Windows incluye API y características que se encuentran en las primeras fases del 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.

  • Phi Silica no está disponible en China.
  • No se admiten aplicaciones sin empaquetar.

Phi Silica es un modelo de lenguaje local que puede integrar en sus aplicaciones Windows utilizando el Windows App SDK.

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 para Windows 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 del SDK de Aplicaciones para Windows (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 idioma está disponible llamando al método IsAvailable y esperando a que el método MakeAvailableAsync devuelva correctamente.

  2. Una vez que el modelo de lenguaje esté disponible, cree un objeto LanguageModel para referenciarlo.

  3. Envíe una solicitud de cadena al modelo utilizando 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 ha incorporado la moderación de contenido que es personalizable. Este ejemplo muestra cómo especificar sus propios umbrales para la moderación de contenido interna. Más información sobre Moderación de contenido con Windows Copilot Runtime.

  1. Cree un objeto LanguageModel para hacer referencia al modelo de idioma local. *Ya se ha realizado una comprobación para asegurar que el modelo de lenguaje Phi Silica está disponible en el dispositivo del usuario en el snippet anterior.
  2. Cree un objeto ContentFilterOptions y especifique sus valores preferidos.
  3. Envíe un prompt de cadena al modelo utilizando 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 idioma local. *Ya se ha realizado una comprobación para asegurar que el modelo de lenguaje Phi Silica está disponible en el dispositivo del usuario en el snippet 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;

Aplique formatos de texto predefinidos para obtener respuestas más coherentes en su aplicación

Phi Silica incluye la posibilidad de predefinir formatos de respuesta de texto para utilizarlos en su app. Predefinir un formato de texto puede proporcionar resultados de respuesta más consistentes 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: Reformule el texto del aviso para agregar claridad y expresar la respuesta de una forma más comprensible.
  1. Cree un objeto LanguageModel para hacer referencia al modelo de idioma local. *Ya se ha realizado una comprobación para asegurar que el modelo de lenguaje Phi Silica está disponible en el dispositivo del usuario en el snippet anterior.

  2. Crear un objeto LanguageModelOptions y especificar el formato de texto predefinido a utilizar asignando un enum LanguageModelSkill al campo Skill del objeto LanguageModelOptions. Los siguientes valores están disponibles para el enum LanguageModelSkill.

    Enum Descripción
    LanguageModelSkill.General Valor por defecto, no se aplica ningún formato predefinido.
    LanguageModelSkill.TextToTable Convierte el texto de solicitud en una tabla si corresponde.
    LanguageModelSkill.Summarize Devuelve un resumen basado en el texto de la consulta.
    LanguageModelSkill.Rewrite Para mejorar la claridad y la comprensión, reescriba la respuesta del mensaje de texto.
  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 Phi Silica 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.
  • Phi Silica proporciona un modelo de IA localizado que incluye una API de moderación de contenido de texto. Esta API identifica y filtra contenido potencialmente dañino tanto en la entrada como en la salida generada por la IA. El modelo local de moderación de contenido de texto se basa en el modelo 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 demuestra 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.