Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

챗봇에 다양한 전문적 기능을 수행하는 Agent룰 액터모델을 이용한 챗봇개발로

DB에 의존하는 상태없는 개발이아닌~ 액터모델을 이용한 이벤트드리븐+상태처리 프로그래밍를 바이브로 시도

비교적 스레드모델처럼 학습곡선이 높은 액터모델의 바이브가 되는지? 물음에서 시작해 여기까지 오게된 변종 바이브실험

아키텍처

  • MCP-Memory가 먼저 제작되었으며 개발완성후 아키텍처를 LLM이 코드분석 작성하고 메모리화


01-초기버전 프롬프트


이 프로젝트는 dotnet 9.0을 사용하며 풀스택(API,UI) 으로 구성되어 있습니다. PostgreSQL를 이용한 검색및 벡터검색이 가능하고 Neo4j를 활용 그래프검색도 가능합니다.

...

  • 사용자 세션별로 생성되는 ChatBotActor 액터모델을 생성합니다.
  • ChatBotActor 액터는 추구 추후 SSE와 연결되어 사용자의 대화요청을 처리받아 응답을 SSE로 스트리밍예정입니다. SSE는 당장 구현하지 않고 액터모델에서 스트림형태로 응답을 주는 형태로 구현합니다.
    • ChatbotActor 액터는 사용자 세션별로 하나가 대응됩니다. 동일세션이 있을시 동일액터를 재 사용합니다.
    • ChatbotActor 액터는 3일동안 세션당 대화가 없으면 스스로 종료합니다. 챗봇세션대응 메모리를 정리하기위한 시스템절약 용도입니다. -액터내 타이머를 이용
    • 아래에 설명되는 SearchMemoryActor,DecisionActor는 미리생성되며 ChatbotActor 는 생성된 참조액터를 이용합니다. ChatBotActor생성시 생성된 참조 액터가 전달됩니다.
  • SearchMemoryActor는 메모리 검색을 담당합니다. LLM을 이용할수 있으며 요청에대해 검색이 필요한지 판단하며 요청내용과 관련된 내용이 잘 검색할수 있도록 검색에 용이한 자연어 문장으로 변환후 시도합니다. IT관련 용어는 영어단어로 변환합니다.
    • src/Memorizer/Services/Memory.cs 을 이용해 메모리를 검색할수 있습니다.
    • 메모리 검색기능이 필요없는 요청일시에는 검색을 시도하지 않고 검색 결과 없음으로 응답합니다.
    • 메모리 검색기능 에는 문장으로 유사도 검색을 할수 있으며 유사 0.3 이상인것중 최대 5개를 이용합니다.
      • 검색결과 자체가 없을시 시도되는 문장에서 키워드를 추출해 영문,한글로 시도해 최대 3번까지 재검색을 시도합니다.
    • 이 액터의 목적을 달성하기 위해 LLM을 이용할수 있으며 이용할 프롬프트를 액터모델내 작성합니다.
  • DecisionActor 는 요청내용과 검색된 결과가 관련성이 있는지 판단합니다.
    • 관련성이 있다고 판단되면 검색된 결과를 이용해 연관문서로 응답을 생성합니다.
    • 관련성이 없다고 판단되면 연관문서 없음으로 응답합니다.
    • 이 액터의 목적을 달성하기 위해 LLM을 이용할수 있으며 이용할 프롬프트를 액터모델내 작성합니다.
  • ChatBotActor가 사용자의 대화요청에 다양한 대응을위해 SearchMemoryActor는, DecisionActor를 이용해 응답을 생성합니다.
    • DecisionActor 가 요청에대한 관련 자료를 찾지 못한경우 일반 LLM응답을 생성합니다.
    • ChatBotActor는 LLM을 이용해 일반응답을 생성할수 있습니다.
    • ChatBotActor는 응답에 대한 내용이 출처 메모리인지? 또는 일반인지 판단해 응답을 생성합니다. 참조된 위치를 추가로 표현할수 있습니다.
    • ChatBotActor는 최종응답을 받기까지의 추론하는 과정을 다른액터로부터 수신받을수 있습니다. 이 과정을 추후 SSE스트리밍을 통해서도 표현할수 있어야합니다. SSE스트리밍은 당장 구현하지 않습니다.

프로젝트 위치및 설명

  • src/Memorizer/ 하위디렉토리에 있습니다.
  • src/Memorizer/Controllers - API컨트롤러가 있습니다.
  • src/Memorizer/Services - 검색로직을 토함 서비스로직이 있습니다.
  • src/Memorizer/Services/ILlmService.cs - LLM및 임베딩을 이용할수 있습니다.
    • https://mcp.webnori.com/ui/view/14e7d5a6-3f47-42b8-ac8c-464cfb3abfb0 - LLM 추가 기능 스펙이 필요할시 Lamma,OpenAI,LocalAI를 지원하며 이 문서를 추가 참고합니다.
  • src/Memorizer/Views - UI관련 뷰파일이 있습니다.
  • src/Memorizer/Actors - 액터모델이 있으며, 액터모델이 필요시 참고합니다.
    • https://mcp.webnori.com/ui/view/ba8556b9-7a0a-4fb5-afae-585c0058b46c - 액터모델 이용법중 타이머 액터관련 내용을 참고할수 있습니다.
  • src/Memorizer.IntegrationTests - 통합테스트 프로젝트가 있습니다.
  • PageUrl : 다음과 같은 페이지 url을 가지고 있습니다.
    • ui/blog
      • ViewMore : 팝업버튼을 통해 컨텐츠보기
    • ui/view/2b61629b-d5b4-41c2-8163-6670893df238 : id별로 컨텐츠보기

로컬 테스트방법


Warning

실패사례 : 사실 처음에는 01번과 02번을 한꺼번에 작업처리하려 했으나 액터모델/SSE/프론트 3가지의 전문 개발자가 되어야하는데 클로드로 실패했음 ,

계속 연관성없는것을 깨트리기 시작 처음 잘작동할것처럼 보이는것이 나락으로 감 , 그래서 전문가를 최소 2명만 사용하게 목적달성을 위한 프롬프트를 분리진행


성공사례  :클로드 코드 동일세션에서 작업이 계속 누적되는경우 처음에서 시작된 컨텍스트의 량이 점점늘어나고 압축되면서

느려지거나 어전의 목적이 남아있는 상태에서  새로운 목표를 수행하느라 컨텍스트 꼬임현상이 발생 할수 있음으로

목표도달하고 나서는  문서화 정도로 마무리 , MCP메모리를 사용해 지금까지 내용을 정리하라고함 그리고 다음 작업은 하루또는 이틀뒤가 될수 있으니

컨텍스트를 초기화하고 항상 새롭게 시도해 적절한 크기의 버전업데이트가 진행 클로드내 참고 프롬프트 : "지금까지 진행과정의 핵심과정을 메모리화" 라고 하기만 하면 클로드의 컨텍스트를 요약해 장기메모리화 합니다.

- 이역시 클로드 코드에 연결된 모델성능에 의존(MCP는 분류해 저장해줄뿐)


컨텍스트 단절이 일어난 경우 다음과 같이 문제 해결한 메모리조각이 남아 있다면, 토큰절약및 삽질을 한번덜 하지 않을까?

  • docker-compose.local-psmon.yml 를 통해 로컬에서 테스트 가능합니다. 도커구동 문제시 이파일을 사용할것..
  • 이 어플리케이션은 momorizer 를 통해 빌드및 작동됩니다. 재빌드/재구동이 필요할시 도커로만 이용해주세요
  • 테스트가 개선되는동안 db스키마 변경은 허용하지 않으며, READ만 허용하며 postgres,neo4j는 도커기반 잘작동하며 이것을 중단하거나 내리지 않습니다.
  • 액터모델 유닛테스트 방법은 다음을 참고, 액터모델을 생성하면 해당액터에대한 유닛테스트를 작성또는 업데이트합니다.엑터모델 유닛테스트 방법 : https://mcp.webnori.com/ui/view/7a525e7f30bf1a4c-dfede4fc-4b384904-bb4c993f-2de6e77d1cea
  • src/Memorizer.IntegrationTests/Actors 위치에 액터모델 테스트를 작성합니다.
  • API 테스트는 닷넷에서 이용할수 있는 Client를 이용해 테스트합니다. SSE가 필요하거나 웹소켓이 필요한경우 적절한 클라이언트 모듈을 이용합니다.

테스트시 API인증방법

  • src/Memorizer/Controllers/AuthController.cs 코드확인후.. api인증을 통과한후 등록 API를 통해 진행..
  • 참고로 뷰는 미인증, 메모리등록은 인증된 API로만 가능 로긴시 admin/admin123 로 성공한후 반환된 쿠키값을 사용
  • src/Memorizer/Controllers/MemoryController.cs 메모리 등록은 CreateMemory 사용 ... db를 조작하지 말고 제공되는 API를 파악해 활용할것

추가지침 - Mock 테스트가 아닌 실제장치를 이용한 통합테스트

  • src/Memorizer.IntegrationTests/appsettings.json 설정을 이용해... Mock 테스트가 아닌 실제장치를 이용한 테스트... LLM의 응답은 예측할수 없음으로 Assert보다 응답 포맺이 올바른지만 조사... 테스트수행을 위한 probe 를 tell을 한후 셋팅가능 .. probe는 있을때만 테스트검증을 위해 수신여부 검사때 이용할수 있습니다. ChatBotActor에 다양한 요청시나리오를
    시도해 응답결과가 품질이 좋은지 실제 확인하기 위한 용도이며 최정결과에대한 평가는 assert가 아닌 유닛테스트 결과 콘솔을 통해 확인할수 있으면 됩니다. 시도되는 프롬프트 는 "안녕 너는누구야" , "Reactive Steam 에대해 알려줘" , "AI 개발방법론은 뭐가 일을까?" 등임
  • 2410253a338a
    • 이 단위가 얼만큼의 단위가 되어야 효율이 될지는 LLM 모델 성능에 따른것이기때문에 메모리의 컨텍스트 한조각을 온디바이스기준 2천토큰 이내로 제약(튜닝요소)


02-SSE를 액터모델에 연결하면서 BOT UX만들기

이 프로젝트는 dotnet 9.0을 사용하며 풀스택(API,UI) 으로 구성되어 있습니다. PostgreSQL를 이용한 검색및 벡터검색이 가능하고 Neo4j를 활용 벡터검색도 가능합니다.

...

  • ui/askbot : 지금 만드려고하는 챗봇 페이지는 이곳에 생성해주세요, 인증없이 작동해야합니다.
  • SSE를 이용해 사용자(USER)와 챗봇(ASKBOT)간 대화가 가능해야합니다.
  • 챗봇의 핵심 기능은 src/Memorizer/Actors/ChatBotActor.cs 에 있습니다.이것을 이용해주세요
  • SSE는 단방향 특징을 가지고 있으며~ 요청은 API형태로 응답만 SSE로 받습니다. 액터모델의 응답결과가 스트림형태로 SSE를 이용해 전달되어야합니다.
  • ChatBotActor는 세션개념을 가지고 있으며 유지됩니다. 최초이용시 GUID로 생성해 브라우저 캐시에 영구저장하며 이용합니다.
  • New세션 버튼을 누르면 새로운 세션으로 진행가능합니다. 이때는 ChatBotActor도 새로 생성되며 SSE가 다시연결됩니다.
  • UI 상세설명
    • ASKBOT에게 요청하기 입력창이 하단에 있으며 엔터키로 제출가능합니다. 모바일에서는 제출버튼이 필요함으로 아이콘형태로 버튼을 만들어주세요
    • 상단은 사용자가 요청한 내용과 챗봇이 응답한 내용이 대화형태로 표시됩니다.
    • 상단의 내용은 길어질수 있으며 스크롤이 가능해야하며 요청은 하단에 고정됩니다.
    • 챗봇이 응답하는 과정을 구현된 액터모델을 참고해 단계별로 표시합니다. 예를들면 "메모리에서 '검색시도되는 키워드' 관련내용을 검색중입니다." 와 같은 형태로 표시합니다.
    • 최종 답변이 생성되면 markdown형태로 표시합니다. 마크다운형식은 코드뷰, 링크, 이미지, 표, mermaid 다이어그램이 포함될수 있습니다.
      • markdown을 표현하는 스타일은 src/Memorizer/Views/Home/View.cshtml 를 참고합니다.
    • 모든 진행과정과 응답은 Stream을 이용해 자연스럽게 키보드입력 애니메이션형태로 출력을 합니다. 응답을 받는중에는 입력창은 비활성화됩니다. 응답이 최종완료되거나 실패되면 입력창은 다시 활성화됩니다.
  • SSE 스트림을 연결하는중 Chatbot 액터모델이 자연스럽게 스트림형태로 전송하기위해 약간의 개선이 필요하면 개선진행되면 됩니다.

프로젝트 위치및 설명

  • src/Memorizer/ 하위디렉토리에 있습니다.
  • src/Memorizer/Controllers - API컨트롤러가 있습니다.
  • src/Memorizer/Services - 검색로직을 토함 서비스로직이 있습니다.
  • src/Memorizer/Services/ILlmService.cs - LLM및 임베딩을 이용할수 있습니다.
    • https://mcp.webnori.com/ui/view/14e7d5a6-3f47-42b8-ac8c-464cfb3abfb0 - LLM 추가 기능 스펙이 필요할시 Lamma,OpenAI,LocalAI를 지원하며 이 문서를 추가 참고합니다.
  • src/Memorizer/Views - UI관련 뷰파일이 있습니다.
  • src/Memorizer/Actors - 액터모델이 있으며, 액터모델이 필요시 참고합니다.
  • src/Memorizer.IntegrationTests - 통합테스트 프로젝트가 있습니다.
  • PageUrl : 다음과 같은 페이지 url을 가지고 있습니다.
    • ui/blog
      • ViewMore : 팝업버튼을 통해 컨텐츠보기
    • ui/view/2b61629b-d5b4-41c2-8163-6670893df238 : id별로 컨텐츠보기
  • Directory.Packages.props - 공통 패키지 버전관리가 있습니다. 패키지 추가시 이파일에 추가하며 동일한것을 사용시 여기서 제공하는 버전을 맞추고 호환성 이슈가 없는한 기존 버전을 변경하지 않습니다.

로컬 테스트방법

  • docker-compose.local-psmon.yml 를 통해 로컬에서 테스트 가능합니다. 도커구동 문제시 이파일을 사용할것..
  • 이 어플리케이션은 momorizer 를 통해 빌드및 작동됩니다. 재빌드/재구동이 필요할시 도커로만 이용해주세요
  • 테스트가 개선되는동안 db스키마 변경은 허용하지 않으며, READ만 허용하며 postgres,neo4j는 도커기반 잘작동하며 이것을 중단하거나 내리지 않습니다.
  • 액터모델 유닛테스트 방법은 다음을 참고, 액터모델을 생성하면 해당액터에대한 유닛테스트를 작성또는 업데이트합니다.
    • 엑터모델 유닛테스트 방법 : https://mcp.webnori.com/ui/view/7a525e7f-dfed-4b38-bb4c-2de6e77d1cea
    • src/Memorizer.IntegrationTests/Actors 위치에 액터모델 테스트를 작성합니다.
  • API 테스트는 닷넷에서 이용할수 있는 Client를 이용해 테스트합니다. SSE가 필요하거나 웹소켓이 필요한경우 적절한 클라이언트 모듈을 이용합니다.
  • 테스트를 작성시 Mock이 아닌 src/Memorizer.IntegrationTests/appsettings.json 설정을 이용해 실제 제공되는 로컬장치를 이용할수 있습니다. API및 WS테스트를 위해 서버가 필요할수 있으며 이경우 유닛테스트가 유사하게 심플웹을 구성합니다.

테스트시 API인증방법

  • 인증이 필요한경우 src/Memorizer/Controllers/AuthController.cs 코드확인후.. api인증을 통과한후 등록 API를 통해 진행..
  • 참고로 뷰는 미인증, 메모리등록은 인증된 API로만 가능 로긴시 admin/admin123 로 성공한후 반환된 쿠키값을 사용
  • src/Memorizer/Controllers/MemoryController.cs 메모리 등록은 CreateMemory 사용 ... db를 조작하지 말고 제공되는 API를 파악해 활용할것

추가개선 or FIX

  • /ui/askbot 페이지의 접근 메뉴는 GraphView 다음으로 위치해 ASK Bot이라는 메뉴명으로 표시합니다.
  • 메모리 참조가 되었다고하면 참조한 문서 내용전체를 팝업으로 보여주는 View 링크를 응답에 포함해줍니다. ui/blog ViewMore를 누르는 팝업뷰를 참고합니다.
  • 코드영역은 가시성을 위해 다크모드로
  • 결정 actor가 자료를 찾은듯 보이지만 최종 응답을 못받 는 UI가 표시됨 src/Memorizer/Actors/ChatBotActor.cs , src/Memorizer/Actors/SearchMemoryActor.cs , src/Memorizer/Actors/DecisionActor.cs 상호 협력이 잘되는지 파악 다음은 ui 결과임 Decision reasoning: All five search results contain information about Reactive Streams or related reactive stream concepts (e.g., Reactive Programming, Pekko/Actor streams, Akka Streams, backpressure). This information is directly relevant to a query about investigating Reactive Streams. Generating response based on relevant memories... AskBot Failed to generate response from memories.
  • 평과과정에 3개의 문서이용하다가 토큰초과 예외발생하면 1개만 사용... 1개만 사용해도 예외발생시 평가 없음 일반 LLM으로 시도하면됨
  • src/Memorizer/Views/AskBot/Index.cshtml 에서 첫번째 요청및 응답은 잘작동하는데 두번째 요청시... 첫번째 응답한것을 덮어씌우는 UI오류가 발생하는듯..응답결과를 아래에 추가하는 형태로 개선
  • 챗봇 생각중 상태를 표시, 추론과정이 끝나고 최종응답이 시작되면 사라지면됨

초기버전 완성후 기능 확장하기 - 단기기억메모리 추가

이 프로젝트는 dotnet 9.0을 사용하며 풀스택(API,UI) 으로 구성되어 있습니다. PostgreSQL를 이용한 검색및 벡터검색이 가능하고 Neo4j를 활용 그래프 탐색도 가능합니다.


03- 조금더 자연스러운 챗봇업그레이드

ASKBot 기능을 개선하기위해 다음 ASIS의 문제를 개선지침을 참고해 개선수행해주세요 개선에 필요한 부가정보도 포함되었으니 필요한 부분을 참고해 충분히 이해한후 수행

...

  • ChatBotActor는 사용자 세션별로 생성되어, 세션당 대화를 임시저장할수 있습니다.
  • 세션당 유저의 대화는 최대 10개까지 저장할수 있으며, 10개가 넘으면 가장 오래된 대화를 삭제합니다.
    • 삭제하기전 대화내용중 중요하다고 판단되는것은 , 단기메모리를 분석해 가지고 있습니다.
    • 단기메모리의 최대크기는 500자 이내로 유지하며, 새로운 유저의 대화의 정보와 비교해 업데이트합니다.
    • 응답이 완료되면 가장 최근 1개의 응답결과는 별도로 저장합니다.
      • 이것을 저장하는 이유는, 응답한 결과의 내용중 중요한 내용이 있을수 있으며, 다음대화에서 이 내용을 활용할수 있기 때문입니다.
      • 대화때마다 마지막 응답을 항상 참고하지는 않습니다.
  • ChatBotActor는 대화요청에 대해, 단기메모리와 장기메모리를 모두 활용해 응답을 생성합니다.
    • 단기메모리는 대화의 맥락을 이해하는데 활용합니다.
      • 안녕, 너는 누구야? -> 나는 ASKBot이야. 너는 누구니? -> 나는 개발자야 -> 아 개발자구나 반가워
        • 이런식으로 대화의 맥락을 이해하는데 활용합니다.
      • 궁금한게 있어 -> 뭐가 궁금한데? -> AI 개발방법론이 궁금해 -> 나의 메모리에서 찾아볼게
        • 이런식으로 대화의 맥락을 이해하면서 메모리 검색을 합니다.
    • 장기메모리는 사용자의 요청에대해 관련된 메모리를 검색하는데 활용합니다. 이것은 이미 구현되어 활용하면 됩니다.

프로젝트 위치및 설명

  • src/Memorizer/ 하위디렉토리에 있습니다.
  • src/Memorizer/Controllers - API컨트롤러가 있습니다.
  • src/Memorizer/Services - 검색로직을 포함 서비스로직이 있습니다.
  • src/Memorizer/Services/ILlmService.cs - LLM및 임베딩을 이용할수 있습니다.
  • src/Memorizer/Views - UI관련 뷰파일이 있습니다.
  • src/Memorizer/Actors - 액터모델이 있으며, 액터모델이 필요시 참고합니다.
    • ChatBotActor.cs - SSE를 엣지로 사용자와 연결해 대화요청을 처리하는 액터모델입니다. 검색,판단 액터를 이용해 응답을 생성합니다.
    • SearchMemoryActor.cs - 메모리 검색을 담당하는 액터모델입니다.
    • DecisionActor.cs - 검색된 메모리와 요청내용이 관련성이 있는지 판단하는 액터모델입니다.
    • MetadataEmbeddingActor.cs - 메타데이터 임베딩을 담당하는 액터모델입니다. 메모리 등록시 메타데이터 임베딩을 비동기로 처리합니다. 이 과정에서 임베딩을 이용 벡터화합니다.
    • GraphsyncActor.cs - Neo4j를 이용해 ,Postgres데이터를 그래프로 모델로 싱크하는 액터모델입니다.
  • src/Memorizer.IntegrationTests - 통합테스트 프로젝트가 있습니다.
  • PageUrl : 다음과 같은 페이지 url을 가지고 있습니다.
    • ui/blog
      • ViewMore : 팝업버튼을 통해 컨텐츠보기
    • ui/view/2b61629b-d5b4-41c2-8163-6670893df238 : id별로 컨텐츠보기
    • ui/askbot - 챗봇 페이지

로컬 테스트방법

  • docker-compose.local-psmon.yml 를 통해 로컬에서 테스트 가능합니다. 도커구동 문제시 이파일을 사용할것..
  • 기본구성이 구동되어 있을수 있으며~ down 명령으로 전체를 내리지말고 memorizer-app 만 재빌드후 재구동할것
  • 이 어플리케이션은 memorizer-app 를 통해 빌드및 작동됩니다. 재빌드/재구동이 필요할시, dotnet cli없이 도커로만 이용해주세요
  • 테스트가 개선되는동안 db스키마 변경은 허용하지 않으며, READ만 허용하며 postgres,neo4j는 도커기반 잘작동하며 이것을 중단하거나 내리지 않습니다.
  • 액터모델 유닛테스트 방법은 다음을 참고, 액터모델을 생성하면 해당액터에대한 유닛테스트를 작성또는 업데이트합니다.
    • src/Memorizer.IntegrationTests/Actors 위치에 액터모델 테스트를 작성합니다.
  • API 테스트가 필요할시 닷넷에서 이용할수 있는 Client를 이용해 테스트합니다. SSE가 필요하거나 웹소켓이 필요한경우 적절한 클라이언트 모듈을 이용합니다.

테스트시 API인증방법

  • src/Memorizer/Controllers/AuthController.cs 코드확인후.. api인증을 통과한후 등록 API를 통해 진행..
  • 참고로 뷰는 미인증, 메모리등록은 인증된 API로만 가능 로긴시 admin/admin123 로 성공한후 반환된 쿠키값을 사용
  • src/Memorizer/Controllers/MemoryController.cs 메모리 등록은 CreateMemory 사용 ... db를 조작하지 말고 제공되는 API를 파악해 활용할것

추가지침 - Mock 테스트가 아닌 실제장치를 이용한 통합테스트

  • 현재 추론과정을 보여줍니다. 메모리검색이 필요없을때 단순응답시에는 추론과정을 UI에 표시하지 않습니다.
    • 추론과정의 기능은 잘작동함으로 UI에서만 제어합니다. 검색이 필요한경우 검색결과가 있습니다. 이벤트가 오기때문에 이때 추론과정을 표시해도됩니다.

ASK BOT 작동샘플

Info

액터모델을 중심으로 AI활용 기술을 메모리화 하고 있습니다. - 특정 카테고리로 한정


대화 : AI와 관련된 자료조사

Image Added


Image Added

  • 온디바이스 토큰처리량이 넉넉하지 않아~ 3가지 문서만 참고요약하도록 제약
    • LLM토큰을 잘 활용하려면 동시성 대량처리능력 만큼  통제가능한 제약이 더 중요합니다. - 이러한 장치가 없을시 토큰초과로 작동불능상태 빠짐


대화중 닉을 알려주고 직장도 알려줌

Image Added


  • 메모리 전문검색보다~ 일반대화 기능만드는것이 더 어려운듯, 메모리탐색이 본기능이며 대화는 부가기능임으로 단기기억 업데이트는 다음버전에서
    • 커피챗에서, 외국인이 말을걸어 이름을 물은적이있는데  나는 쌤입니다.~ 외국인도 번역후 나를 선생님이시군요 했던 경험이 ( 올바르게 작동한것일지도 )

유닛테스트

Info

유닛테스트 작성자체도 바이브로 시도되었으며 액터모델의 특성을 이용 챗봇FLOW와 유사하게 대화형으로 시도됩니다.

Image Added

  • 유닛테스트가 존재함으로~ 다음 기능수정시 유닛테스트도 통과시켜 해야  작동가능 바이브 코드생성가능


공개소스및 참고자료

  • https://github.com/psmon/memorizer-v1
  • https://mcp.webnori.com/ui/askbot - playground
  • https://akka.io/blog/announcing-akkas-agentic-ai-release -
    • akka 본진영 액터모델장치를 이용하는 컨셉을 참고
  • src/Memorizer.IntegrationTests/appsettings.json 설정을 이용해... Mock 테스트가 아닌 실제장치를 이용한 테스트...
  • LLM의 응답은 예측할수 없음으로 Assert보다 응답 포맺이 올바른지만 조사... 테스트수행을 위한 probe 를 tell을 한후 셋팅가능 ..
  • probe는 있을때만 테스트검증을 위해 수신여부 검사때 이용할수 있습니다.
  • ChatBotActor에 다양한 요청시나리오를 시도해 응답결과가 품질이 좋은지 실제 확인하기 위한 용도이며
    • 최적결과에대한 평가는 assert가 아닌 유닛테스트 결과 콘솔을 통해 확인할수 있으면 됩니다.
    • 시도되는 프롬프트 는 "안녕 너는누구야" , "Reactive Steam 에대해 알려줘" , "AI 개발방법론은 뭐가 일을까?" 등임
    • 테스트 시나리오를 위해 데이터가 필요할시, Mock이 아닌 API를 이용해 메모리 데이터를 추가할수 있습니다.메모리 추가는 인증이 필요하므로, 인증 API를 이용해 쿠키를 얻은후 메모리 등록 API를 이용해 데이터를 추가합니다. store 엔드포인트를 이용해 저장할수 있습니다.