[TIL]Manus (後來被 Meta 收購) 首席科學家 季逸超 的三小時訪談

(完整影片) 前言 這一篇 Manus (後來被 Meta 收購) 首席科學家 季逸超 的三小時訪談,真的是許多人 AI 產業的人都不能錯過的好影片。 我應該會逐漸將我看到很棒的,放在留言中。先快速講一下我看到很值得關注與分享的地方。 身為連續 AI 創業家,季逸超 分享前十年在 AI 領域創業的部分。從 Tokenize 到 LSTM 到 Transformer 相關的應用。到兩次做 AI 瀏覽器的經驗。 接下來有談到為什麼 Manus 會成功,裡面有很多他們如何解決 Cloud Provider 與 Model Provider 無法做到的事情 - 一個好的工具庫讓 LLM 可以自動去規劃事情。 也有提到 AI Agent 很像製造業,因為有太多需要優化的部分。對於 Manus 產品規劃與方向上,他也認為做對的事情就是:「決定了什麼不去做」。 裡面有許多很快帶過去的技術概念,其實都很深。我一一寫在留言。 關於 MCP 使用 快速 link https://youtu.be/UqMtkgQe-kI?t=10342 關於 MCP 使用,其實 Manus 是比較保守的,因為 MCP 這種動態發現工具的方式,會污染 Action Space ,會讓緩存命中率下降。 下降的緩存命中率,會讓成本暴增。改善方式: 不在原生 Action Space 內的 MCP 調用方式 他也說這被 Anthorpic 寫成部落格,在這裡: Code execution with MCP: Building more efficient agents如何利用代碼執行環境來提高使用MCP(Model Context Protocol)連接AI代理與外部系統的效率。MCP是一個開放標準,旨在解決AI代理與工具和數據的連接問題。文章指出,隨著MCP的廣泛應用,直接工具調用會導致上下文窗口過載和中間結果消耗過多的token。透過將MCP伺服器呈現為代碼API,代理可以更有效地管理上下文,減少token使用,並提高效率。 重要觀點 MCP的挑戰: 工具定義過載上下文窗口。 中間工具結果消耗額外的token。 代碼執行的優勢: 代理可以按需加載工具,並在執行環境中處理數據。 減少token使用,降低成本和延遲。 提供隱私保護和狀態管理的好處。 代碼執行的實現: 使用TypeScript生成可用工具的文件樹。 代理通過文件系統探索工具,僅加載所需的定義。 代碼執行的其他好處: 進行數據過濾和轉換。 使用熟悉的代碼模式進行控制流。 保護隱私的操作。 狀態持久化和技能的保存。 解決方案 代碼執行環境: 將MCP伺服器作為代碼API。 代理在執行環境中運行代碼,減少上下文窗口的負擔。 注意事項 安全性和基礎設施要求: 需要安全的執行環境,適當的沙箱、資源限制和監控。 這些基礎設施需求增加了操作開銷和安全考量。 提到 OpenAI 5 階層的 Agent https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf Level 1: Conversational AI/Chatbots Level 2: Human-Level Problem Solving/Reasoners Level 3: Agents Level 4: Innovators Level 5: Organizers from https://youtu.be/UqMtkgQe-kI?t=9650 心目中影響 AI 進程的論文 當問到,你心目中影響 AI 進程的幾篇論文: FLAN-T5 (Scaling Instruction-Finetuned Language Models) 透過微調參數,讓 11B 的 FLAN-T5 也有不錯的效果。 Word2Vec...
繼續閱讀

[Gemini 3.0][Image Generation] 使用 Gemini 3.0 Pro Image API 打造 PDF 文字優化工具

前情提要 最近經常使用 NotebookLM 來快速製作投影片,這個工具雖然方便,但有個令人困擾的問題:生成的中文字常常出現糊邊和亂碼。雖然「順序不響影讀閱」,但身為工程師還是希望能更專業一點。 在網路上看到有人分享了一個有趣的方法:將 NotebookLM 的投影片截圖後,上傳到 Gemini 3.0 Pro 的「思考型」+ 圖像功能,搭配精心設計的 prompt 來修復圖像。實測效果真的不錯!但每次都要手動截圖、上傳、複製貼上 prompt,實在太麻煩了。 於是我決定:為什麼不直接做成自動化工具? 我想要的功能很簡單: 📄 上傳 PDF 檔案 🤖 自動使用 Gemini API 優化每一頁的文字清晰度 📥 下載優化後的 PDF 聽起來很簡單對吧?但實際開發過程中踩了不少坑… 使用的神奇 Prompt 在開發之前,先分享這個優化圖像的 prompt(來自網路分享): Role Definition 你現在是搭載「多模態視覺認知引擎 (Multi-modal Visual Cognitive Engine)」的高階圖像修復專家。你具備上下文感知 OCR (Context-aware OCR) 與生成式圖像增強 (Generative Image Upscaling) 的核心能力。 Mission Objective 執行「語意級圖像重構 (Semantic-Level Image Reconstruction)」。針對輸入的低解析或模糊圖像,利用邏輯推演修復文字內容,並輸出 4K 廣色域的高傳真圖像。 Execution Protocol (思維鏈與執行協議) 請在後台嚴格執行以下運算流程,並直接輸出最終圖像: 1. 【光學字元邏輯推演 (Optical & Logical Inference)】 對圖像進行高維度掃描,鎖定模糊文字區域 (ROI)。 啟動「上下文語意分析 (Contextual Semantic Analysis)」:不只是辨識像素,更要依據前後文邏輯、常見詞彙庫,推算出模糊區域原本應有的「繁體中文」內容 (Traditional Chinese)。 容錯機制:若像素資訊遺失,優先採用信心分數 (Confidence Score) 最高的語意填補。 2. 【同構視覺合成 (Isomorphic Visual Synthesis)】 嚴格繼承原圖的拓樸結構 (Topological Structure):版面配置、物體座標、透視消點必須與原圖完全鎖定。 風格遷移 (Style Transfer):精確捕捉原圖的設計語言(配色、材質、光影),將其應用於新的高解析畫布上。 3. 【向量級細節渲染 (Vector-Grade Rendering)】 將文字與線條邊緣進行「抗鋸齒 (Anti-aliasing)」與「銳利化處理」。 文字筆畫必須呈現「印刷級」的清晰度,徹底消除 JPEG 壓縮噪點 (Artifacts) 與邊緣溢色。 Exclusion Criteria (負向約束) 嚴禁產生無法閱讀的「偽文字 (Gibberish)」或簡體中文。 嚴禁改變原圖的關鍵構圖結構。 嚴禁輸出模糊、低對比或過度平滑的油畫感圖像。 Output Output the reconstructed image ONLY. No textual explanation required. 這個 prompt 的重點在於: ✅ 使用「語意推理」而非純 OCR(能理解上下文) ✅ 保持原有版面配置 ✅ 生成高解析度圖像 ✅ 強制使用繁體中文 但為了自動化,我簡化成更直接的版本: prompt_text = "請優化這張圖片中的文字,使其更清晰、更易讀。保持原有的版面配置,但提升文字的品質、對比度和清晰度。請輸出優化後的圖片。" 雖然簡化了,但搭配 Gemini 3.0 的圖像生成能力不僅有效,而且實測之後效果更好! 關於 Vertex AI - API Key 因為這個使用到的是 gemini-3-pro-image-preview 的 API ,所以需要 Google...
繼續閱讀

[Gemini 3.0][Google Search] 使用 Google Search Grounding API 搭配 Gemini 3.0 Pro 來打造新聞與資訊助手

前情提要 在開發 LINE Bot 時,我想改進純文字搜尋功能:讓使用者輸入任何問題後,AI 能自動搜尋網路資訊並整理回答,同時支援連續對話。傳統做法需要串接多個 API(Gemini 提取關鍵字 → Google Custom Search → Gemini 總結),不僅慢(3次API調用)而且沒有對話記憶。 但 Google 在 2024 年推出了 Grounding with Google Search 功能,這是官方的 RAG (Retrieval-Augmented Generation) 解決方案,讓 Gemini 模型可以自動搜尋網路並引用來源,還原生支援 Chat Session!這項功能透過 Vertex AI 提供,讓 AI 回應不再憑空想像,而是基於真實的網路資訊。 畫面展示 ( 使用舊有的 Google Custom Search 的成果) 會發現他是根據 Google Search 的成果出來的結果, 主要 Repo https://github.com/kkdai/linebot-helper-python 開發過程中遇到的問題 問題 1:舊版實作的瓶頸 在實作 loader/searchtool.py 時,我使用的是傳統的搜尋流程: # ❌ 舊版的做法 - 3 次 API 調用 async def handle_text_message(event, user_id): msg = event.message.text # 第 1 次:提取關鍵字 keywords = extract_keywords_with_gemini(msg, api_key) # 第 2 次:Google Custom Search results = search_with_google_custom_search(keywords, search_api_key, cx) # 第 3 次:總結結果 summary = summarize_text(result_text, 300) # 回傳結果... 這個方法有幾個明顯的問題: ❌ 無對話記憶 - 每次都是新的對話,無法連續提問 用戶: "Python 是什麼?" Bot: [搜尋結果 + 摘要] 用戶: "它有什麼優點?" # ❌ Bot 不知道 "它" 指的是 Python ❌ 搜尋結果淺薄 - 只使用 snippet,無法深入閱讀網頁內容 ❌ 速度慢且成本高 - 3 次 API 調用(~6-8秒)+ Google Custom Search 費用($0.005/次) 問題 2:Client Closed 錯誤 當我改用 Vertex AI Grounding 後,遇到了這個錯誤: ERROR:loader.chat_session:Grounding search...
繼續閱讀

[n8n][Gemini] 打造 AI 自動摘要的 RSS 訂閱系統,每日定時推送 LINE 通知

前情提要 身為一個資訊焦慮的工程師,我每天都會追蹤多個技術部落格和 Hacker News。但手動瀏覽實在太花時間,於是我決定用 n8n 打造一個自動化系統:RSS 更新時自動抓取網頁內容、用 Gemini AI 產生摘要、存入 Google Sheets,然後每天早上 6 點推送精選文章到 LINE。 這個專案整合了多個服務: 📡 RSS Feed:訂閱多個資訊來源 🕷️ Firecrawl:抓取網頁完整內容 🤖 Gemini 2.5 Flash:AI 自動摘要 📊 Google Sheets:儲存文章資料 📱 LINE Messaging API:Flex Message 推送通知 聽起來很美好,但實作過程中踩了不少坑,這篇文章記錄我遇到的問題和解決方案。 系統架構 整個系統分成兩個獨立的 n8n Workflow: Workflow 1:RSS 即時處理 RSS 觸發 → 格式化資料 → Firecrawl 抓取網頁 → 內容預處理 → Gemini 摘要 → 寫入 Google Sheets Workflow 2:每日定時發送 每日 6:00 觸發 → 讀取 Google Sheets → 篩選未發送 → 取 10 筆 → 組合 Flex Message → LINE 推送 → 更新狀態 開發過程中遇到的問題 問題 1:n8n Code Node 語法錯誤 我一開始在 Code Node 使用 ES Module 語法: // ❌ 錯誤的做法 export default async function () { const items = this.getInputData(); // ... } 結果 n8n 一直報錯,執行失敗。 解決方案: 改用 n8n 標準的寫法,直接使用 $input.all(): // ✅ 正確的做法 const items = $input.all(); const newItems = items.map(item => { // 處理邏輯 return { json: { ...item.json, // 新增欄位 } }; }); return newItems; 問題 2:Gemini API...
繼續閱讀

[Gemini][Google Maps] 使用 Google Maps Grounding API 打造位置感知的 AI 應用

前情提要 在開發 LINE Bot 時,我想加入一個功能:讓使用者分享位置後,AI 可以智慧推薦附近的餐廳、加油站或停車場。傳統做法需要串接 Google Places API,處理複雜的搜尋邏輯和結果排序。但 Google 在 2024 年推出了 Grounding with Google Maps 功能,可以讓 Gemini 模型直接存取 Google Maps 的 2.5 億個地點資訊,讓 AI 回應自動帶有地理位置脈絡! 這項功能透過 Vertex AI 提供,可以讓 Gemini 模型「接地氣」(grounded)地回答位置相關問題,不再只是憑空想像。 開發過程中遇到的問題 在實作 maps_grounding.py 時,我最初使用 Gemini Developer API 搭配 API Key 的方式: # ❌ 錯誤的做法 client = genai.Client( api_key=api_key, http_options=HttpOptions(api_version="v1") ) response = client.models.generate_content( model="gemini-2.0-flash-lite", # 不支援 Maps Grounding contents=query, config=GenerateContentConfig( tools=[Tool(google_maps=GoogleMaps())], tool_config=ToolConfig(...) ), ) 結果出現了這個錯誤: google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': 'Invalid JSON payload received. Unknown name "tools": Cannot find field. Invalid JSON payload received. Unknown name "toolConfig": Cannot find field.'}} 經過查閱文件後才發現,Google Maps Grounding 只支援 Vertex AI,無法使用 Gemini Developer API! 正確的解決方案 1. 理解 API 差異 Google 提供兩種不同的 Gemini API 存取方式: 特性 Gemini Developer API Vertex AI API 認證方式 API Key ADC / Service Account Maps Grounding ❌ 不支援 ✅ 支援 企業級功能 有限 完整 適用場景 快速原型開發 生產環境 2. 修正程式碼 以下是正確的實作方式: from google import genai from google.genai import...
繼續閱讀

[VS Code][Colab] Google 正式釋出 Colab VS Code Plugin

前情提要 Google Colab 是一個我很喜歡的服務,你可以在線上透過 JupyterNotebook 的介面,快速使用到 GPU (甚至是 TPU)。有許多需要大量運算資源的東西,都可以很快速的在遠端的機器上面執行。 我自己很常在上面去嘗試一些模型,雖然常常排隊排不到機器。 使用 Colab 可能有的痛點 雖然使用Google Colab 機器非常的方便,但是由於在線上編輯有一些比較麻煩的地方: 無法使用 Copilot 這類型的 Code Assist Tool 來幫我 Auto-Complete 一些程式碼 無法跑 Gemini CLI Code Assist 來幫我寫出一些更多的測試或是幫忙想應用。 Colab for VS Code Plugin 但是現在 Colab VS Code Extension 終於可以在 VS Code Plugin 上面使用了。你可以透過 “Colab” 直接找到官方釋出的 Plugin 。 安裝過程相當的簡單又快速。 連線到 Colab 如果要連線,在選擇 Kernel 的時候,就可以選擇 Colab 來遠端連線。 這裡還可以快速連線,或是找你上次連線過的伺服器。 這裡就是讓人興奮的地方,可以找找 TPU (不保證排得到隊伍)來用用看。 這樣就可以了。 實際應用: 這樣比較對味啦!! Vibe Coding 出現之後,我們越來越習慣 Vibe Coding 了。但是如果需要 Step by Step 的去偵錯,或是想要跑一些大型機器才能運行的運算。真的還是需要透過 Colab 來幫忙,但是如果又希望可以有 Gemini CLI 的輔助的話,或許 Colab VS Code Extension 就是你不可或缺的好夥伴。 目前一些需要注意的地方 由於 Colab VS Code Plugin 還在持續開發中,有一些原本在 Colab Web UI 上可以使用的 google.colab 功能目前還無法在 VS Code 中使用。以下是一些主要的限制: auth.authenticate_user(): 認證 URL 會出現在選單中,無法直接點擊。建議改用 Python Cloud Client Library。 drive.mount(): 目前無法掛載 Google Drive,可以改用 Drive Python API 來存取檔案。 files.download() / files.upload(): 原生的檔案上傳下載功能無法使用,但可以透過 IPyWidget 來達成相同效果。 userdata.get(): 目前會回傳錯誤,暫時需要從 Colab Web UI 複製 secret 值到 notebook 中。 雖然有這些限制,但整體來說 Colab VS Code Plugin 還是大幅提升了開發體驗,特別是對於習慣使用 VS Code 和各種 AI Coding Assistant 的開發者來說,絕對是值得一試的好工具! 參考資料 Colab VS Code...
繼續閱讀