<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FastAPI on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/fastapi/</link><description>Recent content in FastAPI on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 04 Jul 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/fastapi/feed.xml" rel="self" type="application/rss+xml"/><item><title>CrewAI 完全指南（三）：進階技巧——Flows 事件驅動、Memory 記憶體、與生產部署</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/crewai-series-part3-advanced-flows-zh/</link><pubDate>Sat, 23 May 2026 09:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/crewai-series-part3-advanced-flows-zh/</guid><description>前言 前兩篇建立了 CrewAI 的基礎和實戰應用。
這篇是進階篇，涵蓋讓 CrewAI 真正走到生產環境的關鍵技術：
Flows：當 Crew 的線性流程不夠用時 Memory 記憶體：讓 Agent 記得過去的對話和經驗 錯誤處理與成本控制：生產環境的必要設計 部署：把 CrewAI 包成 API 服務 Part 1：CrewAI Flows——事件驅動的複雜工作流程 Crew 的限制 Process.sequential 是線性的：任務一個接一個執行。但真實世界的工作流程往往需要：
條件分支：根據分析結果走不同的路徑 迴圈：重複執行直到滿足條件 平行執行：多個 Crew 同時跑，最後彙整 狀態管理：跨步驟保存和傳遞複雜的狀態 CrewAI Flows 就是為了處理這些複雜場景設計的。
Flow 的三個核心 Decorator 1from crewai.flow.flow import Flow, listen, start, router 2from pydantic import BaseModel 3 4class MyFlow(Flow): 5 6 @start() 7 def step_one(self): 8 &amp;#34;&amp;#34;&amp;#34;Flow 的入口點，Flow 啟動時執行&amp;#34;&amp;#34;&amp;#34; 9 return &amp;#34;step one result&amp;#34; 10 11 @listen(step_one) 12 def step_two(self, step_one_output): 13 &amp;#34;&amp;#34;&amp;#34;當 step_one 完成後自動觸發，可以接收上一步的輸出&amp;#34;&amp;#34;&amp;#34; 14 return f&amp;#34;processed: {step_one_output}&amp;#34; 15 16 @router(step_two) 17 def decide_next(self, step_two_output): 18 &amp;#34;&amp;#34;&amp;#34;根據 step_two 的輸出決定下一步走哪條路&amp;#34;&amp;#34;&amp;#34; 19 if &amp;#34;error&amp;#34; in step_two_output: 20 return &amp;#34;error_path&amp;#34; 21 return &amp;#34;success_path&amp;#34; 22 23 @listen(&amp;#34;success_path&amp;#34;) 24 def handle_success(self): 25 return &amp;#34;成功！&amp;#34; 26 27 @listen(&amp;#34;error_path&amp;#34;) 28 def handle_error(self): 29 return &amp;#34;處理錯誤.</description></item><item><title>Auto Agent System - Part 1 - 系統總覽:一個 CrewAI 多代理自動化平台如何運作</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/auto-agent-system-part1-overview-zh/</link><pubDate>Sat, 04 Jul 2026 09:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/auto-agent-system-part1-overview-zh/</guid><description>大部分人寫 AI Agent:把 prompt 丟給 OpenAI SDK,拿到字串,json.loads(),能跑就好。 出事了才發現:模型偶爾回 markdown 包住的 JSON、偶爾 429、偶爾一本正經地亂編——每個任務都要各自處理一次。 這個專案的答案是:把「跟 LLM 打交道的所有髒活」抽成一層 Harness,讓業務邏輯乾乾淨淨。 這一系列會帶你從架構總覽,一路讀到它每一個 merged PR 背後的工程決策。
本系列以 yennanliu/agent_auto_system 這個開源專案為主角,一共五篇:
Part 1(本篇):系統總覽、架構、資料流 Part 2:Harness 引擎——多模型容錯、自我修正、LLM 評審、成本追蹤 Part 3:自動化任務實戰——Shopee 爬蟲、Google Maps 名單、Tasker 自動提案 Part 4:生產化之路——Langfuse 可觀測性、Docker 瘦身、AWS 部署、權限系統 Part 5:前端體驗與 Pipeline 編排——SSE 即時串流、多步驟任務鏈 一、這個系統到底在做什麼 一句話:它是一個「AI 自動化任務的執行平台」。你在網頁上選一個任務(例如「爬 Shopee 賣家」「從 Google Maps 收集潛在客戶名單」「自動幫我在 tasker.com.tw 投標」),填幾個欄位,選一個 LLM 供應商與模型,按下執行——系統就會在背景跑一整個 AI 代理流程,並把進度即時串流回你的畫面。
它不是一個聊天機器人,而是一個把「重複性的知識工作」變成一鍵可執行任務的平台。目前內建 11 種任務類型:
任務類型 做什麼 ────────────────────────────────────────────────────────────── google_form_fill AI 檢視並自動填寫/提交 Google 表單 web_scraper 抓取網址,回傳結構化摘要 google_sheet_reader 讀取公開 Google Sheet,做欄位/統計分析 shopee_seller_scraper 從熱門商品收集賣家清單(最多 100 筆) profit_health_check 四個 agent 協作,分析 Shopee CSV,輸出 PDF 報告 x_scraper 抓取公開 X(Twitter)帳號的近期貼文 hacker_news_digest 把 HN 熱門文章整理成摘要 email_collect Google Maps 漏斗:找商家 → 抓 email → 驗證 → 分級 tasker_apply 自動在 tasker.</description></item></channel></rss>