
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许可下发布。为个人或商业目的,随时使用,修改和分发代码。