Nucleo AI Alpha
一款混合了AI功能和传统个人生产力的AI助手应用。AI可以在后台工作,回答多个聊天、处理任务和处理流/提要条目。
以下是演示视频(使用OpenHermes Mistral 7b和llama.cpp录制):
https://github.com/AndrewVeee/nucleo-ai/assets/153542699/60526628-62f5-462f-a6a4-affdbdb6d7c1
警告:
这是"alpha"版软件。它是新的,存在错误和问题。
某些功能(特别是助手模式)可能会使用大量令牌。在使用付费API时请注意这一点。这是一个早期版本,存在错误,需要改进。
安装和设置
你应该安装了Python 3和git。我试图保持应用轻量级,但RAG需要下载一些大文件(嵌入和交叉编码器约850MB)。
该应用不包含LLM引擎。你可以将其连接到任何兼容openai的端点,如llama.cpp、带--api标志的oobabooga以及较新版本的ollama。我经常使用llama-cpp-python和together ai。
步骤1
如果你使用Windows,请参阅此安装说明。
$ git clone git@github.com:AndrewVeee/nucleo-ai.git
# 创建python虚拟环境,安装仅CPU版torch和requirements.txt中的依赖。复制配置文件。
$ ./setup.sh
步骤2
编辑./data/config.toml
中的配置文件
找到[llm]
块并设置你的openai_base_url
(类似http://localhost:5000/v1)和
如果需要的话设置openai_api_key
。如果你想要求认证来连接Nucleo,也可以在顶部设置secret_key
。
步骤3
运行./start.sh
启动应用。首次运行时会花一些时间下载用于RAG支持的SentenceTransformers模型。
应用启动后,你会看到类似这样的一行:
* Running on http://127.0.0.1:4742
在浏览器中打开该链接即可开始使用Nucleo!
步骤4
如果有时间,请在r/nucleoai分享你的初步反馈 - 这将有助于改进应用!
功能
常规聊天
Nucleo支持常规聊天。你可以创建多个聊天,并在创建时选择保存或临时(一次性)聊天。
助手
助手聊天模式让AI根据请求制定任务列表并执行。它可以执行网络搜索、添加待办事项、创建文档和回复。
这仍处于早期阶段,大多数模型会犯错。Mixtral表现相当不错。我个人在测试时使用OpenHermes Mistral 7b,除非你非常小心措辞,否则成功率约为50%。
研究员
在流中,你可以从"添加到你的流..."中点击"研究"选项,让AI深入研究一个主题。
它会生成一个初始研究主题列表,并允许你配置最大深度、最长研究时间、是否应该搜索网络等选项。
研究员会生成一个包含该主题研究内容的文档,底部包括使用的链接。
文档(RAG)
你可以在文档标签中上传PDF(我现在建议<5MB)或上传纯文本/markdown文件。你可以在顶部创建新文档,或粘贴URL以下载并将其转换为markdown。
上传文件后,你可以启用文档聊天模式,它应该能很好地找到相关内容并回应。当然,这取决于你的模型。对于小上下文模型,请确保将"过去消息"聊天选项设置得较低,否则RAG结果的空间不会太多。
流
流标签显示助手执行的操作列表。你还可以将一次性聊天添加到你的流中 - 助手任务、快速聊天或消息(粘贴电子邮件等以分类和总结)。创建条目后,你可以稍后重播它们。
待办事项
应用中有一个非常基础的待办事项列表,因此AI可以为你创建条目。你可以通过该标签添加、编辑或删除条目。
下一步是什么?
目前,我主要在寻求反馈和想法,以了解它离其他人的日常使用还有多远。
我有一些真正想尝试的想法:
- 研究员:在流中输入一个主题,让AI运行几分钟,选择子主题,进行网络搜索,并在"实时文档"中写下其发现。
- 助手模式:有很多方法可以实现助手模式,从快速的1次或2次请求到复杂的ReAct LLM循环。我想尝试多种选项,一些适用于小模型,一些适用于大模型。
- 流/提要:我想要与电子邮件、日历和其他个人数据源进行有用的集成,这样所有内容都可以在一个地方,AI可以参考它。
- 更多功能:每个功能都让助手更有用,我想列出流行请求的列表以构建。
- 微调模型:有一个可以处理助手模式的微小微调模型(如TinyLlama、Phi等)会非常好。
开发者
我对Nucleo的长期目标是一个平台,帮助开发者构建和测试想法,并让其他人可以轻松尝试。我不太喜欢大多数LLM框架,所以我更喜欢Nucleo作为一个工具集合,你可以根据需要挑选和选择。
代码相当混乱,但这里有一些关键点可以尝试:
- 如果你想添加自己的功能,可以查看
app/functions/functions.py
。 - Nucleo是API优先的。你可以使用OpenAI客户端连接到
/api/v1/chat/completions
。 - Nucleo使用"虚拟"模型。你可以将模型设置为'assistant'以在助手模式下聊天,'chat'以在基本模式下聊天,或'message'以总结消息。
- 在聊天模式下,你还可以附加一条消息{'role': 'config', 'content': '{"rag": true}'}以在聊天中启用RAG。
- 未来的一个关键功能是能够创建自己的虚拟模型,但目前这是一个相当混乱的过程。查看
backend/app/ai_models/default_model.py
以了解聊天模型,或查看assistant_model2.py以了解复杂示例。
还有很多工作要做。如果你想贡献,我很乐意提供帮助。
获取帮助
需要帮助吗?
我设立了一个subreddit来讨论问题和想法: https://www.reddit.com/r/nucleoai/
你也可以在问题标签中发帖,但社区可能会给出更快的回应。