/////
Search

간단한 챗 히스토리 만들어보기

프로젝트 초기화

// csproj 파일 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.3" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.3" /> <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.3" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.3" /> <PackageReference Include="Microsoft.SemanticKernel" Version="1.41.0" /> <PackageReference Include="Microsoft.SemanticKernel.Connectors.OpenAI" Version="1.41.0" /> <PackageReference Include="System.Text.Json" Version="9.0.3" /> </ItemGroup> <ItemGroup> <None Include="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> </Project>
C#
복사

소스 코드

// Program.cs using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.ChatCompletion; using Microsoft.Extensions.Configuration; // 애플리케이션 설정 구성 인스턴스 생성 var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) // JSON 파일에서 설정을 로드하도록 .AddUserSecrets<Program>() // 민감 정보를 관리하기 위해 추가 .Build(); // 구성 객체 생성 var endpoint = config["GitHub:Models:EndPoint"]!; var apikey = config["GitHub:Models:ApiKey"]!; var model = config["GitHub:Models:ModelId"]!; // Kernel 및 ChatCompletion 서비스 설정 var kernel = Kernel.CreateBuilder() // CreateBuilder()를 통해 커널 객체 생성 .AddAzureOpenAIChatCompletion(model, endpoint, apikey) // AddOpenAIChatCompletion 대신 AddAzureOpenAIChatCompletion 사용 : 모델 추가 .Build(); var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>(); // IChatCompletionService(: AI 채팅 기능 담당 서비스) 타입의 의존성 검색 & 반환 // Chat History 객체 생성 ChatHistory chatHistory = [ // 시스템 메시지 추가 (초기 설정) new ChatMessageContent(AuthorRole.System, "You are a helpful assistant."), ]; while (true) { Console.Write("User: "); string userInput = Console.ReadLine() ?? string.Empty; if (string.IsNullOrWhiteSpace(userInput) || string.Equals(userInput, "exit", StringComparison.OrdinalIgnoreCase)) break; // 사용자 메시지 추가 chatHistory.Add(new ChatMessageContent(AuthorRole.User, userInput)); // AI 응답 생성 var response = await chatCompletionService.GetChatMessageContentAsync(chatHistory); // 응답을 Chat History에 추가 chatHistory.Add(response); // 응답 출력 Console.WriteLine($"Assistant: {response.Content}"); } Console.WriteLine("Chat ended.");
C#
복사

결과(Console)

다음과 같이, 제가 말했던 내용을 기억했다가 다음 답변시 활용할 수 있습니다