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


Начало работы с Phi Silica

Внимание

API-интерфейсы Phi Silica являются частью функции ограниченного доступа (см. класс LimitedAccessFeatures). Дополнительные сведения или запрос маркера разблокировки см. в форме запроса маркера доступа LAF.

Phi Silica — это мощная настраиваемая локальная языковая модель NPU, которая предоставляет множество возможностей, найденных в крупных языковых моделях (LLMs). Модель применяет метод, называемый спекулятивным декодированием, для ускорения создания текста, используя меньшую черновую модель, которая может предлагать несколько последовательностей токенов и параллельно проверяться основной моделью.

Замечание

Функции Phi Silica недоступны в Китае.

Phi Silica оптимизирован для повышения эффективности и производительности компьютеров Windows Copilot+ и может быть интегрирована в приложения Windows через API Windows AI в пакете SDK для приложений Windows.

Этот уровень оптимизации недоступен в других версиях Phi.

Дополнительные сведения об API см. в статье:

Интегрируйте Phi Silica

С помощью локальной языковой модели Phi Silica можно создавать текстовые ответы на запросы пользователей. Во-первых, убедитесь, что у вас есть предварительные требования и модели, доступные на устройстве, как описано в статье "Начало работы с API ИИ Windows".

Укажите необходимые пространства имен

Чтобы использовать Phi Silica, убедитесь, что вы используете необходимые пространства имен:

using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Text;
#include "winrt/Microsoft.Windows.AI.Text.h"
using namespace Microsoft::Windows::AI;
using namespace Microsoft::Windows::AI::Text;

Создание ответа

В этом примере показано, как создать ответ на запрос Q&A с пользовательским модерированием содержимого (см. раздел Модерация содержимого с помощью API ИИ Windows).

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

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

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

if (LanguageModel.GetReadyState() == AIFeatureReadyState.NotReady) 
{ 
   var op = await LanguageModel.EnsureReadyAsync(); 
} 

using LanguageModel languageModel = await LanguageModel.CreateAsync();

string prompt = "Provide the molecular formula for glucose.";

LanguageModelOptions options = new LanguageModelOptions();
ContentFilterOptions filterOptions = new ContentFilterOptions();
filterOptions.PromptMaxAllowedSeverityLevel.Violent = SeverityLevel.Minimum;
options.ContentFilterOptions = filterOptions;

var result = await languageModel.GenerateResponseAsync(prompt, options);
 
Console.WriteLine(result.Text);
if (LanguageModel::GetReadyState() == AIFeatureReadyState::NotReady)
{
    auto op = LanguageModel::EnsureReadyAsync().get();
}

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

const winrt::hstring prompt = L"Provide the molecular formula for glucose.";

LanguageModelResponseResult result = languageModel.GenerateResponseAsync(prompt).get();
std::cout << result.Text().c_str() << std::endl;

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

C6H12O6

Навыки анализа текста

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

Поддерживаемые навыки включают:

  • Текст в таблицу: форматирует ответ запроса в структурированном формате таблицы при необходимости.
  • Суммаризация: Возвращает краткое изложение текста запроса.
  • Перезапись: перефразирует текст запроса для оптимизации ясности, удобочитаемости и, если указано, тона (или стиля).

Ниже описано, как использовать навыки анализа текста.

  1. Создание объекта LanguageModel
    Этот объект ссылается на локальную языковую модель Phi Silica (не забудьте подтвердить, что модель Phi Silica доступна на устройстве).

  2. Инстанцировать объект, специфичный для навыка
    Выберите соответствующий класс на основе навыка, который вы хотите применить, и передайте экземпляр LanguageModel в качестве параметра.

  3. Вызов метода для выполнения навыка
    Каждый навык предоставляет асинхронный метод, который обрабатывает входные данные и возвращает отформатированный результат.

  4. Обработка ответа
    Результат возвращается в виде типизированного объекта, который можно распечатать или записать по мере необходимости.

В этом примере демонстрируется навык суммирования текста.

  1. Создание экземпляра LanguageModel (languageModel).
  2. Передайте этот LanguageModel конструктору TextSummarizer.
  3. Передайте некоторый текст в метод SummarizeAsync и распечатайте результат.
using namespace Microsoft.Windows.AI.Text;

using LanguageModel languageModel = await LanguageModel.CreateAsync();

var textSummarizer = new TextSummarizer(languageModel);
string text = @"This is a large amount of text I want to have summarized.";
var result = await textSummarizer.SummarizeAsync(text);

Console.WriteLine(result.Text); 
using namespace Microsoft::Windows::AI::Text;

auto languageModel = LanguageModel::CreateAsync().get();
auto textSummarizer = TextSummarizer(languageModel);
std::string prompt = "This is a large amount of text I want to have summarized.";
auto result = textSummarizer.SummarizeAsync(prompt);

std::wcout << result.get().Text() << std::endl;

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

Мы следовали основным принципам и методикам, описанным в Стандартах ответственного ИИ компании Microsoft, чтобы обеспечить надежность, безопасность и ответственную реализацию этих API. Дополнительные сведения о реализации функций ИИ в приложении см. в разделе "Разработка ответственного искусственного интеллекта" в Windows.

См. также