Создание изображений с помощью ИИ с помощью .NET
Приступая к работе с ИИ, создав простое консольное приложение чата .NET 8. Приложение будет работать локально и использовать модель OpenAI dall-e-3
для создания изображений почтовых карточек, чтобы пригласить друзей для похода! Выполните следующие действия, чтобы получить доступ к OpenAI и узнать, как использовать семантические ядра.
Необходимые компоненты
- Пакет SDK для .NET 8.0. Установите пакет SDK для .NET 8.0.
- Ключ API из OpenAI, чтобы можно было запустить этот пример.
- В Windows требуется PowerShell
v7+
. Чтобы проверить версию, запуститеpwsh
в терминале. Он должен возвращать текущую версию. Если он возвращает ошибку, выполните следующую команду:dotnet tool update --global PowerShell
Приступая к работе с ИИ, создав простое консольное приложение чата .NET 8. Приложение будет работать локально и использовать модель OpenAI dall-e-3
для создания изображений почтовых карточек, чтобы пригласить друзей для похода! Выполните следующие действия, чтобы подготовить Azure OpenAI и узнать, как использовать пакет SDK для .NET Azure OpenAI.
Необходимые компоненты
- Пакет SDK для .NET 8. Установите пакет SDK для .NET 8.
- Подписка Azure — создайте бесплатную учетную запись.
- Доступ к службе Azure OpenAI.
- Интерфейс командной строки разработчика Azure (необязательно). Установите или обновите интерфейс командной строки разработчика Azure.
Скачивание примера проекта
Клонирование примера репозитория
Вы можете создать собственное приложение, выполнив действия, описанные в разделах, или клонировать репозиторий GitHub, содержащий готовые примеры приложений для всех кратких руководств. Если вы планируете использовать Azure OpenAI, пример репозитория также структурирован как шаблон интерфейса командной строки разработчика Azure, который может подготовить ресурс Azure OpenAI для вас.
git clone https://github.com/dotnet/ai-samples.git
Создание службы Azure OpenAI
Пример репозитория GitHub структурирован как шаблон интерфейса командной строки разработчика Azure (azd
), который azd
можно использовать для подготовки службы и модели Azure OpenAI.
В терминале или командной строке перейдите в
src\quickstarts\azure-openai
каталог примера репозитория.azd up
Выполните команду, чтобы подготовить ресурсы Azure OpenAI. Для создания службы Azure OpenAI и развертывания модели может потребоваться несколько минут.azd up
azd
также настраивает необходимые секреты пользователей для примера приложения, например конечную точку Azure OpenAI и имя модели.
Попробуйте пример изображений для походов
Клонирование репозитория: dotnet/ai-samples
Выполните следующие команды, чтобы настроить ключ API OpenAI в качестве секрета для примера приложения:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
dotnet run
Используйте команду для запуска приложения:dotnet run
В терминале или командной строке перейдите
azure-openai\semantic-kernel\05-HikeImages
в каталог.dotnet run
Используйте команду для запуска приложения:dotnet run
Совет
Если появится сообщение об ошибке, ресурсы Azure OpenAI, возможно, не завершили развертывание. Подождите пару минут и повторите попытку.
Обзор кода
Приложение использует Microsoft.SemanticKernel
пакет для отправки и получения запросов в службу OpenAI.
Файл Program.cs содержит весь код приложения. Первые несколько строк конфигурации набора кода и получение ключа OpenAI, который ранее был задан с помощью dotnet user-secrets
команды.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string key = config["OpenAIKey"];
OpenAITextToImageService
Служба упрощает запросы и ответы.
OpenAITextToImageService textToImageService = new(key, null);
Приложение использует Microsoft.SemanticKernel
пакет для отправки и получения запросов в службу Azure OpenAI.
Файл Program.cs содержит весь код приложения. Первые несколько строк секретов загрузки кода и значений конфигурации, которые были заданы во dotnet user-secrets
время подготовки приложения.
// Retrieve the local secrets saved during the Azure deployment
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];
AzureOpenAITextToImageService
Служба упрощает запросы и ответы.
AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, new DefaultAzureCredential(), null);
Предоставьте контекст и инструкции модели, добавив системный запрос. Для хорошего запроса создания изображений требуется четкое описание того, что такое изображение, какие цвета следует использовать, предполагаемый стиль и другие дескрипторы.
Функция GenerateImageAsync
предписывает модели создавать ответ на основе пользовательского запроса и размера изображения и конфигураций качества.
// Generate the image
string imageUrl = await textToImageService.GenerateImageAsync("""
A postal card with a happy hiker waving and a beautiful mountain in the background.
There is a trail visible in the foreground.
The postal card has text in red saying: 'You are invited for a hike!'
""", 1024, 1024);
Console.WriteLine($"The generated image is ready at:\n{imageUrl}");
Настройте запрос на персонализацию изображений, созданных моделью.
Очистка ресурсов
Если вам больше не нужен пример приложения или ресурсов, удалите соответствующее развертывание и все ресурсы.
azd down
Устранение неполадок
В Windows после выполнения azd up
могут появиться следующие сообщения об ошибках:
postprovision.ps1 не имеет цифровой подписи. Сценарий не будет выполняться в системе
Скрипт postprovision.ps1 выполняется для задания секретов пользователей .NET, используемых в приложении. Чтобы избежать этой ошибки, выполните следующую команду PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Затем повторно запустите azd up
команду.
Еще одна возможная ошибка:
Pwsh не распознается как внутренняя или внешняя команда, операблирование программы или пакетного файла. ПРЕДУПРЕЖДЕНИЕ: сбой перехватчика postprovision с кодом выхода: "1", путь: ".\infra\post-script\postprovision.ps1". : код выхода: 1 Выполнение будет продолжаться, так как Параметр ContinueOnError имеет значение true.
Скрипт postprovision.ps1 выполняется для задания секретов пользователей .NET, используемых в приложении. Чтобы избежать этой ошибки, вручную запустите скрипт с помощью следующей команды PowerShell:
.\infra\post-script\postprovision.ps1
Теперь приложения .NET AI настраивают секреты пользователей и их можно протестировать.