.NET로 AI 채팅 앱을 사용하여 텍스트 요약
간단한 .NET 8.0 콘솔 채팅 애플리케이션을 만들어 AI를 시작하여 텍스트를 요약해 보세요. 애플리케이션은 로컬로 실행되고 OpenAI gpt-3.5-turbo
모델을 사용합니다. 다음 단계에 따라 OpenAI에 액세스하고 의미 체계 커널을 사용하는 방법을 알아봅니다.
필수 조건
- .NET 8.0 SDK - .NET 8.0 SDK를 설치합니다.
- 이 샘플을 실행할 수 있는 OpenAI의 API 키입니다.
- Windows에서는 PowerShell
v7+
이 필요합니다. 버전의 유효성을 검사하려면 터미널에서pwsh
(을)를 실행합니다. 현재 버전을 반환해야 합니다. 오류가 반환되면 다음 명령을 실행합니다.dotnet tool update --global PowerShell
.
간단한 .NET 8.0 콘솔 채팅 애플리케이션을 만들어 AI를 시작하여 텍스트를 요약해 보세요. 이 앱은 로컬로 실행되고 Azure OpenAI에 배포된 OpenAI gpt-35-turbo
모델에 연결됩니다. 다음 단계에 따라 Azure OpenAI 서비스를 프로비전하고 의미 체계 커널을 사용하는 방법을 알아봅니다.
필수 조건
- .NET 8 SDK - .NET 8 SDK를 설치합니다.
- Azure 구독 – 체험 구독을 만듭니다.
- Azure Developer CLI - Azure Developer CLI를 설치하거나 업데이트합니다.
- Azure OpenAI 서비스에 액세스합니다.
- Windows에서는 PowerShell
v7+
이 필요합니다. 버전의 유효성을 검사하려면 터미널에서pwsh
(을)를 실행합니다. 현재 버전을 반환해야 합니다. 오류가 반환되면 다음 명령을 실행합니다.dotnet tool update --global PowerShell
.
샘플 프로젝트 가져오기
모든 빠른 시작에 대한 샘플 앱이 포함된 GitHub 리포지토리를 복제합니다.
git clone https://github.com/dotnet/ai-samples.git
Azure OpenAI 서비스 만들기
- Azure Developer CLI
- Azure CLI
- Azure Portal
샘플 GitHub 리포지토리는 Azure OpenAI 서비스 및 모델을 프로비전하는 데 사용할 수 있는 azd
Azure 개발자 CLI(azd
) 템플릿으로 구성됩니다.
터미널 또는 명령 프롬프트에서 샘플 리포지토리의 src\quickstarts\azure-openai 디렉터리로 이동합니다.
명령을
azd up
실행하여 Azure OpenAI 리소스를 프로비전합니다. Azure OpenAI 서비스를 만들고 모델을 배포하는 데 몇 분 정도 걸릴 수 있습니다.azd up
azd
또한 OpenAI 액세스 키와 같은 샘플 앱에 필요한 사용자 비밀을 구성합니다.참고 항목
azd up
배포 중에 오류가 발생하면 문제 해결 섹션을 방문하세요.
하이킹 혜택 샘플 사용해 보기
터미널이나 명령 프롬프트에서
openai\01-HikeBenefitsSummary
디렉터리로 이동합니다.다음 명령을 실행하여 OpenAI API 키를 샘플 앱의 암호로 구성합니다.
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
dotnet run
명령을 사용하여 앱을 실행합니다.dotnet run
터미널이나 명령 프롬프트에서
azure-openai\01-HikeBenefitsSummary
디렉터리로 이동합니다.dotnet run
명령을 사용하여 앱을 실행합니다.dotnet run
팁
오류 메시지가 표시되면 Azure OpenAI 리소스 배포가 완료되지 않았을 수 있습니다. 몇 분 정도 기다렸다가 다시 시도해 보세요.
코드 탐색
앱은 Microsoft.SemanticKernel
패키지를 사용하여 OpenAI 서비스에 요청을 보내고 받습니다.
Program.cs 파일에는 모든 앱 코드가 포함되어 있습니다. 처음 몇 줄의 코드는 구성 값을 설정하고 dotnet user-secrets
명령을 사용하여 이전에 설정한 OpenAI 키를 가져옵니다.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string model = "gpt-3.5-turbo";
string key = config["OpenAIKey"];
Kernel
클래스는 요청 및 응답을 편리하게 수행하고 OpenAIChatCompletion
서비스를 등록합니다.
// Create a Kernel containing the OpenAI Chat Completion Service
Kernel kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion(model, key)
.Build();
이 애플리케이션은 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"];
string key = config["AZURE_OPENAI_KEY"];
Kernel
클래스는 요청 및 응답을 편리하게 수행하고 OpenAIChatCompletion
서비스를 등록합니다.
// Create a Kernel containing the Azure OpenAI Chat Completion Service
Kernel kernel = Kernel.CreateBuilder()
.AddAzureOpenAIChatCompletion(deployment, endpoint, key)
.Build();
Kernel
이 만들어지면 앱 코드가 benefits.md
파일 콘텐츠를 읽고 이를 사용하여 모델에 대한 prompt
를 만듭니다. 이 프롬프트는 모델에 파일 텍스트 콘텐츠를 요약하도록 지시합니다.
// Create and print out the prompt
string prompt = $"""
Please summarize the the following text in 20 words or less:
{File.ReadAllText("benefits.md")}
""";
Console.WriteLine($"user >>> {prompt}");
InvokePromptAsync
함수는 응답을 생성하기 위해 모델에 prompt
를 보냅니다.
// Submit the prompt and print out the response
string response = await kernel.InvokePromptAsync<string>(
prompt,
new(new OpenAIPromptExecutionSettings()
{
MaxTokens = 400
})
);
Console.WriteLine($"assistant >>> {response}");
파일의 텍스트 콘텐츠이나 요약 길이를 사용자 지정하여 응답의 차이점을 확인합니다.
리소스 정리
샘플 애플리케이션이나 리소스가 더 이상 필요하지 않으면 해당 배포와 모든 리소스를 제거합니다.
azd down
문제 해결
Windows에서는 azd up
(을)를 실행한 후 다음과 같은 오류 메시지가 나타날 수 있습니다.
postprovision.ps1은 디지털 서명되지 않았습니다. 스크립트가 시스템에서 실행되지 않습니다.
애플리케이션에 사용되는 .NET 사용자 비밀을 설정하기 위해 postprovision.ps1 스크립트가 실행됩니다. 이 오류를 방지하려면 다음 PowerShell 명령을 실행합니다.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
그런 다음 azd up
명령을 다시 실행합니다.
발생할 수 있는 다른 오류:
'pwsh'가 내부 또는 외부 명령, 실행 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. 경고: 종료 코드: '1', 경로: '.\infra\post-script\postprovision.ps1'으로 인해 'postprovision' 후크가 실패했습니다. : 종료 코드: 1 ContinueOnError가 true로 설정되었으므로 실행이 계속됩니다.
애플리케이션에 사용되는 .NET 사용자 비밀을 설정하기 위해 postprovision.ps1 스크립트가 실행됩니다. 이 오류를 방지하려면 다음 PowerShell 명령을 사용하여 스크립트를 수동으로 실행합니다.
.\infra\post-script\postprovision.ps1
이제 .NET AI 앱에 사용자 암호가 구성되어 테스트할 수 있습니다.
다음 단계
.NET