1. 痛點:好用的工具,難搞的門檻
最近 AI 圈子裏,Google 的 NotebookLM 絕對是頂流。扔幾篇 PDF 進去,它不僅能精準回答,還能生成一段像模像樣的雙人播客,簡直是科研和學習的神器。
但對於國內開發者來説,想在生產環境用上類似的工具,有兩個巨大的攔路虎:
- 數據安全:把公司合同或未公開的論文傳給 Google?很多老闆直接 Say No。
- 基礎設施門檻:想搞個私有版替代品(比如 Open Notebook),卻發現第一步就卡住了——OpenAI API Key 獲取太麻煩了!註冊要海外手機,支付要海外卡,網絡還得有條件。
別慌,今天這篇文章就是為了解決這兩個問題而生的。
我們將使用 GitHub 上最硬核的 NotebookLM 開源替代品——Open Notebook,並教你通過國內中轉接口完美繞過官方 Key 獲取的繁瑣流程,實現數據本地化 + 模型能力頂配化。
2. 為什麼選 Open Notebook + 中轉方案?
在開始部署前,簡單聊聊這套方案的“真香”之處:
- 解決“OpenAI API Key 獲取”難題:我們不需要去 OpenAI 官網折騰複雜的註冊流程。直接使用兼容 OpenAI 協議的國內中轉服務(本文以
sg.uiuiapi.com為例)。 - 功能更強:Google 的播客生成是黑盒,而 Open Notebook 允許你在生成音頻前修改腳本(Script),想加戲、改錯音都能行。
- 混合檢索 (Hybrid Search):結合了向量檢索和全文檢索,查準率吊打普通的 RAG 應用。
3. 保姆級部署實戰 (Copy 就能跑)
我們將使用 Docker Compose 進行一鍵部署。這套配置我已經針對國內網絡環境做了全套優化(時區、保活、API 線路)。
3.1 環境準備
- 一台服務器(騰訊雲/阿里雲/華為雲均可)或本地電腦(需安裝 Docker)。
-
新建一個文件夾:
mkdir open-notebook cd open-notebook
3.2 編寫 docker-compose.yml
新建 docker-compose.yml 文件。注意,為了防止國內網絡波動導致服務掛掉,我加了 restart: always。
version: '3.8'
services:
# --- 數據庫:SurrealDB ---
# 既然是私有化,數據當然要存在自己硬盤裏
surrealdb:
image: surrealdb/surrealdb:latest
container_name: open_notebook_db
restart: always
user: root
environment:
- TZ=Asia/Shanghai # 鎖定國內時區
ports:
- "8000:8000"
volumes:
- ./data/surrealdb:/mydata
command: start --log trace --user root --pass root file://mydata/surreal.db
# --- 後端:Python FastAPI ---
backend:
image: ghcr.io/lfnovo/open-notebook-backend:latest
container_name: open_notebook_backend
restart: always
environment:
- TZ=Asia/Shanghai
depends_on:
- surrealdb
env_file:
- .env
ports:
- "5055:5055"
volumes:
- ./data/uploads:/app/uploads
- ./data/cache:/app/cache
# --- 前端:Next.js ---
frontend:
image: ghcr.io/lfnovo/open-notebook-frontend:latest
container_name: open_notebook_frontend
restart: always
environment:
- TZ=Asia/Shanghai
depends_on:
- backend
env_file:
- .env
ports:
- "8502:3000" # 瀏覽器訪問端口
3.3 配置環境變量 (核心步驟:搞定 API) 🔑
這是本文的重頭戲。很多教程只扔給你一個模板,讓你自己去搞 Key。這裏我們直接提供中轉配置方案。
新建 .env 文件,複製以下內容:
# ========================
# 1. 網絡基礎配置
# ========================
# ❗如果你在雲服務器部署,必須把 localhost 改成公網 IP!
API_URL=http://localhost:5055
INTERNAL_API_URL=http://backend:5055
# ========================
# 2. 數據庫配置
# ========================
SURREAL_URL=http://surrealdb:8000
SURREAL_NAMESPACE=test
SURREAL_DATABASE=test
SURREAL_USER=root
SURREAL_PASSWORD=root
# ========================
# 3. 解決 OpenAI API Key 獲取難題
# ========================
LLM_PROVIDER=openai
# 這裏填入你在UIUIAPI平台獲取的 Key (通常是 sk- 開頭)
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 👇 關鍵點:將 Base URL 指向國內中轉服務
# 這樣服務器即使沒有魔法網絡,也能飛快地連接模型
OPENAI_API_BASE="https://sg.uiuiapi.com/v1"
OPENAI_BASE_URL="https://sg.uiuiapi.com/v1"
# 推薦模型:gpt-4o-mini (便宜、速度快、指令遵循好)
DEFAULT_CHAT_MODEL=gpt-4o-mini
DEFAULT_EMBEDDING_MODEL=text-embedding-3-small
# ========================
# 4. 穩定性微調
# ========================
API_TIMEOUT=120 # 適當增加超時時間
MAX_RETRIES=3
3.4 啓動服務
docker compose up -d
等待鏡像拉取完成後(如果 GitHub 鏡像拉取慢,建議配置一下 Docker 鏡像加速器),輸入 docker compose logs -f。
當你看到綠色的 Application startup complete,恭喜你,你的私有大腦已經上線了!
訪問:http://你的IP:8502 即可開始體驗。
4. 實戰體驗:比原版強在哪?
部署完之後,你可能會問:費這麼大勁折騰(雖然也就20分鐘),到底圖啥?
4.1 數據的絕對掌控
你上傳的 PDF、財報、代碼,全部躺在 data/surrealdb 目錄下的數據庫文件裏。拔掉網線,它們就在你的硬盤裏,誰也拿不走。
4.2 播客腳本的“上帝模式”
NotebookLM 生成播客時,如果 AI 讀錯了你的公司名,你毫無辦法。
但在 Open Notebook 裏,系統會先生成一段 Transcript(逐字稿)。你可以像編輯 Word 一樣,把不滿意的台詞改掉,甚至手動插入一段:“Hey, wait a minute, I have a different opinion...” 然後再點擊生成音頻。這種可控性是專業用户最看重的。
4.3 成本極低
通過中轉 API 使用 gpt-4o-mini,讀完一本幾百頁的書並進行幾十輪對話,成本可能也就幾毛錢人民幣。相比於為了官方 Key 去折騰虛擬卡年費,這個方案簡直是白菜價。
5. 常見坑點排查 (避坑指南)
- CORS 報錯 / Network Error:
- 原因:
.env裏的API_URL填錯了。 - 記住:這個地址是你的瀏覽器要訪問的地址。雲服務器部署一定要填公網 IP,別填 localhost。
- API 連不上:
- 原因:Python 庫版本差異。
- 解法:請確保
.env裏OPENAI_API_BASE和OPENAI_BASE_URL兩個變量都配置了,且都帶上了/v1後綴。 - PDF 解析失敗:
- 建議優先使用文字版 PDF。如果是純圖片的掃描件,Open Notebook 的解析引擎可能會比較吃力,建議先在本機做一下 OCR。
6. 界智通(Jieagi)總結
OpenAI API Key 獲取不再是阻礙我們探索 AI 的門檻。通過 Open Notebook + 國內中轉 + Docker 的組合拳,我們不僅繞過了繁瑣的註冊流程,還擁有了一個數據私有、功能更強、網絡無憂的超級知識庫。
如果你手裏有一堆文檔需要消化,或者想生成自己專屬的 AI 播客,趕緊把這套代碼 Copy 過去跑起來吧!
最後提示:文中提到的中轉地址僅作演示配置,請大家根據自己的實際情況選擇所需的 API 服務商。有問題歡迎在評論區交流!
版權信息: 本文由UIUIAPI團隊編寫,保留所有權利。未經授權,不得轉載或用於商業用途。