Suna:開源通用型 AI 助理,解放你的生產力!(新手入門指南)
嘿,大家好!身為一個熱愛科技的台灣開發者,今天要跟大家介紹一個讓我眼睛一亮的開源專案:Suna – Open Source Generalist AI Agent。簡單來說,Suna 就像一個可以幫你處理各種雜事的 AI 助理,而且完全開源!
網址: 目前 Suna 專案的主要資訊都在其 GitHub 頁面上,所以並沒有一個獨立的官方網站。但你可以透過這個連結前往 GitHub 了解更多:https://github.com/kortix-ai/suna
為什麼 Suna 吸引我?
在這個 AI 爆炸的時代,我們已經看過太多聊天機器人,但 Suna 的特別之處在於:
- 通用性: 不只是聊天,Suna 能夠執行各種任務,從網頁瀏覽、資料分析到檔案管理,甚至可以操作指令列!
- 開源: 這代表你可以完全掌握 Suna 的運作方式,自由修改、客製化,甚至貢獻程式碼。
- 易於使用: Suna 提供直覺的介面,透過自然語言對話,就能輕鬆指揮你的 AI 助理。
對於想要擁抱 AI、提升生產力,又不想被商業軟體綁架的朋友們,Suna 絕對是一個值得嘗試的選擇。
Suna 到底能做什麼?(使用情境)
Suna 的應用範圍非常廣泛,以下是一些官方提供的例子,讓大家更容易理解:
- 競品分析: 分析特定產業的市場,找出主要競爭者、優劣勢,並生成 PDF 報告。 (範例影片: https://www.suna.so/share/5ee791ac-e19c-4986-a61c-6d0659d0e5bc)
- 尋找投資人: 建立美國重要創投基金列表,包含網站連結和聯絡方式。 (範例影片: https://www.suna.so/share/804d20a3-cf1c-4adb-83bb-0e77cc6adeac)
- 獵才: 在 LinkedIn 上尋找符合特定條件(例如:地點、學歷、經驗)的潛在候選人。 (範例影片: https://www.suna.so/share/3ae581b0-2db8-4c63-b324-3b8d29762e74)
- 旅遊規劃: 根據你的喜好和時間,規劃詳細的旅遊行程,包含住宿、交通、活動等。 (範例影片: https://www.suna.so/share/725e64a0-f1e2-4bb6-8a1f-703c2833fd72)
- Excel 應用: 建立包含特定資訊的 Excel 表格,例如:彩券資訊。 (範例影片: https://www.suna.so/share/128f23a4-51cd-42a6-97a0-0b458b32010e)
- 活動講者搜尋: 找出特定領域(例如:AI 倫理)的講者,並整理他們的聯絡資訊和演講摘要。 (範例影片: https://www.suna.so/share/7a7592ea-ed44-4c69-bcb5-5f9bb88c188c)
- 論文摘要與比較: 研究並比較特定主題的科學論文,並生成重點摘要報告。 (範例影片: https://www.suna.so/share/c2081b3c-786e-4e7c-9bf4-46e9b23bb662)
- 潛在客戶開發: 在 LinkedIn 上尋找特定產業的潛在客戶,找出他們的網站和聯絡方式,並生成客製化的開發信。 (範例影片: https://www.suna.so/share/6b6296a6-8683-49e5-9ad0-a32952d12c44)
- SEO 分析: 針對你的網站生成 SEO 分析報告,找出關鍵字排名和遺漏的主題。 (範例影片: https://www.suna.so/share/43491cb0-cd6c-45f0-880c-66ddc8c4b842)
- 論壇內容爬取: 在論壇上尋找特定主題的討論,並整理出相關資訊。 (範例影片: https://www.suna.so/share/7d7a5d93-a20d-48b0-82cc-e9a876e9fd04)
- 新創公司研究: 在 Crunchbase、Dealroom 和 TechCrunch 上篩選特定條件的新創公司,並建立包含公司資料、創辦人和聯絡資訊的報告。 (範例影片: https://www.suna.so/share/8b2a897e-985a-4d5e-867b-15239274f764)
這些只是冰山一角,只要你有想像力,Suna 就能幫你處理更多複雜的任務。
Suna 的核心概念:架構簡介
Suna 的架構主要由以下四個部分組成:
- Backend API (後端 API): 使用 Python/FastAPI 撰寫,負責處理 REST API 請求、執行緒管理,以及與 LLM (Large Language Model,大型語言模型) 的整合,目前主要支援 Anthropic,但也透過 LiteLLM 支援其他 LLM。
- Frontend (前端): 使用 Next.js/React 建立,提供響應式的 UI,包含聊天介面、儀表板等。
- Agent Docker (代理 Docker): 每個 Agent 都在獨立的 Docker 環境中執行,確保安全。這個環境包含了瀏覽器自動化、程式碼解釋器、檔案系統存取、工具整合等功能。
- Supabase Database (Supabase 資料庫): 使用 Supabase 儲存所有資料,包含使用者驗證、對話歷史、檔案儲存、Agent 狀態、分析數據等。
簡單來說,你可以把 Suna 想像成一個大腦 (Backend API),透過前端與你互動,利用 Docker 創造出獨立的工作空間 (Agent Docker),並將所有資訊儲存在資料庫中 (Supabase Database)。
如何開始使用 Suna?(本地部署指南)
想要體驗 Suna 的強大功能,你可以選擇在本地環境自行部署。以下是詳細的步驟,即使是新手也能輕鬆上手:
1. 環境需求:
- Supabase 專案: 用於資料庫和使用者驗證。
- Redis 資料庫: 用於快取和 Session 管理。
- Daytona sandbox: 用於安全地執行 Agent。
- Python 3.11: 用於後端 API。
- LLM API 金鑰: 目前主要支援 Anthropic。
- Tavily API 金鑰: 用於強化搜尋功能(可選)。
- Firecrawl API 金鑰: 用於網頁爬取功能(可選)。
2. 前置準備:
- Supabase:
- 建立一個新的 Supabase 專案。
- 儲存專案的 API URL、anon key 和 service role key。
- 安裝 Supabase CLI。
- Redis:
- 可以使用 Upstash Redis (推薦用於雲端部署) 或在本機安裝。
- Mac:
brew install redis
- Linux: 依照你的發行版指示安裝。
- Windows: 使用 WSL2 或 Docker。
- 儲存你的 Redis 連線資訊。
- Daytona:
- LLM API 金鑰:
- 搜尋 API 金鑰 (可選):
- 取得 Tavily API 金鑰 以強化搜尋功能。
- 取得 Firecrawl API 金鑰 以啟用網頁爬取功能。
- RapidAPI API 金鑰 (可選):
- 要啟用像 LinkedIn 等 API 服務,你需要一個 RapidAPI 金鑰。
- 每個服務都需要在你的 RapidAPI 帳號中個別啟用:
- 在對應的檔案中找到服務的
base_url
(例如,backend/agent/tools/data_providers/LinkedinProvider.py
中的"https://linkedin-data-scraper.p.rapidapi.com"
) - 在 RapidAPI marketplace 上訪問該 API。
- 訂閱該服務 (許多服務提供有限請求的免費層級)。
- 一旦訂閱,該服務將透過 API Services 工具提供給你的代理。
- 在對應的檔案中找到服務的
3. 安裝步驟:
- Clone 專案:
git clone https://github.com/kortix-ai/suna.git cd suna
- 設定後端環境:
cd backend cp .env.example .env # 複製範例檔案,如果有的話,或使用以下範本
編輯
.env
檔案,填入你的憑證:NEXT_PUBLIC_URL="http://localhost:3000" # Supabase 憑證 SUPABASE_URL=你的_supabase_url SUPABASE_ANON_KEY=你的_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=你的_supabase_service_role_key # Redis 憑證 REDIS_HOST=你的_redis_host REDIS_PORT=6379 REDIS_PASSWORD=你的_redis_password REDIS_SSL=True # 如果你的 Redis 沒有 SSL,請設為 False # Daytona 憑證 DAYTONA_API_KEY=你的_daytona_api_key DAYTONA_SERVER_URL="https://app.daytona.io/api" DAYTONA_TARGET="us" # Anthropic API 金鑰 ANTHROPIC_API_KEY= # OpenAI API 金鑰 (如果需要) OPENAI_API_KEY=你的_openai_api_key # 可選但推薦 TAVILY_API_KEY=你的_tavily_api_key # 強化搜尋功能 FIRECRAWL_API_KEY=你的_firecrawl_api_key # 網頁爬取功能 RAPID_API_KEY=你的_rapid_api_key
- 設定 Supabase 資料庫:
# 登入 Supabase CLI supabase login # 連結到你的專案 (在 Supabase 儀表板中找到你的專案參考) supabase link --project-ref 你的_專案參考_id # 推送資料庫遷移 supabase db push
然後,再次前往 Supabase 網站 -> 選擇你的專案 -> Project Settings -> Data API -> 在 “Exposed Schema” 中加入 “basejump” (如果還沒有的話)。
-
設定前端環境:
cd ../frontend cp .env.example .env.local # 複製範例檔案,如果有的話,或使用以下範本
編輯
.env.local
檔案:NEXT_PUBLIC_SUPABASE_URL=你的_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=你的_supabase_anon_key NEXT_PUBLIC_BACKEND_URL="http://localhost:8000/api" # 本地開發使用 NEXT_PUBLIC_URL="http://localhost:3000"
注意: 如果你使用 Docker Compose,請使用容器名稱而不是 localhost:
NEXT_PUBLIC_BACKEND_URL="http://backend:8000/api" # 使用 Docker Compose 時
- 安裝依賴套件:
# 安裝前端依賴套件 cd frontend npm install # 安裝後端依賴套件 cd ../backend pip install -r requirements.txt
- 啟動應用程式:
在一個終端機中,啟動前端:
cd frontend npm run dev
在另一個終端機中,啟動後端:
cd backend python api.py
- Docker Compose 替代方案:
在使用 Docker Compose 之前,請確保您的環境檔案已正確配置:
- 在
backend/.env
中,設置所有必需的環境變數,如上所述 - 對於 Redis 配置,使用
REDIS_HOST=redis
而不是 localhost - Docker Compose 設置將自動設置以下 Redis 環境變數:
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_SSL=False - 在
frontend/.env.local
中,確保設置NEXT_PUBLIC_BACKEND_URL="http://backend:8000/api"
以使用容器名稱
然後運行:
export GITHUB_REPOSITORY="你的-github-使用者名稱/repo-名稱" docker compose -f docker-compose.ghcr.yaml up
如果您在本地構建映像而不是使用預構建的映像:
docker compose up
Docker Compose 設置包括一個 Redis 服務,後端將自動使用它。
- 在
-
存取 Suna:
- 在你的瀏覽器中開啟 `http://localhost:3000`。
- 使用 Supabase 驗證註冊一個帳號。
- 開始使用你自行部署的 Suna 實例!
個人實作心得與錯誤排除指南:
- 環境變數設定: 這是最容易出錯的地方!請務必仔細檢查每個環境變數是否都填寫正確,特別是 API 金鑰和 Supabase 憑證。
- Supabase 資料庫遷移: 如果你在
supabase db push
的時候遇到問題,可以嘗試先執行supabase db reset
清除資料庫,然後再重新執行supabase db push
。 - Docker Compose: 如果你選擇使用 Docker Compose,請確保你的 Docker 環境已經正確安裝和設定。另外,記得要將
NEXT_PUBLIC_BACKEND_URL
設定為 `http://backend:8000/api`,才能讓前端正確連線到後端。 - LLM API 選擇: 雖然 Suna 聲稱支援多個 LLM,但根據官方文件,目前最佳的選擇還是 Anthropic。如果你想要嘗試其他 LLM,可能需要調整提示詞才能獲得最佳效果。
總結
Suna 是一個功能強大、潛力無窮的開源 AI 助理。雖然部署過程可能需要一些技術背景,但只要按照步驟操作,相信你也能成功搭建自己的 Suna 實例。
無論你是開發者、研究人員,還是單純想要提升生產力,Suna 都能成為你的得力助手。快來試試看吧!
最後,別忘了 Suna 是一個開源專案,如果你在使用過程中發現任何問題或有任何建議,歡迎前往 GitHub 提交 issue 或貢獻程式碼。一起讓 Suna 變得更好!
參考閱讀
https://github.com/kortix-ai/suna