Compartir a través de


Phi Silica en el SDK de Aplicaciones para Windows

Use el SDK de Aplicaciones para Windows para conectar la aplicación de Windows a modelos de lenguaje en el dispositivo, incluido Phi Silica, que es nuestro modelo de lenguaje local más eficaz optimizado para NPU.

El SDK de Aplicaciones para Windows se incluirá con varias API de inteligencia artificial (IA) para acceder a estos modelos y ofrecer el procesamiento local y la generación de chats, resolución matemática, generación de código, razonamiento sobre texto, etc.

Importante

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. No son compatibles para el uso en entornos de producción, y las aplicaciones que utilizan las características experimentales no se pueden publicar en Microsoft Store.

Requisitos previos

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.

  • Pruebas exhaustivas y evaluación de la calidad del modelo para identificar y mitigar los posibles riesgos.
  • Creación de una tarjeta de modelo Phi Silica que describe las fortalezas y limitaciones del modelo y proporciona claridad sobre los usos previstos.
  • 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.
  • Proporcione controles de cliente a través de Administrador de Acceso a Capacidades en Configuración para que los usuarios puedan desactivar el modelo en el dispositivo para el sistema, el usuario o la aplicación.

Nota:

La moderación de contenidos se encuentra en fase de desarrollo.

En adición a lo anterior, se recomienda revisar los procedimientos recomendados descritos en Desarrollo de IA generativa responsable en Windows.

¿Qué puedo hacer con Phi Silica y el SDK de Aplicaciones para 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.

Obtención de una única respuesta completa basada en una consulta de cadena

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. En primer lugar, asegúrese de que el modelo de lenguaje esté disponible; para ello, llame al método IsAvailable y espere a que el método MakeAvailableAsync se devuelva correctamente.
  2. Una vez disponible el modelo de lenguaje, cree un objeto LanguageModel para que haga referencia al modelo.
  3. Por último, debe enviar una consulta 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.

Obtención de una secuencia de resultados parciales en función de una consulta de cadena

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. En primer lugar, debe crear un objeto LanguageModel para hacer referencia al modelo de lenguaje local (ya debe haber comprobado la presencia del modelo de lenguaje en el fragmento de código anterior).
  2. 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 = "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;

Recursos adicionales

Acceso a archivos y carpetas con SDK de Aplicaciones para Windows y API de WinRT