AI家庭助手

一款可定制的AI家庭助手,集成ollama并提供多种功能,如日历管理、天气查询、购物清单和待办事项等。

  • by EinfachNiklas
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 EinfachNiklas/OwnAssistant

使用说明

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

入门指南

这些说明将为您提供一份项目副本,并在本地计算机上运行,以用于开发和测试目的。有关如何在实时系统上部署项目的说明,请参阅部署。

先决条件

安装软件需要什么以及如何安装

安装

安装依赖项

在根目录中运行以下命令

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。

现在访问 https://console.cloud.google.com/apis/credentials。单击“创建凭据”并选择“服务帐户”。

填写输入字段,并记住创建的电子邮件地址以备后用。

在步骤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 文件。

技术细节

构建于

环境变量

变量 描述 默认值
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 此列表的本地时区 Europe/Berlin

推荐型号

小

  • qwen2.5:3b-指令-q4_K_M
  • llama3.2:3b指令-q4_K_M

中等

  • 骆驼3.1:8b指令-q4_0

规划架构

数据库架构

[!注意] 完成

贡献

由于该项目还处于早期阶段,我目前不接受捐款。但仍然感谢您的关注:)

版本控制

[!注意] 完成

作者

许可证

此程序是自由软件:您可以重新分发和/或修改它 仅根据GNU通用公共许可证版本3的条款, 由自由软件基金会出版。 请参阅 许可证 详细信息文件

致谢