ChatGPT Long Term Memory パッケージは、プロジェクトに多数の同時ユーザーを処理できる機能を提供するように設計された強力なツールです。これは、OpenAI の GPT、ラマ ベクトル インデックス、Redis データストアなどの最先端のテクノロジーを通じて、広範なナレッジ ベースとアダプティブ メモリをシームレスに統合することで実現されます。この包括的な機能セットを使用すると、コンテキストに関連した魅力的な会話を提供し、全体的なユーザー エクスペリエンスと対話を強化する、拡張性の高いアプリケーションを作成できます。
スケーラビリティ: ChatGPT Long Term Memory パッケージは、多数の同時ユーザーを効率的に処理できるように設計されており、ユーザーの要求が高いアプリケーションに適しています。
広範なナレッジ ベース: ナレッジ ベースの統合により、パーソナライズされたデータを TXT ファイルの形式で組み込むことができます。この機能により、システムは状況に応じて適切な応答を提供し、有意義な会話を行うことができます。
アダプティブ メモリ: このパッケージは、GPT、ラマ ベクトル インデックス、Redis データストアなどの最先端のテクノロジを利用して、アダプティブ メモリ システムを保証します。この機能により、パフォーマンスの向上と一貫した対話が可能になり、会話がより自然で魅力的なものになります。
GPT モデルとの柔軟な統合: このパッケージにより、GPT モデルとのシームレスな対話が可能になり、コンテキスト メモリを使用して GPT モデルとチャットするオプションが提供されます。これにより、最先端の言語モデルを使用して、より高度な言語処理タスクを実行できるようになります。
簡単なセットアップと構成: このパッケージにはpip
使用した簡単なインストール手順が用意されており、OpenAI からの API キーを使用して環境を迅速にセットアップできます。構成オプションはカスタマイズ可能で、特定のプロジェクト要件に合わせてパッケージを調整できます。
Redis データストアの利用: Redis データストアとの統合により、効率的なデータの保存と取得が保証され、システム全体のスケーラビリティと応答性に貢献します。
OpenAI との API 統合: このパッケージは OpenAI の API を利用して GPT ベースの機能を強化します。これにより、言語処理における最新の進歩と GPT モデルの機能へのアクセスが保証されます。
継続的な学習と改善: GPT ベースのシステムとして、ChatGPT 長期記憶パッケージは継続的な学習と改善の恩恵を受け、言語の理解と生成における最新の開発を常に最新の状態に保ちます。
カスタマイズ可能な会話フロー: このパッケージは、ユーザーのチャット履歴やナレッジ ベース データを含める機能を備えたカスタマイズ可能な会話フローを提供します。これにより、応答の文脈の理解と関連性が高まります。
使いやすいインターフェイス: 提供されたコード スニペットとインターフェイスにより、開発者は ChatGPT Long Term Memory パッケージをプロジェクトに簡単に統合でき、学習曲線を最小限に抑え、開発プロセスを合理化します。
これらの主要な機能を組み合わせることで、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 を設定して、ディレクトリ {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 )