
PIPPA是基於Langchain框架的開源大語模型(LLM)聊天機器人項目。它旨在提供個性化和適應性的對話體驗。
PIPPA結合了各種功能,以增強適應過程,包括自定義聊天機器人個性,學習的攝入文檔,記住對話歷史記錄,在不同角色之間的切換以及適應用戶需求的能力。
檢索質量檢查模塊的靈感來自及時工程的Localgpt。
PIPPA項目最初是作為個人愛好,旨在探索創建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上,您可以使用自製。要安裝它們,請運行以下命令:
brew install ffmpeg brew install portaudio
env_sample為.env文件,並添加您的API鍵:請注意,hugging_face_api_key供將來使用。
OPENAI_API_KEY=
XI_API_KEY=
HUGGING_FACE_API_KEY=
SERPAPI_API_KEY=另外,您可以在終端中導出這些環境變量。
copy characters_samply.py to characters.py並編輯文件以自定義您的AI名稱和個性。
將settings_private_sample.py複製到settings_private.py 。 settings_sample.py to settings.py並編輯文件以自定義您的設置。
在settings.py中選擇LLMS模型:py文件:
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型號以獲得更好的體驗,但請注意,它價格昂貴,僅用於預付費OpenAI帳戶。
settings_private.py中找到的一些敏感或用戶特定的設置,例如zep vector Store Server或Audio Server URL。 ZEP_API_URL = "http://localhost:8000"
DEFAULT_MEMORY_TYPE = "Summary Buffer"
AUDIO_SERVER_URL = "http://localhost:5000" 默認情況下,Langchain的“摘要緩衝區”內存用於保留對話上下文。
PIPPA支持六種類型的記憶:
強烈建議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.py如果您有Elevenlabs 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 。
PROMPT_KEYWORD_PREFIX_SYSTEM :用於臨時系統消息(默認:“系統:”)PROMPT_KEYWORD_PREFIX_CI :用於更換自定義說明(默認:“ CI:”)PROMPT_KEYWORD_PREFIX_QA :用於基於docs文件夾中的文檔檢索QA(默認:“ QA:”)PROMPT_KEYWORD_PREFIX_GOOGLE :用於搜索給定信息的網絡(默認:“ Google:”)PROMPT_KEYWORD_PREFIX_WIKI :用於搜索wikipedia(默認值:“ wiki:”)PROMPT_KEYWORD_PREFIX_MATH :用於數學查詢(默認值:“ MATH:”)PROMPT_KEYWORD_PREFIX_MIDJOURNEY :用於生成Midjourney提示(默認值:“ Midjourney:”) 默認情況下啟用了流。要禁用它,請按以下方式修改settings.py文件:
STREAMING_ENABLED = True啟用流媒體時,成本是基於OpenAI文檔的近似值。為了獲得確切的成本,您需要禁用流媒體。
請注意,成本計算不包括輔助GPT模型所產生的其他費用,例如用於摘要和質量檢查的費用。
在settings.py中設置以下常數。py:
DEFAULT_GPT_AGENT_HELPER_MODEL = "gpt-4" MAX_AGENTS_ITERATIONS = 8迭代次數確定代理將運行多少次。較高的迭代通常會導致更準確的答案,但也消耗了更多的令牌。
請注意,Google搜索代理可能需要執行多個查詢才能獲得最佳答案。
例如,如果您問“誰在韓國,美國和日本中最古老?”,代理商可能需要至少3-4次查詢才能獲得最終答案。
同一模型對同一查詢的響應可能有所不同。甚至“ GPT-4”並不總是表現最好,但強烈推薦。實驗不同的模型。
請注意,即使在Langchain水平上,也是高度實驗性的。它可能無法正常工作。
根據您的提示技巧,這是一種或失敗的情況。您需要一個SERPAPI API密鑰來使用Google搜索功能:https://serpapi.com。提供的最終答案是主要模型的中間提示。
代理商首先嘗試為給定查詢找到相關的Wikipedia頁面。如果發現,它將返回頁面的摘要,並在摘要中搜索特定術語。
LLM以數學的熟練程度而聞名。數學代理為高度複雜的數學問題提供了準確的答案。
要管理矢量數據庫,請運行vectordb.py腳本。
python vectordb.py您有以下選項:
settings.CHROMA_DB_FOLDER中創建一個新的矢量數據庫。CHROMA_DB_FOLDER文件夾,帶有一個名為settings.VECTORDB_COLLECTION的集合。settings.CONVERSATION_SAVE_FOLDER文件夾中嵌入對話到矢量數據庫,以充當長期內存。請注意,當您選擇(E)MBED對話選項時,僅現有的導出對話*.json將嵌入到矢量數據庫中,不包括snapshot.json 。
如果運行應用程序時遇到錯誤,請嘗試以下步驟:
pip install --upgrade charset_normalizer
pip install --upgrade openai
pip install --upgrade langchain
PIPPA在Apache 2.0許可下發布。為個人或商業目的,隨時使用,修改和分發代碼。