KeyFrame內部研究專用

Build Your First AI Agent in Python (Step by Step)

Kevin Stratvert·6月17日週三·12 min英文

三句話摘要

使用開源框架 Agentspan 在 Python 中從零建立具備崩潰恢復能力的 AI Agent。 Agent 能否在生產環境中可靠運作,關鍵在於把狀態交給 server 管理,並確保所有工具都是冪等的——崩潰只是一次可恢復的中斷,而非從頭再來。 工具定義的細節直接影響 AI 是否呼叫它。 函式名稱、參數型別提示、回傳型別、docstring 是 AI 判斷「何時該呼叫此工具」的依據,缺少 docstring 或名稱不具語意,AI 可能完全忽略該工具。

重點整理

重點
  • 1

    工具定義的細節直接影響 AI 是否呼叫它。 函式名稱、參數型別提示、回傳型別、docstring 是 AI 判斷「何時該呼叫此工具」的依據,缺少 docstring 或名稱不具語意,AI 可能完全忽略該工具。

  • 2

    Agent 的執行狀態由 server 持有,而非 Python 程序。 Python 只是 client,真正的 agent runtime 跑在 Agentspan server 上,因此 Python 程序崩潰、重啟,甚至換機器,agent 都能從斷點繼續。

  • 3

    崩潰恢復的關鍵是 execution ID 加上冪等工具。 用 `runtime.start()` 取得 execution ID,崩潰後以該 ID 呼叫 `runtime.resume()` 續跑;工具必須設計為冪等——若目標檔案已有對應內容就跳過寫入,避免重試時產生重複資料。

  • 4

    Agentspan dashboard 提供完整的視覺化 debug 工具。 每次執行都被記錄為一個 execution,可點進去看節點流程圖、每個 tool call 的 input/output,大幅降低 agent 除錯成本。

實用技巧與重點

乾貨
  • Python 最低版本:3.10
  • JDK 推薦版本:25(LTS),21 亦可
  • 套件管理器:uv
  • 框架名稱:Agentspan(開源免費)
  • 健康檢查指令:`uv run agentspan doctor`
  • 啟動 server 指令:`uv run agentspan server start`(首次約 30 秒)
  • 執行 agent 指令:`uv run main.py`(約 10 秒)
  • 支援 AI 供應商:OpenAI、Anthropic Claude、本地 Ollama
  • 模型格式:`provider/model-name`,範例使用 `openai/gpt-4.1-mini`
  • 工具定義:Python 函式 + `@tool` 裝飾器
  • Agent 三要素:`name`、`model`(字串)、`tools`(列表)
  • 崩潰恢復流程:`runtime.start()` → 取得 `execution_id` → 崩潰後 `runtime.resume(execution_id)`
  • 工具冪等設計:寫入前檢查目標檔案是否已含對應內容,有則跳過
  • 示範案例 1:WeatherBot(單工具,串行)
  • 示範案例 2:TestBot(為 price_calculator 模組的 4 個函式並行生成測試,輸出至 `test_price_calculator.py`)
  • 並行 tool call:4 個函式的測試生成同時執行

結論

結論

Agent 能否在生產環境中可靠運作,關鍵在於把狀態交給 server 管理,並確保所有工具都是冪等的——崩潰只是一次可恢復的中斷,而非從頭再來。

完整解析

詳細

現代 AI Agent 的開發門檻看似很高,但這支教學影片用一個完整的實作流程證明,只要掌握正確的框架與概念,任何有基礎 Python 經驗的開發者都能在一個小時內跑起第一個 agent。講者 David 選用開源框架 Agentspan 作為基礎,前置作業僅需安裝 Python 3.10 以上、JDK(推薦最新 LTS 版本 25)以及 Python 套件管理器 uv,接著 `uv add agentspan` 即可完成依賴安裝。Agentspan 本身支援 OpenAI、Anthropic Claude 及本地 Ollama 等多種 AI 供應商,只需設定對應的環境變數(如 `OPENAI_API_KEY`)即可切換。

建立 agent 的流程被拆成三個步驟:定義工具(tool)、定義 agent、撰寫執行程式碼。工具本質上就是一個普通的 Python 函式,加上 `@tool` 裝飾器後便暴露給 AI 使用。這裡有一個初學者常踩的坑:函式名稱、參數的型別提示(type hints)與 docstring 並非可選的文件,而是 AI 判斷何時呼叫這個工具的核心線索。若名稱語意模糊或缺少 docstring,AI 在面對相關問題時可能完全不會觸發該工具。Agent 本身只需三個必填欄位:名稱、模型字串(格式為 `provider/model-name`,影片示範用 `openai/gpt-4.1-mini`)以及工具清單。透過 `AgentRuntime` 連接 Agentspan server 後,呼叫 `runtime.run()` 傳入 prompt 即可啟動。第一個示範是問紐約天氣的 WeatherBot,執行後可在 Agentspan 的 web dashboard 看到完整的執行節點圖,並能點進任何 tool call 查看確切的輸入參數與輸出結果。

第二個示範是 TestBot,目標是為一個包含四個函式的 `price_calculator` 模組自動生成單元測試。此次 agent 會對每個函式並行呼叫 `save_tests` 工具,四個 tool call 同時執行,效率大幅提升,dashboard 也清楚呈現了並行執行的視覺化流程。

更核心的主題是 agent 的崩潰恢復能力。由於 Agentspan 的設計理念是「agent 狀態由 server 持有,Python 程序只是 client」,這讓崩潰恢復成為可能。講者示範在 agent 執行到一半時強制終止 Python 程序,接著從 dashboard 取得該次執行的 execution ID,填入程式碼後重新執行,agent 便從斷點繼續,不會重頭跑。這個機制有一個重要前提:工具必須設計為冪等(idempotent)——即多次執行結果相同。示範中的 `save_tests` 工具在寫入前會先檢查目標檔案是否已含對應測試,若已存在則跳過,確保重試時不會產生重複內容。最終四個函式的測試全數出現在輸出檔案中,且 dashboard 顯示這些 tool call 屬於同一個 execution ID,印證了跨越崩潰的狀態延續。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「AI 技術」的內容

Between Two Nerds: Attribution is dead, long live attribution
32 min
AI 技術英文PODCAST8月25日

Between Two Nerds: Attribution is dead, long live attribution

Risky Business

  • 工具成本的破壞性下降 — 傳統上,攻擊者必須重複使用昂貴自製的惡意軟體或工具組,因為開發和維護成本極高。這種成本結構使得安全研究人員可以通過工具特徵和程式碼簽名來追蹤攻擊者。LLM 自動化了代碼生成與維護工作流,使得攻擊者可以輕易為每個目標生成新工具,或改用通用系統工具,導致傳統的工具特徵分析失效。
  • 所有取證證據都在攻擊者掌控之中 — 無論是使用的 IP 位址、惡意軟體類型或戰術流程,這些都是攻擊者的主動選擇。即使看似是隨機巧合,攻擊者仍有能力在事前決定留下什麼痕跡。因此,所有可恢復的取證證據本質上都是攻擊者願意暴露的信息。
  • LLM 削弱工具簽名但保留高階行為特徵 — LLM 經過公開駭客技術訓練,使不同使用者產生相似的攻擊模式。然而,勒索軟體集團、國家級行為者的受害者選擇、贖金要求方式或目標模式等高階特徵仍具有識別價值。例如,鎖定加密交易所的攻擊幾乎只能指向朝鮮。
Everything Goldman Sachs Taught Me About AI (In 10 minutes)
AI 技術英文8月24日

Everything Goldman Sachs Taught Me About AI (In 10 minutes)

Nate Herk

  • 驗證優於相信:看起來完整的AI輸出不等於正確答案,需在提示中要求模型重新檢查數字、引用來源,並對無把握的部分標記。
  • 區分AI與自動化:確定步驟且答案已知的任務用傳統自動化更便宜快速;只在需要判斷力、靈活性或處理複雜資訊時才用AI,兩者結合效果最佳。
  • 以問題驅動選型:先寫清楚「要解決的問題是什麼、成功的樣子是什麼」,再決定用什麼工具,許多失敗項目是從技術而非問題出發。
Mu: a self-hosted personal agent where the interface is an email address you can write to
AI 技術英文8月23日

Mu: a self-hosted personal agent where the interface is an email address you can write to

GitHub Awesome

  • Mu 是自主代理人系統,具有實際網址與獨立伺服器,用戶可透過多種方式與其互動——網頁應用、電子郵件或程式化介面。
  • 架構完整覆蓋日常工作流程的多個層面,整合郵件收發(SMTP/IMAP)、檔案管理、行事曆、新聞聚合、市場數據與搜尋功能於一個 Go 伺服器內。
  • 支援自帶模型與多種通訊協定,用戶可選擇不同的 AI 模型,並透過 MCP、HTTP API 或命令列工具整合到其他系統。