解放雙手,AI助手為你打理一切

107

Github: JasonWu55/ai-assistant

引言

你是否曾幻想過擁有一個像電影裡那樣聰明的AI助手,可以隨時隨地為您解答問題、安排行程?現在,這個夢想不再遙不可及。透過Node.JS、Ollama的結合,我們可以打造一個屬於自己的AI祕書,讓生活變得更加便利。

AI助手

近年來,AI技術的飛速發展,被廣泛運用在各種領域,一開始是ChatGPT帶起了這波風潮,後來漸漸的有許多大模型被開源,因而讓我發現到能在本地跑AI。

最近我在用Siri時,有了一個點子,如果能新增AI在這個語音助手,使其功能更加強大,那該有多好。於是我開始著手研究,希望能打造一個專屬於自己的AI語音助理。

伺服器系統架構

Express.JS

作為客戶端與伺服器的溝通媒介,當成API來使用。

/chat 處理AI問答

/start 載入模型

/stop 釋放模型

Ollama AI 核心

官方網站: Ollama

Ollama是一套程式用於本地跑AI文字模型

在做學測單字卡時曾經用過Ollama來生成例句。這次則是用來作為個人助手

Ollama提供了本地API接口與npm套件來達成AI問答

// 讀取系統提示文件
const systemPrompt = fs.readFileSync('./system_prompt.txt', 'utf-8');

const response = await ollama.chat({
  model: process.env.MODEL_NAME,
  messages: [
    {
      role: 'system',
      content: 'Current Time: '+Date()
    },
    {
      role: 'system',
      content: systemPrompt
    },
    {
      role: 'user',
      content: req.body.message
    }
  ],
  keep_alive: -1,
  options: {
    temperature: 0.7,    // 控制輸出的隨機性 (0-1)
    top_p: 0.9,         // 控制輸出的多樣性
    top_k: 40,          // 限制每次選擇的候選詞數量
    repeat_penalty: 1.1, // 降低重複內容的可能性
    seed: 5,           // 固定隨機種子以獲得可重複的結果
    num_predict: 100,    // 生成的最大token數量
  }
});

透過JSON格式對AI送出prompt以及使用者輸入資料並調節細項

行事曆處理

我使用Google Calendar管理行事曆,既有現成的API可以調用,還可以直接整合到iOS的內建行事曆。

Google Cloud Console

  • 新增一個專案image-grph.png

  • 啟用Google Calendar API

  • 設定OAuth 2.0

搭配Claude3.5 AI生成Google Calendar Module

功能大致分別為

getDayEvents(date) : 取得某日行程

getWeekEvents(date) : 取得某周行程

getMonthEvents(date) : 取得某月行程

createEvent(detail) : 創建行程

Module: ai-assistant/services/googleCalendar.js

提示詞結構

一樣使用Claude3.5協助生成,讓本地AI能夠了解我在幹嘛。我的作法為讓AI判斷我的問題的目的,生成幾種指令

直接回覆

  • [REPLY]: 直接回覆

課表相關

  • [SUBJECT]: 查課表

行事曆相關

  • [CAL:TODAY]: 取得當天行程

  • [CAL:DAY:{date}]: 取得某日行程

  • [CAL:WEEK]: 取得當周行程

  • [CAL:MONTH]: 取得當月行程

  • [ADD_CAL_{title}_{start_time}_{end_time}_{is_all_day}]: 新增行程

客戶端

由於我使用iOS與iPadOS,使用捷徑能與系統做最大化的相容。

IMG_0593.png

捷徑連結: 捷徑

下載安裝

  1. 從Github下載專案

git clone https://github.com/JasonWu55/ai-assistant.git
cd ai-assistant
  1. 安裝套件

pnpm i

若沒有pnpm使用以下指令安裝

npm i -g pnpm
  1. 取得Google Cloud OAuth2.0驗證JSON

參考資料: Day23-介接 API(一)Google Calendar(I)啟用 API 與 Events——Create - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

  1. 將JSON檔案改名為 oauth_credentials.json 並放置於 services/config

  2. .env.example 更改並改名為 .env

  3. 安裝 Ollama

  4. 透過以下指令安裝 qwen2.5:32b

ollama pull qwen2.5:32b

8. 啟動專案

npm start

使用方法

與AI對話

Endpoint

POST /chat

Request

{
  “message”: “string”
}

Response

{
  “message”: “string”
}

載入模型

Endpoint

POST /start

Request

(empty)

Response

{
  “status”: “string”,
  “message”: “string”
}

釋放模型

Endpoint

POST /stop

Request

(empty)

Response

{
  “status”: “string”,
  “message”: “string”
}