標籤: 開源框架

  • 用 livekit/agents 做一個即時語音 AI 助手

    用 livekit/agents 做一個即時語音 AI 助手

    📌 本文重點

    • livekit/agents 幫你包好即時語音串流與房間管理
    • 透過插件快速串接各家 LLM/STT/TTS
    • 適合打造客服、家教、會議助理、遊戲 NPC 等語音場景

    一句話先講清楚:livekit/agents 是一個「開箱即用」的實時語音/視頻 AI agent 開源框架,幫你處理好語音串流、通話房間、跟各家 LLM 串接,讓你專心寫「助理要做什麼」。

    專案連結:https://github.com/livekit/agents


    核心功能:它幫你省掉哪些麻煩

    1. 即時語音串流處理(含多方通話)

    用傳統方式做語音助手,你得自己處理:WebRTC 連線、音訊編碼、封包、延遲調優。livekit/agents 把這些變成幾行 Python

    💡 關鍵: 框架直接處理 WebRTC 與音訊串流細節,讓你用少量程式碼就能做出低延遲語音助手。

    • 自動接收使用者麥克風語音、轉成模型可用的 audio stream
    • 支援多人房間:每個人一條 audio track,可針對某人回應或廣播
    • LiveKit RTC 原生整合,等於直接接上一整套「類 Discord / Zoom 的底層基礎建設」

    實際操作可以從他們的 demo server 開始:

    # 1. 安裝套件
    pip install livekit-agents livekit-plugins-openai
    
    # 2. 跑官方 demo(語音助理)
    python -m livekit.agents.examples.voice_assistant
    

    跑起來後,你就有一個能接 LiveKit 房間、聽語音、回語音的 AI 助手,可以先拿來當「互動介面沙盒」。


    2. 一層抽象包掉 LLM、STT、TTS

    你不需要自己手動串「語音轉文字(STT)→ LLM → 文字轉語音(TTS)」,agents 已經有 plugin 模組

    💡 關鍵: 透過 plugin,你可以像換積木一樣替換不同家的 LLM/STT/TTS,而不必重寫整套語音流程。

    • 官方提供 OpenAI、Anthropic 等插件(livekit-plugins-openai 等)
    • 你可以像換積木一樣,改用別家雲端 LLM 或自建模型
    • 支援多模態(文字 + 語音,未來可加上影像)

    範例:用 OpenAI 做一個最小語音助手(簡化示意)

    from livekit.agents import AutoAgent
    from livekit.plugins import openai
    
    llm = openai.ChatCompletion(model="gpt-4o-mini")
    
    async def handle_event(event, ctx):
        if event.type == "speech":  # 使用者講話片段
            text = event.transcript
            resp = await llm.complete(text)
            await ctx.speak(resp.text)  # 語音回覆
    
    agent = AutoAgent(on_event=handle_event)
    agent.run()
    

    你只需要關心 handle_event 裡「收到什麼 → 要回什麼」,其餘串流、排程、回應時機都交給框架。


    3. 房間管理與多角色 Agent

    如果你想做「會議小秘書 + 客服機器人 + 語音監考官」這類多角色場景,livekit/agents 也有:

    • 房間(room)管理:每個房間有多名參與者與多個 agent
    • 可以設定 agent 只聽某個角色、只回某些人
    • 結合 LiveKit 原本的錄製、串流功能,做後續轉錄、紀錄

    典型用法:開一個房間,裡面放

    • 一個「會議紀錄 agent」專心記錄與摘要
    • 一個「Q&A agent」回覆指定問題
    • 再視需要增加自訂邏輯(例如檢查是否有敏感字)

    適合誰用?幾個具體場景

    1. 線上客服機器人(語音版)

    想像電話客服或網站語音客服:

    • 使用者進房間 → 說出問題
    • agent 即時聽、查 FAQ 或後端 API → 用自然語音回覆
    • 若遇到無法回答的問題,可把通話轉接真人(LiveKit 本來就支援真人進房)

    可以做的行動

    • 先用官方 voice assistant demo 跑起來
    • 把 LLM prompt 改成「客服知識庫助理」,接上你的 FAQ 文檔

    2. 語音家教、語言學習助手

    • 學生講英文/中文 → agent 即時糾錯、給例句
    • 用多房間管理不同學生,讓每個人有自己的語音助教

    可以做的行動

    • 把 LLM 的系統提示改成「語言老師」
    • agent 的回應邏輯改成:先評分、再給建議回覆

    3. 會議即時小秘書

    • 開一個房間,把所有會議成員加入
    • agent 只做三件事:即時紀錄要點、提醒超時、會後產出摘要

    可以做的行動

    • 使用 LiveKit SDK 做會議房間
    • agents 內部實作:每 5 分鐘自動整理一次目前紀錄、會後產出總結

    4. 遊戲語音 NPC

    • 玩家用麥克風跟 NPC 說話
    • agent 根據遊戲狀態(你可以從遊戲伺服器丟資料給 agent)決定 NPC 回應

    可以做的行動

    • 在遊戲伺服器中接 WebRTC / HTTP 與 LiveKit
    • 把玩家座標、任務進度寫進 LLM 的 context

    怎麼開始:最小可行示例

    下面是一條「從零到能跟 AI 說話」的最短路徑,假設你會基本 Python。

    步驟 1:準備環境

    1. 安裝 Python 3.10+(建議用虛擬環境)
    2. 安裝套件:

    bash
    pip install "livekit-agents[full]" livekit-plugins-openai

    1. 申請:

    2. LiveKit Cloud 帳號(或自己架 LiveKit Server)→ 拿到 LIVEKIT_API_KEYLIVEKIT_API_SECRETLIVEKIT_URL

    3. OpenAI API Key(或你要用的其他雲端 LLM)

    步驟 2:跑官方 voice assistant demo

    在專案 repo 裡會有類似示例,可以照以下思路:

    export LIVEKIT_API_KEY=xxx
    export LIVEKIT_API_SECRET=yyy
    export LIVEKIT_URL=wss://your-livekit-domain
    export OPENAI_API_KEY=sk-...
    
    python -m livekit.agents.examples.voice_assistant
    

    啟動後:

    1. 到 LiveKit 提供的範例前端(通常 repodocs 會有連結)
    2. 填上相同的房間名稱
    3. 打開麥克風,你就能跟 AI 說話

    串接主流雲端 LLM:以 OpenAI 為例

    使用 livekit-plugins-openai 可以快速改成使用你想要的 OpenAI 模型,例如 gpt-4ogpt-4o-mini

    💡 關鍵: 只要改動模型與插件設定,就能快速切換不同雲端 LLM,而保留同一套語音互動邏輯。

    示意程式:

    from livekit.agents import AutoAgent
    from livekit.plugins import openai
    
    system_prompt = """你是一個友善的即時語音助手,回答要簡短、口語化。"""
    
    llm = openai.ChatCompletion(
        model="gpt-4o-mini",
        system_prompt=system_prompt,
    )
    
    async def on_event(event, ctx):
        if event.type == "speech" and event.is_final:  # 完整一句話
            text = event.transcript
            resp = await llm.complete(text)
            await ctx.speak(resp.text)  # 由 agents 幫你轉語音播放
    
    agent = AutoAgent(on_event=on_event)
    agent.run()
    

    如果你要換成其他 LLM(Anthropic、DeepSeek 等),通常只要:

    • 換插件(例如 livekit-plugins-anthropic
    • 換初始化那一行,其他事件處理邏輯可以保持不變

    改造成「中文語音助手」

    要讓它好好講中文,關鍵有三個:

    1. STT 支援中文:選擇支援中文語音辨識的模型(例如 OpenAI 的多語 speech model)。

    2. LLM 語言偏好:在 system prompt 裡明講:

    text
    你是一個中文語音助手,只用繁體中文回覆。
    回覆要口語、句子不要太長,方便即時朗讀。

    1. TTS 選中文聲音

    2. 若使用 OpenAI TTS,在初始化時指定中文 voice

    3. 或用本地 TTS(如 Coqui TTS)輸出中文音頻,再由 agents 播放

    實作上,只要調整:

    • plugin 設定中的模型名稱、語言
    • prompt 描述

    其他語音串流邏輯不變。


    部署到雲端或自家伺服器

    livekit/agents 本身就是 Python 程式,你可以當作一般後端服務來部署。

    部署選項概覽

    方案 核心做法 適合誰
    LiveKit Cloud + 雲端 VM LiveKit 用官方雲服務,agents 跑在 AWS / GCP 想先跑起產品、不想維護 RTC 的團隊
    全自架(LiveKit Server + agents) 自己架 LiveKit Server + 部署 agents 對延遲、成本、數據有嚴格控管需求
    Docker / K8s agents 打包成容器,水平擴展 使用 k8s 的公司 / 團隊

    基本部署步驟:

    1. 把你的 agent 程式包成一個 Python app(例如 main.py
    2. uvicorn 或類似方式啟動(若你還要提供 HTTP API
    3. 在雲端 VM 或 K8s 上跑起來,設定環境變數(LIVEKIT_URLAPI keyLLM key
    4. 前端(Web / Mobile / 遊戲客戶端)只要接 LiveKit 的 SDK 就能加入房間

    和官方 GPT-Live 概念的關係

    OpenAI 在文章 Continuous voice interaction with GPT-Live 裡提到:

    GPT-Live 使用無回合(turnless)語音模型與低延遲架構,讓語音對話可以連續、不中斷。

    livekit/agents 跟它的角色有點像「自幹一個 GPT-Live 式的應用框架」

    • GPT-Live:OpenAI 自家的完整產品體驗
    • livekit/agents:你可以拿來做自己的「GPT-Live 版本」,接你選的 LLM、你自家的後端、你想要的 UI

    如果你希望的是:

    • 「我要一個可完全客製、可掛在自家雲上的即時語音 AI 助手」

    livekit/agents 正是為這種需求設計的工具。


    下一步可以做什麼?

    給你一條實作 checklist:

    1. pip 安裝 livekit-agents 與你要的 LLM plugin
    2. 在 LiveKit Cloud 建一個 project,拿到 API key / URL
    3. 跑官方 voice assistant 示例,確認可以講話互動
    4. 把 LLM prompt 改成你的場景(客服 / 家教 / 會議小秘書 / NPC)
    5. 加入最簡單的業務邏輯(查 FAQ、打你自家 API)
    6. 打包成服務部署到雲端,前端用 LiveKit SDK 接進來

    做到第 4 步,你就已經有第一個能上線試用的即時語音 AI app 了。之後再慢慢加功能,而不是一開始就被 WebRTC 和語音串流細節卡住。

    🚀 你現在可以做的事

    • 先在本機安裝 livekit-agents,跑起官方 voice_assistant 示例
    • 申請 LiveKit Cloud 和 OpenAI 等 LLM 帳號,設定好 API key 與環境變數
    • 把示例程式中的 system_prompt 改成你的實際場景(客服、家教或會議),開始調整互動邏輯
  • Haystack 實戰:一天做出公司 AI 助理

    Haystack 實戰:一天做出公司 AI 助理

    📌 本文重點

    • Haystack 把 RAG + Agent 流程統一成框架
    • 少寫檔案處理與檢索 script,快速做公司助理
    • 用範本與工具擴展成可連公司系統的 Agent
    • 一天內跑出第一個可給同事用的 QA 助理

    用 Haystack,你可以少寫一堆 RAG script,把「文件檢索、LLM 調用、Agent 流程管理」統一交給一個開源框架處理。

    官方網站:https://haystack.deepset.ai/


    為什麼不要再自己拼 RAG script?

    多數人做公司內部 AI 助理,走的流程都是:

    1. 自己寫檔案讀取、切 chunk、丟向量庫
    2. 自己串 LLM API,處理 history、retrieval 邏輯
    3. 想加一點工具(查 DB、叫 REST API)又多一支 script

    問題是:
    – 每新增一個資料源或工具,都要重構流程
    – 很難部署成穩定 API 給同事用

    Haystack 的定位很直接:把 RAG + Agent 的骨架先幫你做好,你只需要選模型、選向量庫、加自己工具,就能變成一個可上線的 AI 助理。

    💡 關鍵: 用框架統一 RAG + Agent 流程,可以讓你只專注在選模型、選向量庫與設計工具,少掉大量重複的整合工作。


    核心功能:你可以少寫的三件事

    1. 文件管線:多資料源 + 多向量庫

    Haystack 幫你處理「資料→文件→向量」的整條管線:

    你可以:
    – 選擇資料源:檔案夾、PDF、Markdown、Confluence、Notion 等
    – 選擇向量庫:FAISSWeaviateQdrantElasticsearch
    – 用同一套 API 建 index、更新文件,避免 N 種自訂 script

    實際行動:先在本地建一個簡單文件管線

    pip install haystack-ai
    

    範例(Python):

    from haystack import Pipeline
    from haystack.document_stores import FAISSDocumentStore
    from haystack.nodes import PDFToTextConverter, TextSplitter, EmbeddingRetriever
    
    # 建立向量庫
    doc_store = FAISSDocumentStore(faiss_index_factory_str="Flat")
    
    # 文件處理節點
    converter = PDFToTextConverter()
    splitter = TextSplitter(chunk_size=500, chunk_overlap=50)
    retriever = EmbeddingRetriever(document_store=doc_store, embedding_model="sentence-transformers/all-MiniLM-L6-v2")
    
    indexing = Pipeline()
    indexing.add_node(converter, name="converter", inputs=["File"])
    indexing.add_node(splitter, name="splitter", inputs=["converter"])
    indexing.add_node(retriever, name="retriever", inputs=["splitter"])
    
    indexing.run({"File": {"paths": ["./docs/handbook.pdf"]}})
    

    跑完,你就有一個可檢索的公司文件向量庫。


    2. 問答 / ChatBot 範本:已幫你處理 history + retrieval

    Haystack 內建多種 QA / ChatBot 範本,你不用自己寫:
    – 如何把 user 問題拿去檢索文件
    – 如何把檢索結果塞進 prompt
    – 如何處理多輪對話的 history

    你只要:
    1. 選用哪一個 LLM(雲端或本地)
    2. 綁定上一步建立好的向量庫

    範例:最小 QA API(搭配 Docker 跑一個 stack)

    docker run -p 8000:8000 deepset/haystack:latest
    

    在 Python 中寫一個簡單 QA pipeline:

    from haystack import Pipeline
    from haystack.nodes import PromptNode
    from haystack.document_stores import FAISSDocumentStore
    from haystack.nodes import EmbeddingRetriever
    
    # 連到既有向量庫
    doc_store = FAISSDocumentStore(faiss_index_path="faiss_index")
    retriever = EmbeddingRetriever(document_store=doc_store, embedding_model="sentence-transformers/all-MiniLM-L6-v2")
    
    # LLM(可改成你的雲端 / 本地模型)
    prompt_node = PromptNode("gpt-4o", api_key="YOUR_OPENAI_KEY")
    
    qa = Pipeline()
    qa.add_node(retriever, name="retriever", inputs=["Query"])
    qa.add_node(prompt_node, name="llm", inputs=["retriever"])
    
    result = qa.run({"Query": "我們的休假制度怎麼規定?"})
    print(result["results"][0])
    

    這樣就有一個最小的「公司文件 QA API」,可以包成 FastAPI / Flask 給同事使用。


    3. Agent 範本:多工具呼叫 + 任務分解

    當你想讓助理不只回答文件內容,還能查系統資料或叫內部 API,Haystack 的 Agent 範本就派上用場。

    你可以:
    – 定義多個工具(例如:查工時系統 REST API、查 CRM 客戶資料)
    – 讓 Agent 自己決定何時呼叫哪個工具,並把結果融入回答

    範例:加一個「查內部 REST API」工具

    from haystack.agents import Tool, Agent
    import requests
    
    # 定義工具
    def get_user_vacation(user_id: str) -> str:
        r = requests.get(f"https://internal-api.company.com/vacation/{user_id}")
        return r.json()["summary"]
    
    vacation_tool = Tool(
        name="vacation_lookup",
        func=get_user_vacation,
        description="查詢員工剩餘休假與最近申請紀錄。輸入 user_id。",
    )
    
    agent = Agent(tools=[vacation_tool], model="gpt-4o")
    
    answer = agent.run("幫我查一下員工 1234 的休假狀態,再用中文整理給我。")
    print(answer)
    

    到這一步,你已經從「純 QA 助理」升級成「簡單 Agent」,可以真正接公司系統工作流程。

    💡 關鍵: 一旦把公司內部 REST API 或 DB 封成工具交給 Agent,你的助理就能從「只會看文件」變成「真的能查系統、執行工作」的實用工具。


    適合誰用?兩個具體場景

    1. 公司內部文件助理(Confluence / PDF / Notion)

    目標:讓同事問「新人入職流程」「出差報帳規則」時,直接跟 AI 聊天,不必翻 Confluence / PDF。

    你可以這樣做:
    1. 把公司手冊、流程文件、政策 PDF 匯出到一個資料夾
    2. 用 Haystack 文件管線建立向量庫
    3. 用 QA 範本 + LLM 做一個 /ask-docs API
    4. 用簡單前端(React / internal tool)做一個聊天頁面給同事用


    2. 客戶 FAQ 機器人(網站 / LINE / Web Chat)

    目標:把客服中心常見問題、產品 FAQ 集中到一個聊天介面,讓客戶自助查詢。

    你可以:
    1. 用 Haystack 把 FAQ CSV / 網站內容抓下來做 index
    2. QA pipeline 對接你的 LLM(可以選較便宜模型,參考 AI 成本問題:https://blog.dshr.org/2026/06/ais-affordability-crisis.html
    3. 透過 Agent 工具連到訂單查詢 API,讓客戶問「我的訂單現在在哪?」時能真的查到資料


    怎麼開始:一天內跑出第一個可用助理

    步驟 1:本地快速上手

    1. 建環境

    bash
    python -m venv venv
    source venv/bin/activate # Windows 用 venv\Scripts\activate
    pip install haystack-ai

    1. 選模型
    2. 想省錢、保留隱私:用本地開源模型(例如 DeepSeek 輕量版,部署教學可參考:https://pub.towardsai.net/how-to-run-deepseek-locally-on-your-own-computer-and-the-catch-most-guides-skip-60517629d00d
    3. 想先跑順:用雲端 OpenAI / Anthropic 等

    步驟 2:選一個向量庫

    開發階段,可以先用:
    FAISS:本地測試快速、安裝簡單
    Qdrant / Weaviate:要多機部署再考慮

    把向量庫實例塞到 Haystack document_store,就能用同一套 pipeline 程式碼。


    步驟 3:照官方範例跑出第一個 QA API

    官方入門範例在:https://haystack.deepset.ai/tutorials

    你可以:
    1. 先照「Quickstart RAG」跑一遍(約 30 分鐘)
    2. 把示範資料換成公司文件
    3. 用 FastAPI 包一層 HTTP API:

    from fastapi import FastAPI
    from pydantic import BaseModel
    
    app = FastAPI()
    
    class Query(BaseModel):
        question: str
    
    @app.post("/qa")
    async def qa_endpoint(q: Query):
        result = qa.run({"Query": q.question})
        return {"answer": result["results"][0]}
    

    部署與實戰小訣竅

    1. 用環境變數切換雲端 / 本地模型

    實務上你會想在:
    – 開發:用本地開源模型省錢
    – 上線:用雲端模型提高穩定性

    可以這樣設計:

    import os
    from haystack.nodes import PromptNode
    
    MODEL_NAME = os.getenv("LLM_MODEL", "gpt-4o")
    MODEL_ENDPOINT = os.getenv("LLM_ENDPOINT")  # 本地時填自己的伺服器 URL
    
    prompt_node = PromptNode(MODEL_NAME, api_key=os.getenv("LLM_API_KEY"), url=MODEL_ENDPOINT)
    

    只要在部署時改環境變數,就能切換不同模型和推理後端。


    2. Prompt logging:先看清楚 Agent 在幹嘛

    Haystack 支援把 pipeline 執行資訊輸出,你可以:
    – 把每次 prompt、檢索結果、工具呼叫記錄到 DB / Log 文件
    – 用這些紀錄回頭調整 prompt、優化 Agent 行為

    簡單做法:
    – 在 FastAPI 層加 middleware,把 qa.run() 的輸入輸出存進 DB
    – 固定每週 review 一次錯誤回答,調整資料和 prompt


    3. 評估:不要只看「感覺」,要看準確率

    Haystack 有基礎評估工具,你可以:
    1. 準備 20-50 題真實問題 + 正確回答
    2. 用這些問題跑 pipeline,計算命中率、是否有 hallucination
    3. 調整 chunk 大小、retriever top-k、模型種類

    💡 關鍵: 用 20–50 題標註資料做簡單評估,比只看「用起來感覺不錯」更能掌握準確率與幻覺問題。


    總結:先用框架,把精力留給「你自己的工具」

    如果你已經寫過一次 RAG pipeline,就知道真正麻煩的不是 LLM,而是:文件流程、檢索、上下文管理、工具呼叫。Haystack 把這些基礎骨架收斂成一套可重複使用的框架,你可以把力氣放在:

    • 接公司內部系統(REST API / DB / CRM)
    • 整理與更新文件資料
    • 設計合乎業務邏輯的 Agent 行為

    照本文步驟,一天內做出第一個「真的可以丟給同事用」的公司 AI 助理,之後再慢慢疊功能,而不是每次都從一堆 RAG script 重寫。


    🚀 你現在可以做的事

    • Haystack 官方教學 跑一遍 Quickstart RAG,並把示範資料換成公司文件
    • 在本地用 FAISS + 一個你熟悉的 LLM(如 gpt-4o 或本地 DeepSeek)建立第一個 QA pipeline
    • 為公司內一個具體場景(例如新人入職或客服 FAQ)做出 /qa HTTP API,丟給 2–3 位同事試用並收集回饋
  • 3 小時做出專屬雲端 AI 小幫手

    3 小時做出專屬雲端 AI 小幫手

    📌 本文重點

    • open-agents 是給前端工程師用的雲端 AI Agent 腳手架
    • 幫你處理好 Agent 架構、工具整合與雲端部署樣板
    • 3 小時內就能做出可上線、會調 API 的 AI 小幫手

    用一句話說清楚:Vercel 的開源專案 open-agents 是一套「前端工程師也能駕馭的雲端 AI Agent 腳手架」,幫你處理好架構、模型與工具整合,以及雲端部署樣板,3 小時內就能把一個可上線的 AI 小幫手跑起來。

    💡 關鍵: open-agents 把「3 小時內做出可上線 Agent」變成合理門檻,適合用來做快速 MVP 驗證。


    核心功能:open-agents 幫你省掉哪些麻煩?

    1. 標準化的 Agent 架構:不用自己設計「大腦」骨架

    在 open-agents 裡,你會碰到三個核心概念:

    • Agent:像「大腦」,負責看使用者輸入、決定要不要用工具、整理最後回答。
    • Tool:可以是 REST API、資料庫查詢、檔案讀寫等,Agent 可以選擇呼叫它們。
    • Memory:用來記住上下文或歷史對話,讓 Agent 回答更連貫。

    open-agents 做好的事:

    • 幫你定義好 Agent 的 TypeScript 介面與執行流程
    • 提供現成的 tool 呼叫機制(類似 OpenAI Agents SDK 的工具系統)
    • Memory 設計已經整合到框架中,不用自己處理 token 管理

    你可以做的行動

    • 把原本散落在專案裡的「AI 回答」「API 呼叫」邏輯收斂成一支 Agent
    • 把「查 FAQ」「查內部 API」「整理結果」交給同一個 Agent 流程,而不是寫一堆 if-else

    2. 工具 / 模型整合:一支 Agent 同時用多個 API

    open-agents 預設支援多家模型服務(含 OpenAI,對應最新的 Agents SDK 概念),也很容易接:

    • 便宜模型(例如 OpenAI 最新較低價型號)
    • 你現有的 REST API / GraphQL / 內部服務

    你只要:

    1. .env 放入 API Key(例如 OPENAI_API_KEY
    2. 在程式裡註冊工具,例如一個查訂單狀態的 REST API
    3. 把工具掛在 Agent 上,Agent 自己會決定何時呼叫

    你可以做的行動(兩個實用 workflow 範例):

    1. 客服 FAQ + 後端 API 查詢自動回覆 Bot
    2. FAQ:丟成向量資料或直接塞 prompt
    3. 工具:GET /orders/:id 查訂單,GET /user/:id 查會員
    4. Agent 邏輯:先看能不能從 FAQ 回答,不行再調 API,最後回傳整理好的訊息。

    5. 團隊內部文件檢索 + 任務整理助理

    6. Memory:保留本週的對話與任務
    7. 工具:一支「搜尋 Notion / Google Drive / 自家知識庫」的 API
    8. Agent:自動整理「這週待辦」「文件連結」,丟回 Slack/前端介面

    💡 關鍵: 一支 Agent 就能同時整合多個 API 和便宜模型,讓你用低成本做出實用的自動化工作流程。


    3. 雲端部署樣板:Next.js + Vercel 直接起飛

    open-agents 專案 本身就是一個可以部署到 Vercel 的樣板:

    • 內建 API routes,可以當成你的 Agent 後端
    • 前端可以用 Next.js / React 串同一支 Agent API
    • 與 Vercel 部署流程打通:GitHub 綁定 → 自動 CI/CD

    你可以做的行動

    • 先只改後端的 Agent + tool,保持前端 UI 簡單
    • 驗證 Agent 工作流程沒問題後,再慢慢優化 UI/權限

    適合誰用?幾個具體場景

    1. 前端工程師:想要一個「會用 API 的聊天小幫手」

    你手上可能已經有:

    • 一些 REST API(訂單、會員、專案、ticket…)
    • 一個 React/Next.js 專案

    只要把 open-agents 當成「AI 後端模板」,你就能做出:

    • 客服頁面裡的 FAQ + 訂單查詢 bot
    • 專案管理頁面的「自然語言查詢資料」側邊欄

    2. 團隊技術 owner:要做 MVP 的 AI 助理,但不想先上 MCP 這種大型架構

    根據「MCP for Backend Engineers」那篇文章的建議:

    1 app · 1 team · 1 toolset → 用簡單的 tool calling 就好,MCP 是 scaling 決策,不是起步點。

    如果你目前只有:

    • 一個 Web App
    • 一兩個後端服務

    那 open-agents 就剛好:

    • 架構不重,適合 MVP
    • 想擴展到多工具、多系統再慢慢抽象

    3. 產品/營運團隊身邊的「懂一點前端」的人

    只要會基本 TypeScript/React,照樣可以:

    • 改現有範例成「文件搜尋 + 任務整理」內部助手
    • 讓團隊先用起來,再決定要不要投入更多資源

    怎麼開始:3 小時完成「會調 API 的 AI 小助手」

    下面以「客服 FAQ + 訂單查詢 Bot」為例,走一次從 0 到可部署的流程。

    前提:你會基本 Git、Node.js、TypeScript,並有一個 GitHub 帳號。

    步驟 0:成本 & 免費方案心裡有底

    • open-agents 本身是免費開源
    • 模型費用:可使用 OpenAI 較低價模型,成本通常是每月幾美元起(視流量)
    • 部署:Vercel 有免費方案,適合開發 / 小流量 MVP

    💡 關鍵: 開源 + 便宜模型 + 免費部署方案,讓你可以「先上線再優化」,不必一開始就投入大量預算。


    步驟 1:從 GitHub 模板拉起專案

    1. 打開專案:https://github.com/vercel-labs/open-agents
    2. 點右上角 Use this template → Create a new repository
    3. 在自己的 GitHub 底下建立 repo
    4. 本機 clone:

    bash
    git clone https://github.com/<你的帳號>/<你的-repo>
    cd <你的-repo>
    pnpm install # 或 npm install / yarn

    1. 新增 .env.local,放入:

    bash
    OPENAI_API_KEY=sk-...

    此時行動pnpm dev 跑起來,確認預設的 Agent Demo 正常回覆。


    步驟 2:配置一個模型 + 建立簡單 REST Tool

    假設你要讓 Agent 查詢 GET https://api.example.com/orders/:id

    1. src/tools/orderTool.ts 新增:

    “`ts
    import { z } from “zod”;

    export const orderTool = {
    name: “get_order_status”,
    description: “根據訂單編號查詢訂單狀態”,
    parameters: z.object({
    orderId: z.string().describe(“訂單編號”)
    }),
    execute: async ({ orderId }: { orderId: string }) => {
    const res = await fetch(https://api.example.com/orders/${orderId});
    if (!res.ok) throw new Error(“查詢失敗”);
    const data = await res.json();
    return {
    status: data.status,
    items: data.items,
    total: data.total,
    };
    },
    };
    “`

    1. 在 Agent 定義中(例如 src/agents/supportAgent.ts),把這個 tool 加進去:

    “`ts
    import { createAgent } from “./baseAgent”;
    import { orderTool } from “../tools/orderTool”;

    export const supportAgent = createAgent({
    name: “support”,
    systemPrompt:
    “你是客服小幫手,先用 FAQ 回答,如果使用者提到訂單編號(像是 #12345),再用工具查詢訂單狀態,最後用中文整理回答。”,
    tools: [orderTool],
    });
    “`

    1. 模型設定通常在 baseAgent 或 config 檔裡(視專案結構),選一個便宜模型,例如:

    ts
    model: "gpt-4.1-mini" // 範例,視官方文件更新調整

    此時行動:在本機跑 server,從 Agent API 打一個 request,例如:

    「我有一筆訂單 #12345 ,請幫我看目前出貨狀態」

    觀察 log,確認 Agent 會:

    • 自動偵測訂單編號
    • 呼叫 get_order_status 工具
    • 整理成可讀中文回答

    步驟 3:接一個簡單前端(Next.js / React)

    如果你用 Next.js

    1. /app/api/chat/route.ts 建一個 API route,轉發到 supportAgent

    “`ts
    import { NextResponse } from “next/server”;
    import { supportAgent } from “@/agents/supportAgent”;

    export async function POST(req: Request) {
    const { message } = await req.json();
    const reply = await supportAgent.run({ input: message });
    return NextResponse.json({ reply });
    }
    “`

    1. 在前端頁面建一個最簡聊天 UI:

    “`tsx
    “use client”;
    import { useState } from “react”;

    export default function ChatPage() {
    const [input, setInput] = useState(“”);
    const [messages, setMessages] = useState([]);

     const send = async () => {
       const res = await fetch("/api/chat", {
         method: "POST",
         headers: { "Content-Type": "application/json" },
         body: JSON.stringify({ message: input }),
       });
       const data = await res.json();
       setMessages((m) => [...m, `你:${input}`, `Bot:${data.reply}`]);
       setInput("");
     };
    
     return (
       <div>
         <div>{messages.map((m, i) => (
           <div key={i}>{m}</div>
         ))}</div>
         <input value={input} onChange={(e) => setInput(e.target.value)} />
         <button onClick={send}>送出</button>
       </div>
     );
    

    }
    “`

    此時行動:在本機 UI 輸入訂單問題,看是否能走完整流程「輸入問題 → Agent 決定要不要調 API → 回傳整理後答案」。


    步驟 4:一鍵部署到 Vercel

    1. 把程式 push 到 GitHub
    2. Vercel 登入 → New Project → 選你的 repo
    3. 在 Vercel Project 的 Environment Variables 中填入:
    4. OPENAI_API_KEY
    5. 其他內部 API 的 token(若有)
    6. 部署完成後,拿到一個網址,例如 https://your-agent.vercel.app

    成本提示

    • 小流量下 Vercel 免費方案通常足夠
    • 模型費主要取決於:使用人數 × 對話長度 × 模型單價
    • 有預算疑慮時,可以先用小模型做 MVP,流量上來再調整

    延伸玩法 & 心智模型

    • 想接更多內部系統?就把每個系統包成一個 tool,掛在同一個 Agent 或拆成多個 Agent。
    • 想做內部文件助理?多加一個「文件搜尋 API」,Agent 再負責整理成待辦或重點摘要。
    • 覺得專案變大、團隊變多?再考慮引入 MCP / API Gateway,把目前的 tools 重構即可。

    如果你今天只想要「一個會用你的 API 的雲端 AI 小幫手」,照著上面四個步驟做完,你就已經比大多數還停在概念階段的人,多了一個真正跑在雲端的 Agent。動手開一個 open-agents 專案,從一個最簡單的 tool 開始,就行了。

    🚀 你現在可以做的事

    • 開啟 open-agents GitHub 專案,用 Use this template 建一個自己的 repo
    • 在專案裡實作一個最簡單的 REST tool(例如查訂單或查專案狀態),掛到一支自訂 Agent 上
    • 用 Vercel 免費方案部署這個 Agent,丟給團隊實際試用並收集回饋