第十章:強制 AI 說人話 - Pydantic 與結構化輸出 (JSON)

這可能是這門 CrewAI 課程中最硬核,但也是「最具商業落地價值」的最後一個章節。

在我們前面的教學中,當你滿懷期待地執行 result = crew.kickoff() 時,你拿到的 result 通常是一長串格式不固定的「純文字字串 (String)」。有時候 AI 會用 Markdown 的 * 符號列點,有時候會加上 ### 標題,有時候甚至會在開頭加上「好的老闆,這是我為您準備的報告:」。

如果你的目標只是把結果印在終端機上看,那字串很棒。 但是,如果你想要把這個結果顯示在 Next.js 的網頁前端,或是存進 Supabase 資料庫呢? 前端的 React 元件需要的是乾淨的陣列 (Array) 和物件 (Object)。如果你只給他一長串亂七八糟的字串,前端工程師根本無法排版!

我們真正需要的,是強制 AI 回傳一個結構嚴謹的 JSON 物件

🎯 本章目標

  1. 認識 Python 生態系中最強的資料驗證套件:Pydantic (這也是 FastAPI 的核心)。
  2. 學習如何使用 output_pydantic 強制 AI 按照我們定義的 JSON 格式回傳資料,絕不廢話。
  3. 為 CrewAI 多智能體實戰專案畫下完美的句點。

🧱 第一步:使用 Pydantic 定義你的夢幻 JSON 結構

在 Python 中,定義資料結構最棒、最嚴謹的工具叫做 Pydantic。它能確保資料的型別 (字串、數字、陣列) 絕對正確。

🔥【Vibe Prompt 實戰咒語】 我想要我的 CrewAI Task 最終回傳一個嚴格的 JSON 結構,而不是廢話連篇的普通字串。 1. 請幫我寫一個 Pydantic 的 BaseModel,類別命名為 MarketReport。 2. 裡面必須包含三個欄位: - title: 字串 (報告標題) - top_3_trends: 陣列 (包含三個代表趨勢的字串) - summary: 字串 (30字以內的短總結) 3. 請教我如何將這個 Pydantic 模型,放進負責產出最終報告的 Task 的 output_pydantic 參數中。

AI 會教你先引入 Pydantic,並產出這段嚴格的資料定義程式碼:

from pydantic import BaseModel
from typing import List

# 1. 嚴格定義回傳的 JSON 長什麼樣子
class MarketReport(BaseModel):
    title: str
    top_3_trends: List[str] # 確保這一定是一個陣列 (Array)
    summary: str

⚙️ 第二步:把緊箍咒綁定到最終任務上

接下來,我們把這個定義好的 Pydantic 格式,當作「緊箍咒」綁定到整個流程的最後一個任務上。

from crewai import Task

# 這是流程中的最後一個任務
report_task = Task(
    description='根據收集到的資料,寫出一份台灣露營車市場趨勢報告。',
    expected_output='一份符合 Pydantic 結構的精準報告,不允許任何多餘的寒暄文字。',
    agent=senior_editor,
    
    # 🎯 終極魔法在這裡!強制 AI 輸出成這個物件格式
    output_pydantic=MarketReport 
)

現在,當你執行 result = crew.kickoff() 時,拿到的 result 不再是廢話連篇的長篇大論。CrewAI 底層會使用強大的 Tool Calling 與格式驗證技術,逼迫 AI 將想好的內容,乖乖填入你規定的欄位中。

你可以直接在 Python 中像操作物件一樣存取它,或是直接轉成 JSON 傳給前端:

# 執行團隊任務
result = crew.kickoff()

# 提取 Pydantic 物件,並轉換成乾淨的 Python Dictionary (即 JSON 結構)
json_result = result.pydantic.model_dump()

print(json_result["title"]) 
# 輸出: 2026 台灣露營車市場趨勢分析

print(json_result["top_3_trends"][0]) 
# 輸出: 趨勢一:純電露營車比例大幅上升

這時候,你的 FastAPI 只要直接 return json_result,前端的 Next.js 就可以開心地用 map() 函數去把清單渲染成漂亮的卡片了!這打通了後端 AI 到前端 UI 的最後一哩路。


🎉 課程大總結 (Course 5 結業:虛擬架構師的誕生)

狂賀!你完成了整個 Vibe Tutor 平台中最硬核、也最值錢的 CrewAI 多智能體實戰 (Multi-Agents) 課程!

回顧這 10 個章節,你走過了令人驚嘆的旅程:

  1. 認知升級: 了解 Agent、Task、Crew 的概念,從寫死邏輯變成設計大腦。
  2. 打造武器: 學會串接 Google 搜尋,甚至自己刻了專屬的 ECPay 金流查帳工具 (Custom Tools)。
  3. 建立組織: 開啟了長期記憶與任務委派 (Memory & Delegation),讓主管學會發包工作給小弟。
  4. 安全防護: 運用 max_iter 阻止幻覺與無限迴圈,並加入 Human-in-the-Loop 讓老闆親自把關。
  5. 商業落地: 用 Pydantic 產出乾淨的 JSON,完美串接現代化前端。

能走到這裡,你已經不再是普通的「寫程式的人」。你已經掌握了目前矽谷最前沿的技術架構,你是一名具備全端開發能力,還能自行組建「無薪虛擬員工」為你賣命的 AI 系統架構師

你可以把這套 Crew 放在 FastAPI 後端,加上一個用 Tailwind 與 Framer Motion 打造的漂亮前端,這就是目前世界上估值最高的 AI SaaS (軟體即服務) 創業模式!

為自己鼓掌!打開你的編輯器,這個世界還有無數的問題等著你的虛擬團隊去解決,你的開發之旅,現在才正要全速起飛!🚀

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!