ChatGPT 장기 메모리 패키지는 많은 수의 동시 사용자를 처리할 수 있는 기능으로 프로젝트를 강화하도록 설계된 강력한 도구입니다. OpenAI의 GPT, 라마 벡터 인덱스 및 Redis 데이터 저장소와 같은 최첨단 기술을 통해 광범위한 지식 기반과 적응형 메모리를 원활하게 통합하여 이를 달성합니다. 이러한 포괄적인 기능 세트를 사용하면 상황에 맞게 관련성이 높고 매력적인 대화를 제공하여 전반적인 사용자 경험과 상호 작용을 향상시키는 확장성이 뛰어난 애플리케이션을 만들 수 있습니다.
확장성 : ChatGPT 장기 메모리 패키지는 수많은 동시 사용자를 효율적으로 처리하도록 설계되어 사용자 수요가 높은 애플리케이션에 적합합니다.
광범위한 기술 자료 : 개인화된 데이터를 TXT 파일 형식으로 통합할 수 있는 기술 자료 통합의 이점을 활용하세요. 이 기능을 통해 시스템은 상황에 맞는 응답을 제공하고 의미 있는 대화에 참여할 수 있습니다.
적응형 메모리 : 이 패키지는 GPT, 라마 벡터 인덱스, Redis 데이터 저장소와 같은 최첨단 기술을 활용하여 적응형 메모리 시스템을 보장합니다. 이 기능을 통해 성능이 향상되고 일관된 상호 작용이 가능해 대화가 더욱 자연스럽고 매력적으로 만들어집니다.
GPT 모델과의 유연한 통합 : 이 패키지를 사용하면 GPT 모델과 원활하게 상호 작용할 수 있으므로 컨텍스트 메모리를 사용하여 GPT 모델과 채팅할 수 있는 옵션이 제공됩니다. 이를 통해 고급 언어 처리 작업을 위해 최첨단 언어 모델을 사용할 수 있습니다.
쉬운 설정 및 구성 : 이 패키지는 pip
사용하여 간단한 설치 단계를 제공하며 OpenAI의 API 키를 사용하여 환경을 빠르게 설정할 수 있습니다. 구성 옵션은 사용자 정의가 가능하므로 특정 프로젝트 요구 사항에 맞게 패키지를 맞춤화할 수 있습니다.
Redis 데이터 저장소 활용 : Redis 데이터 저장소와의 통합으로 효율적인 데이터 저장 및 검색이 보장되어 시스템의 전반적인 확장성과 응답성에 기여합니다.
OpenAI와 API 통합 : 이 패키지는 OpenAI의 API를 활용하여 GPT 기반 기능을 강화합니다. 이를 통해 언어 처리 및 GPT 모델 기능의 최신 발전에 대한 액세스가 보장됩니다.
지속적인 학습 및 개선 : GPT 기반 시스템인 ChatGPT 장기 기억 패키지는 지속적인 학습 및 개선의 이점을 누리며 언어 이해 및 생성의 최신 개발을 최신 상태로 유지합니다.
사용자 정의 가능한 대화 흐름 : 이 패키지는 사용자의 채팅 기록 및 지식 기반 데이터를 포함하는 기능과 함께 사용자 정의 가능한 대화 흐름을 제공합니다. 이를 통해 상황에 따른 이해와 응답의 관련성이 향상됩니다.
사용하기 쉬운 인터페이스 : 제공된 코드 조각과 인터페이스를 통해 개발자는 ChatGPT 장기 메모리 패키지를 프로젝트에 쉽게 통합하여 학습 곡선을 최소화하고 개발 프로세스를 간소화할 수 있습니다.
이러한 주요 기능의 조합으로 ChatGPT 장기 메모리 패키지는 프로젝트에 귀중한 추가 기능을 제공하여 강력한 언어 처리 기능을 갖춘 대화형 및 동적 대화형 응용 프로그램을 만들 수 있습니다.
프로젝트에서 Chatgpt 장기 메모리 패키지를 활용하려면 다음 단계를 따르세요.
pip install chatgpt_long_term_memory
export OPENAI_API_kEY=sk-******
Redis Docker 이미지를 가져와서 실행합니다.
docker pull redis
docker network create --subnet=172.0.0.0/16 mynet123
docker run --name redis-db -d --net mynet123 --ip 172.0.0.22 -p 6379:6379 -p 8001:8001 redis:latest
Knowledge_base=True를 설정하여 인덱스 메모리를 활용하여 {your_root_path}/resources/data 디렉터리에 있는 TXT 파일 형식으로 개인화된 데이터를 통합할 수 있습니다. 저장된 데이터에 원활하게 액세스하려면 리소스/데이터 디렉터리의 적절한 주소 지정을 확인하세요.
# example/usage_index_memory.py
from utils import get_project_root
from chatgpt_long_term_memory . conversation import ChatGPTClient
from chatgpt_long_term_memory . llama_index_helpers import ( IndexConfig ,
RetrieversConfig )
from chatgpt_long_term_memory . memory import ChatMemoryConfig
# Get project's root path
root_path = get_project_root ()
"""
First:
Initialize llama indexes config to create a index from knowledge base and user's chat history.
The root_path specifies the directory where the index will be stored.
The knowledge_base flag specifies whether to index the knowledge base.
The model_name specifies the name of the language model to use for indexing.
The temperature parameter controls the randomness of the output.
The context_window parameter specifies the size of the context window to use for indexing.
The num_outputs parameter specifies the number of output tokens to generate for each input token.
The max_chunk_overlap parameter specifies the maximum overlap between chunks.
The chunk_size_limit parameter specifies the maximum size of a chunk.
"""
doc_indexer_config = IndexConfig (
root_path = f" { root_path } /example" ,
knowledge_base = True ,
model_name = "gpt-3.5-turbo" ,
temperature = 0 ,
context_window = 4096 ,
num_outputs = 700 ,
max_chunk_overlap = 0.5 ,
chunk_size_limit = 600
)
"""
Second:
# Initialize retrievers config to configure the retrievers class.
# The `top_k` parameter specifies the number of top-k documents to retrieve for each query.
# The `max_tokens` parameter specifies the maximum number of tokens to return for each document.
"""
retrievers_config = RetrieversConfig (
top_k = 7 ,
max_tokens = 1000
)
"""
Then:
Initialize chat memory config to configure the chat memory class.
The `redis_host` parameter specifies the hostname of the Redis server.
The `redis_port` parameter specifies the port of the Redis server.
"""
chat_memory_config = ChatMemoryConfig (
redis_host = "172.0.0.22" ,
redis_port = 6379
)
"""
Create a `ChatGPTClient` object to start the conversation.
The `doc_indexer_config` parameter specifies the configuration for the document indexer.
The `retrievers_config` parameter specifies the configuration for the retrievers.
The `chat_memory_config` parameter specifies the configuration for the chat memory.
"""
chatgpt_client = ChatGPTClient (
doc_indexer_config = doc_indexer_config ,
retrievers_config = retrievers_config ,
chat_memory_config = chat_memory_config
)
# Start a conversation with the user.
user_id = 1
while True :
# Get the user's input.
user_input = input ( "User Input:" )
# If the user enters "q", break out of the loop.
if user_input == "q" :
break
# Get the response from the chatbot.
index , response = chatgpt_client . converse ( user_input , user_id = user_id )
# Print the response to the user.
print ( response )
이 시나리오에서는 자체 데이터베이스를 사용할 수 없지만 GPT 모델과 상호 작용하고 컨텍스트 메모리를 사용할 수 있습니다.
# example/usage_context_memory.py
from utils import get_project_root
from chatgpt_long_term_memory . conversation import ChatbotClient
from chatgpt_long_term_memory . llama_index_helpers import ( IndexConfig ,
RetrieversConfig )
from chatgpt_long_term_memory . memory import ChatMemoryConfig
from chatgpt_long_term_memory . openai_engine import OpenAIChatConfig
# Get project's root path
root_path = get_project_root ()
"""
First:
Initialize llama indexes config to create a index from knowledge base and user's chat history.
The root_path specifies the directory where the index will be stored.
The knowledge_base flag specifies whether to index the knowledge base.
The model_name specifies the name of the language model to use for indexing.
The temperature parameter controls the randomness of the output.
The context_window parameter specifies the size of the context window to use for indexing.
The num_outputs parameter specifies the number of output tokens to generate for each input token.
The max_chunk_overlap parameter specifies the maximum overlap between chunks.
The chunk_size_limit parameter specifies the maximum size of a chunk.
"""
doc_indexer_config = IndexConfig (
root_path = f" { root_path } /example" ,
knowledge_base = True ,
model_name = "gpt-3.5-turbo" ,
temperature = 0 ,
context_window = 4096 ,
num_outputs = 700 ,
max_chunk_overlap = 0.5 ,
chunk_size_limit = 600
)
"""
Second:
# Initialize retrievers config to configure the retrievers class.
# The `top_k` parameter specifies the number of top-k documents to retrieve for each query.
# The `max_tokens` parameter specifies the maximum number of tokens to return for each document.
"""
retrievers_config = RetrieversConfig (
top_k = 7 ,
max_tokens = 1000
)
"""
Then:
Initialize chat memory config to configure the chat memory class.
The `redis_host` parameter specifies the hostname of the Redis server.
The `redis_port` parameter specifies the port of the Redis server.
"""
chat_memory_config = ChatMemoryConfig (
redis_host = "172.0.0.22" ,
redis_port = 6379
)
# Method 2: chat with gpt models, use context memory in this scenario you can't use your own db
openai_chatbot_config = OpenAIChatConfig (
model_name = "gpt-4" ,
max_tokens = 1000 ,
temperature = 0 ,
top_p = 1 ,
presence_penalty = 0 ,
frequency_penalty = 0 ,
# keep in mind if you change prompt, consider history and human input
prompt = """Assistant is a large language model trained by OpenAI.
Assistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.
Assistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.
Overall, Assistant is a powerful tool that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist.
History: {}
Human: {}
Assistant:"""
)
# Initialize the chatbot client.
chat_app = ChatbotClient (
doc_indexer_config = doc_indexer_config ,
retrievers_config = retrievers_config ,
chat_memory_config = chat_memory_config ,
openai_chatbot_config = openai_chatbot_config
)
# Start a conversation with the user.
user_id = 2
while True :
# Get the user's input.
user_input = input ( "User Input:" )
# If the user enters "q", break out of the loop.
if user_input == "q" :
break
# Get the response from the chatbot.
index , response = chat_app . converse ( user_input , user_id = user_id )
# Print the response to the user.
print ( response )