Поделиться через


Начало работы с Phi Silica в пакете SDK для приложений Windows

Внимание

Доступно в последнем экспериментальном канале выпуске пакета SDK для приложений Windows.

Экспериментальный канал пакета SDK для приложений Windows включает API и функции на ранних этапах разработки. Все API-интерфейсы в экспериментальном канале подвергаются обширным исправлениям и критическим изменениям и могут быть удалены из последующих выпусков в любое время. Экспериментальные функции не поддерживаются для использования в рабочих средах и приложениях, которые используют их, не могут быть опубликованы в Microsoft Store.

  • Фи Силика недоступна в материке Китая.
  • Автономные приложения не поддерживаются.

Phi Silica — это локальная языковая модель, которую можно интегрировать в приложения Windows с помощью пакета SDK для приложений Windows.

Так как самая мощная модель локального языка, настроенная на локальном процессоре Майкрософт, Phi Silica оптимизирована для повышения эффективности и производительности на устройствах Windows Copilot+ pCs, предлагая множество возможностей, найденных в крупных языковых моделях (LLMs).

Этот уровень оптимизации является эксклюзивным для модели в пакете SDK для приложений Windows и недоступен в других версиях Phi.

Для получения сведений API, см. справочник API по Phi Silica в Windows App SDK для Windows.

Сведения о модерации содержимого см. в безопасности содержимого с генеративными API ИИ.

Совет

Предоставьте отзыв об этих API и их функциональных возможностях, создав новый проблему в репозитории GitHub Windows App SDK (включая Phi Silica в заголовке) или ответив на существующую проблему.

Необходимые компоненты

Использование пакета SDK для приложений Windows для интеграции Phi Silica в приложение Для Windows

С помощью локальной языковой модели Phi Silica и пакета SDK для приложений Windows можно создавать текстовые ответы на запросы пользователей.

Создание полного ответа

В этом примере показано, как создать ответ на запрос Q&A, в котором создается полный ответ до возврата результата.

  1. Убедитесь, что языковая модель доступна путем вызова метода IsAvailable и ожидания успешного возврата метода MakeAvailableAsync.

  2. После того как языковая модель будет доступна, создайте объект LanguageModel для ссылки на него.

  3. Отправьте строковый запрос в модель с помощью метода GenerateResponseAsync, который возвращает полный результат.

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;

Ответ, созданный этим примером:

The molecular formula for glucose is C6H12O6.

Создание полного ответа

В нашем API имеется встроенная модерация содержимого, которую можно настраивать. В этом примере показано, как указать собственные пороговые значения для внутренней модерации контента. Узнайте больше о модерации контента с помощью среды выполнения Windows Copilot.

  1. Создайте объект LanguageModel для ссылки на локальную языковую модель. *Проверка уже выполнена, чтобы убедиться, что языковая модель Phi Silica доступна на устройстве пользователя в предыдущем фрагменте кода.
  2. Создайте объект ContentFilterOptions и укажите предпочитаемые значения.
  3. Отправьте строковый запрос в модель с помощью метода GenerateResponseAsync с ContentFilterOptions в качестве одного из параметров.
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;

Создание потока частичных ответов

В этом примере показано, как создать ответ на запрос Q&A, где ответ возвращается в виде потока частичных результатов.

  1. Создайте объект LanguageModel для ссылки на локальную языковую модель. *Проверка уже выполнена, чтобы убедиться, что языковая модель Phi Silica доступна на устройстве пользователя в предыдущем фрагменте кода.

  2. Асинхронно извлечь LanguageModelResponse при вызове GenerateResponseWithProgressAsync. Выводите его в консоль по мере генерации ответа.

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;

Применение стандартных текстовых форматов для более согласованных ответов в приложении

Phi Silica включает возможность предопределить форматы текстовых ответов для использования в приложении. Предопределяя текстовый формат, можно обеспечить более согласованные результаты ответа со следующими параметрами:

  • Text to Table: Конвертировать ответ запроса в формат таблицы.
  • Сводка: возвращает сводку на основе текста запроса.
  • переформулирование: перефразируйте текст запроса, чтобы добавить ясность и выразить ответ более понятным и доступным образом.
  1. Создайте объект LanguageModel для ссылки на локальную языковую модель. *Проверка уже выполнена, чтобы убедиться, что языковая модель Phi Silica доступна на устройстве пользователя в предыдущем фрагменте кода.

  2. Создайте объект LanguageModelOptions и задайте предопределенный текстовый формат для его использования, присвоив перечисление LanguageModelSkill полю Skill объекта LanguageModelOptions. В перечислении LanguageModelSkill доступны следующие значения.

    Перечисление Описание
    LanguageModelSkill.General Значение по умолчанию, не применяется предопределенное форматирование.
    LanguageModelSkill.TextToTable Преобразуйте текст запроса в таблицу, если применимо.
    LanguageModelSkill.Summarize Возвращает сводку на основе текста запроса.
    LanguageModelSkill.Rewrite Перепишите текст отклика на запрос, чтобы улучшить его ясность и понимание.
  3. Затем мы асинхронно извлекаем languageModelResponse в вызове GenerateResponseWithProgressAsync и запишите его в консоль при создании ответа.

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;

Ответственное применение ИИ

Phi Silica предоставляет разработчикам мощную, надежную модель для создания приложений с безопасными, безопасными интерфейсами искусственного интеллекта. Ниже приведены шаги по обеспечению надежности, безопасности и ответственной сборки Phi Silica. Мы рекомендуем ознакомиться с рекомендациями, описанными в разделе Ответственная разработка ИИ на Windows при реализации функций ИИ в приложении.

  • Тщательное тестирование и оценка качества модели для выявления и устранения потенциальных рисков.
  • Добавочное развертывание экспериментальных выпусков Phi Silica. После окончательного экспериментального выпуска Phi Silica развертывание будет расширено для подписанных приложений, чтобы обеспечить применение сканирования вредоносных программ к приложениям с возможностями локальной модели.
  • Phi Silica предоставляет локализованную модель ИИ, которая включает API модерации текста. Этот API определяет и фильтрует потенциально вредное содержимое как во входных данных, так и в выходных данных, созданных искусственным интеллектом. Модель модерации содержимого локального текста основана на модели безопасности содержимого ИИ Azure для модерации контента и обеспечивает аналогичную производительность. См. Модерация текстового содержимого с помощью среды выполнения Windows Copilot для описания параметров фильтрации уровня серьезности и примера кода, демонстрирующего реализацию этих параметров.

Внимание

Система безопасности содержимого не является неразрешимой и иногда возникает ошибка, поэтому мы рекомендуем интегрировать дополнительные инструменты и методики ответственного ИИ. Дополнительные сведения см. в статье "Разработка ответственного искусственного интеллекта" в Windows.