이 도구들로 ChatGPT 메모리 기능 구현하기
Published on
인공지능 분야에서 지난 대화 내용을 기억하고 학습하는 능력은 게임 체인저입니다. 특히, ChatGPT와 같은 인공지능 챗봇에서는 메모리가 상호작용의 품질을 결정하는 중요한 역할을 합니다. ChatGPT의 프레임워크에 장기적 메모리를 도입함으로써 대화 능력이 확장되었을 뿐만 아니라 사용자와의 상호작용 방식도 바꿔놓았습니다. 이러한 새로운 기능은 "ChatGPT 메모리"라 불리며, 인공지능이 보다 개인화되고 문맥에 따라 정확한 응답을 제공할 수 있도록 해 주었습니다.
ChatGPT 메모리는 고급 언어 모델과 혁신적인 메모리 관리 기술을 결합한 강력한 도구입니다. ChatGPT의 놀라운 능력을 이미 지니고 있지만, 이를 더욱 발전시켜 높은 수준으로 이끌어내는 것입니다. 장기적 메모리를 사용함으로써 ChatGPT는 이전 대화 내용의 세부 정보를 기억하고 사용자 선호도에 적응하며, 단순히 관련성 뿐만 아니라 문맥적으로도 정확한 응답을 제공합니다. 이처럼 신기술의 등장으로 AI 챗봇의 미래는 더욱 지능적이고 더욱 재미있고 인간같은 상호작용을 예고하고 있습니다.
자세한 내용은 이제 ChatGPT 메모리가 무엇인지 알아보도록 하겠습니다:
ChatGPT 메모리란 무엇이며, 그것이 필요한 이유
언어 모델의 이전 대화에서 이해하고 응답하는 데 사용할 수 있는 문맥 가중치는 높성능 LLM 기반 응용 프로그램 생성에 있어서 핵심적인 요소입니다. 이는 고문으로부터 받을 수 있는 실용적인 조언을 제공하는 고문이 읽은 서적의 수와 유사합니다. 그러나, 서재를 확보하더라도 그것은 무한하지 않습니다.
ChatGPT나 GPT-4와 같은 AI 모델에서 문맥 가중치의 한계를 우회하기 위해 모델에 외부 메모리 소스를 연결할 수 있습니다. 이로 인해 변압기 기반 LLM 모델을 사용하고 있는 고급 애플리케이션의 효과적인 문맥 가중치가 크게 향상됩니다.
chatgpt-memory 프로젝트 (opens in a new tab)는 이러한 접근 방식의 훌륭한 예시를 제공합니다. Redis의 벡터 데이터베이스를 사용하여 지능적인 메모리 관리 방법을 구현하며, ChatGPT는 세션당 과거 사용자 상호 작용을 캐시하는 기능을 제공하고 현재 문맥을 기반으로 적응형 프롬프트 생성 메커니즘을 제공할 수 있습니다.
GPT-4의 등장으로 ChatGPT의 문맥 가중치는 4,096토큰에서 32,768토큰으로 증가했습니다. ChatGPT나 GPT-4의 OpenAI API 사용 비용은 대화에서 사용된 토큰 수에 따라 계산됩니다. 따라서 보다 긴 문서를 처리하는 데 더 많은 토큰을 사용할 것인지, 상대적으로 작은 프롬프트를 사용하여 비용을 최소화할 것인지에 대한 트레이드오프가 필요합니다.
그러나 정말 강력한 응용 프로그램은 많은 문맥 가중치를 필요로 합니다. 이를 해결하려면 다음과 같은 솔루션을 사용해야합니다.
MemoryGPT를 사용한 ChatGPT 메모리 생성
MemoryGPT는 장기적 메모리를 갖춘 ChatGPT를 만드는 것을 목표로 하는 프로젝트입니다. 이는 단순히 현재 메시지와 관련된 이전 k개 메시지만 전체 기록에서 추출함으로써 현재 프롬프트에 더 많은 정보를 추가하고 토큰 길이를 무한정 확장할 수 있도록 합니다. MemoryGPT는 휴리스틱 버퍼 메모리 유형의 글자 수 제한 제약을 극복하는 적응형 메모리를 제공합니다.
Redis와 MemoryGPT를 사용한 ChatGPT 메모리 구현
GitHub의 chatgpt-memory 프로젝트 (opens in a new tab)는 Redis를 사용하여 ChatGPT의 장기적 메모리를 구현하는 방법에 대해 자세한 가이드를 제공합니다. 아래는 단순화된 단계입니다.
-
환경 설정: OpenAI API 키를 가져와 Redis 데이터 저장소를 설정해야합니다. 무료 Redis 데이터 저장소를 여기 (opens in a new tab)에서 만들 수 있습니다.
-
의존성 설치: 이 프로젝트는 파이썬 패키지 관리자인 Poetry를 사용합니다. 필요한 의존성은
poetry install
을 사용하여 설치할 수 있습니다. -
FastAPI 웹서버 시작:
poetry run uvicorn rest_api:app --host 0.0.0.0 --port 8000
를 사용하여 웹서버를 시작할 수 있습니다. -
UI 실행:
poetry run streamlit run ui.py
를 사용하여 UI를 실행할 수 있습니다. -
터미널에서 사용: 라이브러리는 매우 모듈화되어 있으
필요한 모듈 가져 오기
from chatgpt_memory.environment import OPENAI_API_KEY, REDIS_HOST, REDIS_PASSWORD, REDIS_PORT from chatgpt_memory.datastore import RedisDataStoreConfig, RedisDataStore from chatgpt_memory.llm_client import ChatGPTClient, ChatGPTConfig, EmbeddingConfig, EmbeddingClient from chatgpt_memory.memory import MemoryManager
OpenAI API 키로 EmbeddingConfig 객체 인스턴스화
embedding_config = EmbeddingConfig(api_key=OPENAI_API_KEY)
EmbeddingConfig 객체로 EmbeddingClient 객체 인스턴스화
embed_client = EmbeddingClient(config=embedding_config)
Redis 연결 세부 정보로 RedisDataStoreConfig 객체 인스턴스화
redis_datastore_config = RedisDataStoreConfig( host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD, )
RedisDataStoreConfig 객체로 RedisDataStore 객체 인스턴스화
redis_datastore = RedisDataStore(config=redis_datastore_config)
RedisDataStore 객체와 EmbeddingClient 객체를 사용하여 MemoryManager 객체 인스턴스화
memory_manager = MemoryManager(datastore=redis_datastore, embed_client=embed_client, topk=1)
OpenAI API 키 및 verbose=True로 ChatGPTConfig 객체 인스턴스화
chat_gpt_config = ChatGPTConfig(api_key=OPENAI_API_KEY, verbose=True)
ChatGPTConfig 객체와 MemoryManager 객체를 사용하여 ChatGPTClient 객체 인스턴스화
chat_gpt_client = ChatGPTClient( config=chat_gpt_config, memory_manager=memory_manager )
conversation_id를 None으로 초기화
conversation_id = None
봇 대화 루프 시작
while True:
사용자 입력 받기
user_message = input("\n 메시지를 입력하세요: ")
ChatGPTClient 객체를 사용하여 응답 생성
response = chat_gpt_client.converse(message=user_message, conversation_id=conversation_id)
응답에서 conversation_id로 conversation_id 업데이트
conversation_id = response.conversation_id
챗봇이 생성 한 응답 인쇄
print(response.chat_gpt_answer) MemoryGPT (opens in a new tab)은 ChatGPT에서 장기 기억 개념을 실용적으로 적용한 응용 프로그램입니다. 이는 이전 대화에서 세부 정보를 기억하고 사용자 선호도에 따라 자신의 행동을 조정할 수 있도록 설계되었습니다. MemoryGPT는 코칭 에이전트, 조언과 지원을 위한 친구, 생산성 향상, 최신 기술을 탐색하고 그 한계를 넘어서기를 원하는 호기심 많은 사람들에게 특히 유용합니다.
FAQ
장기 기억은 ChatGPT의 능력을 어떻게 향상시키나요?
장기 기억을 활용하면 ChatGPT는 이전 대화의 문맥을 기억하며 개인 맞춤형 및 관련성 높은 응답을 제공할 수 있습니다. 이는 인공 지능 모델의 문맥 길이 제한을 극복하여 대화를 더 흥미롭고 의미있게 만듭니다.
Redis는 ChatGPT의 장기 기억 구현에서 어떤 역할을 하나요?
Redis는 각 세션별로 기존 사용자 상호작용을 저장하는 벡터 데이터베이스로 사용됩니다. 이를 통해 ChatGPT는 이러한 상호작용을 캐시하고 현재 문맥을 기반으로 적응형 프롬프트를 생성할 수 있는 지능적인 메모리 관리 방법을 제공합니다.
대화 기록의 벡터화가 ChatGPT의 문맥 제공에 어떻게 도움이 되나요?
대화 기록의 벡터화는 텍스트 데이터를 인공 지능 모델이 이해할 수 있는 형식으로 변환합니다. 이러한 벡터는 대화 기록의 의미론적 의미를 나타내며 모델에 관련 문맥을 제공하여 적절한 응답을 생성하는 능력을 향상시킵니다.