Own助手
一个可定制的AI家庭助理,使用MCP将ollama与多种功能集成在一起。
\[!注意\] 目前建议只提示一次工具调用。多次调用工具可能会导致幻觉。这将在未来得到改善
功能和工具
- 获取当前日期时间:
- get_current_datetime
- 使用谷歌日历- 设置
- create_event - get_events
- 获得天气
- get_weather_forecast - get_weather_current
- 购物清单
- create_shoppinglist_entry - get_shoppinglist_entries - set_shoppinglist_done_status - clear_done_shoppinglist
- 待办事项列表
- create_todolist_entry - get_todolist_entries - set_todolist_done_status - clear_done_todolist
- 网络搜索- 设置
- web_search_overview - web_page_content
入门指南
这些说明将为您提供一份项目副本,并在本地计算机上运行,以用于开发和测试目的。有关如何在实时系统上部署项目的说明,请参阅部署。
先决条件
安装软件需要什么以及如何安装
- 码头工人 (安装并运行ollama)
安装
安装依赖项
在根目录中运行以下命令
npm install设置环境变量
在根目录中复制 .env.example 到 .env 并更改值。查找所有环境变量的列表 这里.
决定你想要使用的LLM是很重要的。您可以看到推荐型号的列表 这里强烈建议至少从“中等”类别中选择一个型号。
建立Ollama
要最初创建Ollama Docker容器,请运行以下命令
npm run ollama-init要启动或停止Ollama,请运行以下相应命令:
npm run ollama-start # Start Ollama
npm run ollama-stop # Stop Ollama 启动应用程序
要启动应用程序,请运行以下命令
npm run build
npm run start\[!注意\] 首次启动应用程序以及更改使用的模型时,启动可能需要几分钟,因为必须下载模型。
运行测试
端到端测试
\[!注意\] 完成
集成测试
\[!注意\] 完成
单元测试
\[!注意\] 完成
静态代码检查
\[!注意\] 完成
部署
\[!注意\] 完成
功能设置
谷歌日历
要连接Google日历,请使用Google Cloud。为此,您需要一个启用了Google日历的Google帐户。首先,创建一个谷歌云项目。跟随这个 指南。不需要设置账单。
在屏幕左侧的汉堡包菜单中选择“API和服务”。
现在选择“启用api和服务”并搜索“谷歌日历api”。单击相应的条目并启用Google日历的API。
res/google_enable_apis.png res/google_calendar_search.png
现在访问 https://console.cloud.google.com/apis/credentials。单击“创建凭据”并选择“服务帐户”。
res/google_select_create_service_account.png
填写输入字段,并记住创建的电子邮件地址以备后用。
res/google_create_service_account.png
在步骤2中,选择“编辑者”作为此帐户的指定角色。 返回概览页面 https://console.cloud.google.com/apis/credentials 单击您新创建的服务帐户。导航到“密钥”部分,然后选择“添加密钥”和“创建新密钥”。在弹出菜单中选择JSON作为文件类型并下载密钥文件。
将json文件移动到此仓库的根目录并重命名为 google_auth.json。您也可以复制 google_auth_example.json 并将其重命名为 google_auth.json。请确保不要将此文件添加到版本控制中,因为它包含您的凭据。保持安全!
整个过程创建了一个服务Google帐户。对于此用例,它可以被视为任何其他谷歌帐户。现在,您可以选择
- 使用此服务帐户的电子邮件地址共享您的个人谷歌日历。这允许OwnAssistant创建和读取此日历中的事件。
- 创建一个新的、单独的谷歌日历,并将其与此服务帐户的电子邮件地址共享。这允许OwnAssistant仅从该特定日历而不是主日历中创建和读取事件。您在此日历中创建的所有事件都可以访问。
跟随这个 指南 如果你需要帮助。
在此设置页面上,向下滚动到“集成日历”并复制日历id。这用于标识您要在此应用程序中访问的特定日历。将此值复制到环境变量 GOOGLE_SHARED_CALENDAR_ID 在 .env.
设置现在已完成。现在,您可以开始使用谷歌日历功能。
搜索
若要使用web搜索功能,请使用搜索引擎API。目前只支持Serper,因为它提供了一个免费层并提供了足够的功能。
获取API密钥访问 https://serper.dev/ 并创建一个帐户。登录后,将API密钥从仪表板复制到 .env 文件。
技术细节
构建于
- 模型上下文协议(MCP) -LLM和后端功能之间的连接层
- 奥利玛JS -使用的本地LLM平台
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
SERPER_SEARCH_API_KEY | 用于Web搜索的SERPER API密钥 | 无 |
GOOGLE_SHARED_CALENDAR_ID | 用于标识此应用程序使用的谷歌日历的谷歌日历ID | 无 |
LATITUDE | 您当地的纬度四舍五入到小数点后两位 | 无 |
LONGITUDE | 您的本地经度四舍五入到小数点后两位 | 无 |
MAX_CHAT_ITERATIONS | LLM允许进行的最大迭代次数和工具调用次数 | 6 |
MODEL | 用于编排工具的模型。看 推荐型号列表 | llama3.1:8b-instruct-q4_0 |
NUM_GPU | 模型的层数将在GPU上执行 | 15 |
TIMEZONE | 此列表的本地时区 timezones | Europe/Berlin |
推荐型号
小
- qwen2.5:3b-指令-q4_K_M
- llama3.2:3b指令-q4_K_M
中等
- 骆驼3.1:8b指令-q4_0
规划架构
数据库架构
\[!注意\] 完成
贡献
由于该项目还处于早期阶段,我目前不接受捐款。但仍然感谢您的关注:)
版本控制
\[!注意\] 完成
作者
- 简单尼克拉斯 - *初期工作*
许可证
此程序是自由软件:您可以重新分发和/或修改它 仅根据GNU通用公共许可证版本3的条款, 由自由软件基金会出版。 请参阅 许可证 详细信息文件
致谢
- 多亏了 PurpleBooth 为了
README.md模板
