Articlelangchain.com·2026년 8월 26일·0

Data-Driven Characters

Quick Summary

data driven characters는 LangChain으로 코퍼스 기반 캐릭터 챗봇을 만들고, 요약·검색 메모리를 직접 제어해 배경 이야기와 연결된 대화를 구현하는 저장소다.

Data-Driven Characters 관련 대표 이미지

🖼️ 인포그래픽

Data-Driven Characters 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Data-Driven Characters의 핵심 내용을 4단계로 요약한 인포그래픽
Data-Driven Characters 핵심 내용을 4단계로 압축한 4컷 인포그래픽

💡 한 줄 요약

data-driven-characters는 LangChain으로 코퍼스 기반 캐릭터 챗봇을 만들고, 요약·검색 메모리를 직접 제어해 배경 이야기와 연결된 대화를 구현하는 저장소다.

📌 핵심 요약

  • data-driven-characters는 코퍼스와 캐릭터 이름을 입력받아 캐릭터 정의를 생성하며, character.ai 내보내기, 명령줄·Streamlit 기반 로컬 실행과 디버깅, 브라우저용 Streamlit 앱을 지원한다.
  • 원문은 사전학습에 의존하는 캐릭터 모방, 검색 서비스의 역할 유지 실패, 특정 인물의 콘텐츠만 설명하는 앱의 한계를 제시하고 임의의 코퍼스와 캐릭터로 대화 범위를 확장한다.
  • Evelyn 사례에서는 영화 대본 요약으로 캐릭터 정의를 자동 생성하고, 자체 챗봇이 요약된 대본을 검색해 세탁소 압류 위기라는 배경 사건을 대화에 활용하는 모습을 보여준다.
  • 원문 당시 character.ai는 메모리 관리 제어와 API를 제공하지 않았으며, 약 600자의 캐릭터 정의나 최대 32,000자의 추가 문맥이 어떻게 활용되는지도 사용자가 진단하기 어려웠다.
  • 캐릭터 요약, 원본 대본 검색, 요약 대본 검색을 조합한 다섯 가지 구조를 비교한다. 제공된 Thor 사례에서 캐릭터 설명만 사용한 답변은 아이들의 위치를 알지 못했고, 원본 대본 검색은 가시 우리를, 요약 대본 검색은 그림자 영역을 언급했으나 원문은 해당 답변 도중 끝난다.

🧩 주요 포인트

  1. 코퍼스에서 캐릭터 정의 자동 생성 → 수동 설정 부담을 줄이고 다양한 캐릭터에 같은 생성 방식을 적용한다.
  2. character.ai와 자체 실행의 차이 → 접근성과 오락성뿐 아니라 메모리 제어 및 배경 정보 활용의 진단 가능성이 선택 기준이 된다.
  3. 캐릭터 요약과 대본 검색의 조합 → 메모리가 대화 이력 보존을 넘어 캐릭터의 자기 인식과 답변에 포함되는 배경 정보를 구성한다.

🧠 상세 정리

1. 정적 자료를 캐릭터와의 대화로 전환

이 글은 기존 코퍼스를 바탕으로 캐릭터 챗봇을 생성하고 대화하는 data-driven-characters 저장소를 소개한다. 출발점은 인물이 남긴 글을 읽는 데서 더 나아가 그 인물에게 질문하고 답을 얻는 상호작용을 만들자는 구상이며, 이를 설명하기 위해 스티브 잡스의 1985년 발언을 인용한다. 저자는 대규모 언어 모델이 정적인 텍스트를 대화형 경험으로 바꿀 수 있다는 점에 주목하고, 실제 인물과 허구 인물을 생생한 대화 상대로 만드는 활용을 제시한다. 저장소의 기본 사용 흐름은 코퍼스를 올리고 캐릭터 이름을 지정한 뒤 대화하는 것으로, 기존 플랫폼용 정의 생성과 자체 챗봇 실행을 모두 다룬다.

2. 기존 캐릭터 모방과 검색 서비스의 한계

원문은 언어 모델에 특정 인물을 연기하도록 요청하는 방식이 해당 인물에 관한 사전학습 정보에 의존한다는 한계를 지적한다. 소크라테스 모방과 대비해 영화 에브리씽 에브리웨어 올 앳 원스의 Evelyn을 제시하며, 당시 ChatGPT-3.5와 ChatGPT-4가 이 캐릭터를 제대로 구현하지 못했다고 설명한다. 검색 기능이 있는 서비스도 같은 문제를 해결하지 못했으며, 제시된 Bard·Perplexity·You.com 사례에서는 첫 응답의 역할이 두 번째 응답까지 유지되지 않았다. 또한 Paul Graham GPT 등의 앱은 실제 글과 대화록을 검색해 답변에 근거를 제공하지만 인물을 직접 연기하지 않고 대상도 특정 인물로 제한된다고 구분한다. data-driven-characters는 이러한 제약을 넘어 사용자가 선택한 코퍼스와 인물로 캐릭터 대화를 구성하는 것을 목표로 한다.

3. 대본 요약을 이용한 캐릭터 정의 자동 생성

가장 기본적인 사용법은 영화 대본에서 character.ai에 내보낼 캐릭터 정의를 자동으로 생성하는 것이다. Evelyn 예제의 11줄 코드는 대본을 불러오고 요약한 뒤, 캐릭터 이름과 코퍼스 요약을 생성 함수에 전달해 결과를 출력하는 흐름을 보여준다. 생성 결과에는 이름, 짧은 설명, 긴 설명, 인사말이 포함되며, Evelyn의 우주 간 이동 능력과 그에 따른 위험, 다중우주를 구하려는 활동, 친절함에 관한 배움 등이 반영된다. 이 과정은 사용자가 캐릭터 설정을 일일이 작성하는 부담을 줄이기 위한 데이터 기반 접근으로 제시된다. 만들어진 정의는 character.ai로 옮겨 사용할 수 있으며, 원문은 실제로 내보낸 Evelyn 캐릭터의 대화 링크도 제공한다.

4. 호스팅 플랫폼의 편의와 메모리 제어의 제약

character.ai의 장점은 여러 캐릭터 챗봇을 무료로 이용할 수 있는 생태계를 제공한다는 점이다. 그러나 원문은 약 600자의 캐릭터 정의만으로는 배경 이야기를 충분히 전달하기 어렵고, 챗봇이 영화 대본의 구체적인 사건까지 참조하려면 더 많은 정보가 필요하다고 설명한다. 최대 32,000자의 추가 문맥을 넣을 수 있지만 플랫폼이 권장하는 예시 대화 형식은 준비가 번거롭고, 대본을 그대로 넣더라도 그 정보가 어떻게 사용되거나 관리되는지는 사용자가 제어할 수 없다. 캐릭터가 배경 설정에서 벗어난 내용을 생성했을 때 그 원인을 살펴볼 진단 도구가 없다는 점도 제약으로 제시된다. 이 비교를 통해 원문은 접근성과 자유로운 오락을 중시하는 경우와 챗봇 설계 제어를 중시하는 경우의 선택 기준을 구분한다.

5. 자체 실행과 Evelyn 대화의 근거 확인

data-driven-characters는 LangChain의 추상화를 이용해 사용자가 자신의 코퍼스를 조건으로 챗봇을 생성하고 실행하며 디버깅할 수 있게 한다. 실행 방식에는 명령줄과 Streamlit 인터페이스가 있으며, 브라우저에서 독립적인 Streamlit 앱을 제공하는 방법도 포함된다. 소개된 화면에서는 왼쪽에서 코퍼스와 캐릭터 이름 및 근거 활용 방식을 선택하고, 가운데에서 대화하며, 디버깅 정보로 답변에 쓰인 자료를 확인한다. Evelyn 예제는 LangChain의 refine 요약 체인으로 만든 대본 요약을 검색하고, 대화 중 세탁소 압류 위기를 배경 사건으로 언급한다. 원문은 이를 대화에 나온 개념을 따라가는 character.ai의 응답과 비교하면서, 자체 실행에서는 배경 정보가 어떻게 쓰였는지 확인할 수 있다는 차이를 강조한다.

6. 대화 이력과 구별되는 캐릭터 메모리

원문은 챗봇의 메모리를 이전 대화를 다시 참조하는 수단으로만 보는 관점에서 논의를 확장한다. Generative Agents 논문을 언급하며 메모리는 서로 다른 시간 범위에서 여러 목적을 수행할 수 있고, 캐릭터 챗봇에서는 자신을 어떤 존재로 이해하는지를 정의하는 역할도 한다고 설명한다. 이때 중요한 대상은 현재 대화에서 주고받은 발언뿐 아니라 캐릭터가 겪은 사건과 배경 이야기를 어떤 형태로 제공하느냐이다. 저장소는 캐릭터 요약, 원본 대본 검색, 요약된 대본 검색이라는 세 가지 정보 제공 도구를 구현한다. 이러한 배경 메모리는 각 챗봇에 별도로 갖춰진 대화 버퍼와 목적이 다르며, 원문은 이 구분을 캐릭터의 자기 인식을 비교하는 출발점으로 삼는다.

7. 세 가지 도구를 조합한 다섯 가지 구조

원문이 제시하는 비교 대상은 세 가지 정보 제공 도구를 단독으로 사용하거나 결합한 다섯 가지 챗봇 구조다. 단독 구조는 캐릭터 요약만 사용하는 방식, 원본 대본을 검색하는 방식, 요약된 대본을 검색하는 방식으로 나뉜다. 결합 구조는 캐릭터 요약에 원본 대본 검색을 더하거나, 캐릭터 요약에 요약된 대본 검색을 더하는 두 가지다. 각 구조에는 일반적인 대화 버퍼도 함께 제공되므로, 여기서 다루는 핵심 차이는 배경 이야기를 전달하는 방식에 있다. 저자는 이 다섯 가지 구조를 평가해 캐릭터 요약과 두 종류의 검색이 응답에 미치는 상대적 영향을 살펴보려 하며, 이어지는 분석에서 같은 영화 속 사건을 질문하는 사례를 제시한다.

8. Thor 사례의 응답 차이와 제공 자료의 범위

분석은 영화 토르: 러브 앤 썬더에서 Gorr가 아이들을 숨긴 장소를 Thor에게 묻는 질문으로 시작한다. 원문이 제시한 사건의 배경은 아이들이 그림자 영역 안의 가시가 있는 우리에 갇혔다는 것으로, 장소와 구체적인 감금 형태가 함께 포함된다. 캐릭터 설명만 사용한 응답은 Gorr를 적으로 인식하지만 아이들이 어디에 숨겨졌는지는 모른다고 답하고 구조 의지를 표현한다. 원본 대본 검색 응답은 가시로 된 우리를 언급하며, 요약된 대본 검색 응답은 그림자 영역이라는 장소를 언급한다. 이 사례는 제공된 배경 정보의 형태에 따라 답변에 드러나는 사실이 달라지는 모습을 보여주지만, 제공 자료가 요약 대본 검색의 답변 도중 끝나므로 다섯 구조 전체의 결과나 전반적인 우열까지 확인할 수는 없다.

🧾 핵심 주장 / 시사점

  • 캐릭터의 배경 사건을 대화에 반영하려면 간단한 인물 설명 외에 코퍼스 정보를 제공하는 방식이 중요하며, Evelyn 사례는 요약 대본 검색의 활용 모습을 보여준다.
  • 메모리 제어와 디버깅 가능성은 캐릭터 응답이 배경 자료를 어떻게 활용했는지 확인하는 데 의미가 있다.
  • Thor 사례에서는 원본 대본 검색과 요약 대본 검색이 서로 다른 세부 사실을 드러내므로, 제공된 응답만으로 한 방식의 전반적인 우위를 단정할 수 없다.

✅ 액션 아이템

  • 코퍼스 기반 캐릭터 생성에 data-driven-characters의 자동 정의 생성 방식 적용 검토.
  • 접근성과 오락성, 메모리 제어 및 진단 가능성을 기준으로 character.ai와 자체 실행 방식 비교.
  • Thor 사례에서 캐릭터 요약과 대본 검색에 따른 응답 차이를 확인하고, 원문이 답변 도중 끝난 제약을 반영해 판단 범위 제한.

❓ 열린 질문

  • data-driven-characters로 대화할 캐릭터와 기반 코퍼스는 무엇인가?
  • character.ai의 접근성과 오락성, 자체 실행의 메모리 제어 및 진단 가능성 중 무엇을 우선할 것인가?
  • Thor 사례에서 원본 대본 검색이 언급한 가시 우리와 요약 대본 검색이 언급한 그림자 영역은 각각 어떤 배경 정보를 전달하는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.