
Pippaは、Langchainフレームワークに基づいたオープンソースの大手言語モデル(LLM)チャットボットプロジェクトです。パーソナライズされた適応的な会話エクスペリエンスを提供することを目指しています。
Pippaには、チャットボットの性格をカスタマイズする機能、学習のためのドキュメントの摂取、会話の履歴を覚え、異なるキャラクターを切り替え、ユーザーのニーズに適応する機能など、さまざまな機能を組み込んで適応プロセスを強化します。
検索QAモジュールは、迅速なエンジニアリングによりLocalgptに触発されました。
ピッパプロジェクトは、AI娘のキャラクターを作成する可能性を探るための個人的な趣味として始まりました。まだ初期段階にありますが、プロジェクトは新しい機能と改善により定期的に更新されます。 Pippaのデフォルトの役割は、システムメッセージの「システム」、「Pippa」は思いやりのある娘のキャラクター、「Bundy」です。
TTS/STTエンジンを使用する場合、PippaはElevenLabs APIを使用します。無料アカウントにサインアップできます:https://elevenlabs.io。
より良い体験のために、キャラクターにユニークな声を割り当ててください。
Python 3.10でテストしました。
Pippaをインストールするには、次の手順に従ってください。
git clone https://github.com/neobundy/pippaGPT.git cd pippaGPT pip install -r requirements.txt注:エラーが発生した場合は、
ffmpegやportaudioなどの追加の依存関係をインストールする必要がある場合があります。 MacOSでは、Homebrewを使用できます。それらをインストールするには、次のコマンドを実行します。
brew install ffmpeg brew install portaudio
.envファイルにenv_sampleを作成またはコピーし、APIキーを追加します。hugging_face_api_keyは将来使用するためのものであることに注意してください。
OPENAI_API_KEY=
XI_API_KEY=
HUGGING_FACE_API_KEY=
SERPAPI_API_KEY=または、これらの環境変数を端末にエクスポートすることもできます。
characters_samply.pyをcharacters.pyにコピーしてファイルを編集してAIの名前と性格をカスタマイズします。
settings_private_sample.pyをsettings_private.pyにコピーします。 settings_sample.pyからsettings.pyに編集し、ファイルを編集して設定をカスタマイズします。
settings.pyファイルでLLMSモデルを選択します:
DEFAULT_GPT_MODEL = "gpt-3.5-turbo"
DEFAULT_GPT_HELPER_MODEL = "gpt-3.5-turbo-16k"
DEFAULT_GPT_QA_HELPER_MODEL = "gpt-3.5-turbo-16k"大規模なコンテキストには、より多くのトークンが必要です。ほとんどの場合、16Kトークンで十分です。
default_gpt_modelのGPT-4モデルは、より良い経験をするために強くお勧めしますが、10倍高価で、プリペイドOpenaiアカウントでのみ利用できることに注意してください。
settings_private.pyにあるいくつかの機密またはユーザー固有の設定。 ZEP_API_URL = "http://localhost:8000"
DEFAULT_MEMORY_TYPE = "Summary Buffer"
AUDIO_SERVER_URL = "http://localhost:5000" デフォルトでは、Langchainの「要約バッファ」メモリは、会話のコンテキストを保持するために使用されます。
ピッパは6種類の記憶をサポートしています:
Zepは、大きなコンテキストに強くお勧めします。 Dockerコンテナとしてローカルに実行できます。 settings_private.pyを編集します。
要約は、ZEPを含む概要タイプメモリが選択されたときに表示されます。要約は、要約GTPヘルパーモデルによって生成されます。
Zepがインデックスを作成して要約を生成するには時間がかかることに注意してください。準備ができていないとき、「要約...我慢してください。」メッセージが表示されます。
ZEP_API_URL = "http://localhost:8000" ZEPサーバーは、任意のホストまたはポートで実行できます。別のホストで実行する場合は、 settings_private.pyのZEP_API_URL変数を必ず更新してください。
https://www.getzep.com/にアクセスして、Zepを実行する方法を学びます。
Pippaアプリを実行するには、次のコマンドを使用します。
streamlit run main.pyアプリは、ポート5000に耳を傾けるオーディオサーバーを自動的に起動します。必要に応じて、 audio_server.pyを実行してオーディオサーバーを手動で実行できます。
Pippaが学習するために独自のドキュメントを摂取するには、次の手順に従ってください。
docsフォルダーに配置します。vectordb.pyスクリプトを実行して、Vectorデータベースを作成します。 python vectordb.pyElevenLabs APIキーがある場合は、Pippaを使用してTTS(テキストからスピーチ)エンジンを使用できます。
STT(音声からテキスト)は、OpenaiのWhisper-1モデルによって処理されます。
次の手順に従ってください:
tts.pyスクリプトを実行して、ElevenLabsアカウントから利用可能なボイス名とIDを取得します。 python tts.py適切な音声IDを使用して、 settings_private.pyの次の変数を更新します。
VOICE_ID_AI = ""
VOICE_ID_SYSTEM = ""
VOICE_ID_HUMAN = ""audio_server.pyを実行して、手動でサーバーを実行することもできます。settings.pyファイルを編集して、Pippaで使用されるプロンプトキーワードプレフィックスをカスタマイズできます。
PROMPT_KEYWORD_PREFIX_SYSTEM :一時的なシステムメッセージに使用(デフォルト: "System:")PROMPT_KEYWORD_PREFIX_CI :カスタム指示の置換に使用されます(デフォルト: "CI:")PROMPT_KEYWORD_PREFIX_QA : docsフォルダーのドキュメントに基づいて取得QAに使用されます(デフォルト: "QA:")PROMPT_KEYWORD_PREFIX_GOOGLE :指定された情報のWebの検索に使用されます(デフォルト: "Google:")PROMPT_KEYWORD_PREFIX_WIKI :Wikipediaの検索に使用(デフォルト: "wiki:")PROMPT_KEYWORD_PREFIX_MATH :数学クエリに使用されます(デフォルト: "Math:")PROMPT_KEYWORD_PREFIX_MIDJOURNEY :MidJourneyプロンプトの生成に使用されます(デフォルト: "Midjourney:") ストリーミングはデフォルトで有効になります。それを無効にするには、次のようにsettings.pyファイルを変更します。
STREAMING_ENABLED = Trueストリーミングが有効になっている場合、コストはOpenaiのドキュメントに基づいた近似です。正確なコストを取得するには、ストリーミングを無効にする必要があります。
コスト計算には、要約やQAなどの補助GPTモデルが発生する他の費用は含まれていないことに注意してください。
settings.pyで次の定数を設定します:
DEFAULT_GPT_AGENT_HELPER_MODEL = "gpt-4" MAX_AGENTS_ITERATIONS = 8反復回数は、エージェントが実行される回数を決定します。一般に、より多くの反復がより正確な答えにつながりますが、より多くのトークンも消費します。
Google検索エージェントは、最良の回答を取得するために複数のクエリを実行する必要がある場合があることに注意してください。
たとえば、「韓国、米国、日本の首長の中で最も古いのは誰ですか?」と尋ねると、エージェントは最終回答を得るために少なくとも3〜4回照会する必要があります。
同じモデルが同じクエリに対して異なる反応をする場合があります。 「GPT-4」でさえ常に最高のパフォーマンスを発揮するわけではありませんが、強くお勧めします。さまざまなモデルを試してください。
Langchainレベルであっても、非常に実験的であることに注意してください。期待どおりに機能しない場合があります。
それはあなたのプロンプトスキルに応じて、ヒットまたはミスの状況です。 Google検索機能:https://serpapi.comを使用するには、SERPAPI APIキーが必要です。提供された最終回答は、メインモデルの中間プロンプトとして機能します。
エージェントは、最初に指定されたクエリの関連するウィキペディアページを見つけようとします。見つかった場合、ページの概要を返し、概要内で特定の用語を検索します。
LLMSは数学の習熟度で知られていません。数学エージェントは、非常に複雑な数学の問題に対する正確な回答を提供します。
Vectorデータベースを管理するには、 vectordb.pyスクリプトを実行します。
python vectordb.py次のオプションがあります。
settings.VECTORDB_COLLECTIONという名前のコレクションを備えたsettings.CHROMA_DB_FOLDERフォルダーに新しいベクトルデータベースを作成します。settings.CONVERSATION_SAVE_FOLDERフォルダーから会話をベクトルデータベースに埋め込み、長期メモリとして機能しました。 (e)MBED会話オプションを選択すると、既存のエクスポートされた会話のみが*.json snapshot.json除くVectorデータベースに埋め込まれることに注意してください。
アプリを実行するときにエラーが発生した場合は、次の手順を試してください。
pip install --upgrade charset_normalizer
pip install --upgrade openai
pip install --upgrade langchain
PippaはApache 2.0ライセンスの下でリリースされます。個人または商業目的でコードを自由に使用、変更、配布してください。