تعد حزمة ChatGPT Long Term Memory أداة قوية مصممة لتمكين مشاريعك من القدرة على التعامل مع عدد كبير من المستخدمين المتزامنين. ويحقق ذلك من خلال الدمج السلس لقاعدة معرفية واسعة النطاق والذاكرة التكيفية من خلال التقنيات المتطورة مثل GPT من OpenAI، وفهرس ناقلات اللاما، ومخزن بيانات Redis. باستخدام هذه المجموعة الشاملة من الإمكانات، يمكنك إنشاء تطبيقات قابلة للتطوير بشكل كبير توفر محادثات جذابة وذات صلة بالسياق، مما يعزز تجربة المستخدم والتفاعل بشكل عام.
قابلية التوسع : تم تصميم حزمة الذاكرة طويلة المدى ChatGPT للتعامل مع العديد من المستخدمين المتزامنين بكفاءة، مما يجعلها مناسبة للتطبيقات ذات الطلب العالي من قبل المستخدم.
قاعدة معرفية موسعة : استفد من تكامل قاعدة المعرفة التي تسمح لك بدمج البيانات الشخصية في شكل ملفات TXT. تتيح هذه الميزة للنظام تقديم استجابات ذات صلة بالسياق والمشاركة في محادثات هادفة.
الذاكرة التكيفية : تستخدم الحزمة أحدث التقنيات مثل GPT وفهرس ناقلات اللاما ومخزن بيانات Redis لضمان وجود نظام ذاكرة تكيفي. تتيح هذه الإمكانية تحسين الأداء والتفاعلات المتماسكة، مما يجعل المحادثات أكثر طبيعية وجاذبية.
التكامل المرن مع نماذج GPT : تسمح الحزمة بالتفاعل السلس مع نماذج GPT، مما يتيح لك خيار الدردشة مع نماذج GPT باستخدام ذاكرة السياق. يمكّنك هذا من التعامل مع نماذج اللغة الحديثة لمهام معالجة اللغة الأكثر تقدمًا.
سهولة الإعداد والتكوين : توفر الحزمة خطوات تثبيت بسيطة باستخدام pip
، ويمكنك إعداد بيئتك بسرعة باستخدام مفتاح API الخاص بك من OpenAI. خيارات التكوين قابلة للتخصيص، مما يسمح لك بتخصيص الحزمة لتناسب متطلبات مشروعك المحددة.
استخدام مخزن بيانات Redis : يضمن التكامل مع مخزن بيانات Redis تخزين البيانات واسترجاعها بكفاءة، مما يساهم في قابلية التوسع والاستجابة الشاملة للنظام.
تكامل واجهة برمجة التطبيقات (API) مع OpenAI : تستفيد الحزمة من واجهة برمجة التطبيقات (API) من OpenAI لتشغيل وظائفها المستندة إلى GPT. ويضمن ذلك الوصول إلى أحدث التطورات في معالجة اللغة وإمكانيات نماذج GPT.
التعلم والتحسين المستمر : باعتبارها نظامًا يعتمد على GPT، تستفيد حزمة الذاكرة طويلة المدى ChatGPT من التعلم والتحسين المستمر، والبقاء على اطلاع بأحدث التطورات في فهم اللغة وتوليدها.
تدفق المحادثة القابل للتخصيص : توفر الحزمة تدفقات محادثة قابلة للتخصيص مع القدرة على تضمين سجل الدردشة الخاص بالمستخدم وبيانات قاعدة المعرفة. وهذا يعزز الفهم السياقي وأهمية الاستجابات.
واجهات سهلة الاستخدام : تسهل مقتطفات التعليمات البرمجية والواجهات المتوفرة على المطورين دمج حزمة ذاكرة ChatGPT طويلة المدى في مشاريعهم، مما يقلل من منحنى التعلم ويبسط عملية التطوير.
إن الجمع بين هذه الميزات الرئيسية يجعل حزمة ChatGPT Long Term Memory إضافة قيمة لمشاريعك، مما يسمح لك بإنشاء تطبيقات محادثة تفاعلية وديناميكية تتمتع بقدرات معالجة لغة قوية.
للاستفادة من حزمة Chatgpt Long Term Memory في مشاريعك، اتبع الخطوات التالية:
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 لدمج بياناتك الشخصية في شكل ملفات TXT الموجودة داخل الدليل: {your_root_path}/resources/data. تأكد من المعالجة الصحيحة لدليل الموارد/البيانات للوصول السلس إلى البيانات المخزنة.
# 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 )