.NET용 채팅 래퍼(Chat Wrapper)를 통한 AI 메모리의 보일러플레이트(Boilerplate) 감소
요약
BlazorMemory v0.7.0은 .NET 개발자가 AI 메모리 관리 로직을 간소화할 수 있도록 새로운 Chat Wrapper를 도입했습니다. 메모리 쿼리, 프롬프트 구축, LLM 호출, 정보 추출의 4단계를 하나의 호출로 통합하여 보일러플레이트 코드를 획기적으로 줄여줍니다.
핵심 포인트
- MemoryEnabledChat 서비스를 통한 AI 메모리 워크플로우 자동화
- 메모리 쿼리, 프롬프트 구성, LLM 호출, 데이터 추출의 단일 통합
- QueryOptions를 통한 검색 제한 및 유사도 임계값 커스텀 설정 가능
- 델리게이트 패턴을 사용하여 기존 LLM 호출 로직과 쉽게 결합
BlazorMemory를 사용하는 모든 개발자는 채팅 메시지가 발생할 때마다 매번 동일한 코드를 작성합니다:
var reply = await CallLlmAsync(systemPrompt, userMessage);
await memory.ExtractAsync($"User: {userMessage}\nAssistant: {reply}", userId);
메모리 쿼리(Query), 프롬프트(Prompt) 구축, LLM 호출, 새로운 사실 추출. 모든 앱에서 매번 이 네 단계를 거쳐야 합니다. v0.7.0은 이 모든 과정을 하나의 호출로 래핑(Wrap)합니다.
MemoryEnabledChat
새로운 MemoryEnabledChat 서비스는 LLM 호출을 위한 델리게이트(Delegate)를 인자로 받아 그 외의 모든 과정을 처리합니다:
// Program.cs에 등록
builder.Services
.AddBlazorMemory()
...
델리게이트는 이미 관련 메모리가 포함된 시스템 프롬프트(System Prompt)를 전달받습니다. 이를 사용하여 LLM을 호출하고 응답(Reply)을 반환하면 됩니다. MemoryEnabledChat이 나머지 과정을 처리합니다.
내부 동작 방식
// 1. 관련 메모리 쿼리
var memories = await _memory.QueryAsync(userMessage, userId, QueryOptions);
...
추출(Extraction) 오류는 의도적으로 무시(Swallow)됩니다. 추출 실패는 기능이 저하된 경험일 뿐, 크래시(Crash)를 일으키지는 않습니다. 사용자는 여전히 응답을 받을 수 있습니다.
동작 커스텀화
두 가지 속성이 동작 방식을 제어합니다:
chat.QueryOptions = new QueryOptions { Limit = 8, Threshold = 0.60f };
chat.BaseSystemPrompt = "You are a helpful assistant for a software company.";
QueryOptions는 얼마나 많은 메모리를 검색할지(Limit)와 유사도 임계값(Similarity Threshold)을 제어합니다. BaseSystemPrompt는 메모리 컨텍스트(Memory Context) 블록 앞에 추가됩니다.
단일 서비스 접근 방식
MemoryEnabledChat을 별도로 주입(Inject)하고 싶지 않다면, IMemoryService에서 직접 동일한 동작을 사용할 수 있습니다:
var reply = await memory.ChatWithMemoryAsync(
userMessage,
userId,
...
동일한 델리게이트 패턴, 동일한 동작, 그리고 더 적은 주입이 필요합니다.
전과 후
v0.7.0 이전의 전형적인 채팅 서비스는 다음과 같았습니다:
public async Task<string> SendAsync(string message, string userId)
{
var memories = await _memory.QueryAsync(message, userId,
...
이후:
public Task<string> SendAsync(string message, string userId)
=> _chat.ChatAsync(message, userId,
(prompt, msg) => CallOpenAiAsync(prompt, msg));
로직은 동일합니다. 보일러플레이트 (Boilerplate)가 사라졌습니다.
v0.7.0 설치하기
dotnet add package BlazorMemory
dotnet add package BlazorMemory.Components
dotnet add package BlazorMemory.Storage.IndexedDb
...
9개 패키지에 걸쳐 84개의 테스트를 통과했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기