我花了12美元在4个AI问题上。随后Linux Foundation将MCP官方化。

发布: (2025年12月15日 GMT+8 21:10)
6 min read
原文: Dev.to

Source: Dev.to

为什么我选择 Assistants API(以及你可能也会选择的原因)

说实话:Assistants API 真是令人印象深刻。开发者体验非常棒。以下是吸引我的地方:

承诺

  • 开箱即用的 RAG
  • 持久化会话线程
  • 自动工具调用
  • 文件上传与即时查询
  • “开箱即用”,2 小时搞定

吸引力

作为 FPL Hub(2,000+ 用户,500 K+ 日 API 调用)的运营者,我深知托管基础设施的价值。Assistants API 给人一种合适的抽象层感觉。为什么要自己管理分块策略、向量存储和上下文窗口,而 OpenAI 已经帮你搞定了?

我上传了 PDF,提问,得到了准确的回答。原型运行得很漂亮——直到我查看账单。

没有人提醒你的隐藏费用结构

OpenAI 的定价页面列出:

  • GPT‑4o:$5 输入 / $15 输出 每 1 M 令牌
  • Code Interpreter:$0.03 每次会话
  • File Search:$0.10 / GB / day

看起来还算合理,但实际费用可能让人吃惊。

我的“简单”查询的真实计算

PDF (10 pages, ~5K tokens)

Vector Store automatic chunking → 50,000 tokens

Retrieval augmentation per query → 20,000 tokens

Context window (conversation history) → 8,000 tokens

Tool call overhead → 3,000 tokens

Your actual query + response → 250 tokens
────────────────────────────────────
Total per question: ~81,000 tokens = $0.81

四个问题的费用分解

  • 模型费用:$3.24(324 K 令牌)
  • Code Interpreter 会话:$0.06
  • File Search 存储(3 天):$0.30
  • 隐藏的检索费用:$8.87

总计: $12.47

成本为何会螺旋式上升

  1. 令牌乘法你无法控制——Assistants API 会自动对文档进行分块以供向量搜索。一个 5 K 令牌的 PDF 会在存储中变成约 50 K 令牌,每次检索还会进一步乘算。
  2. 上下文窗口膨胀——每一次后续提问都会重新加载完整的会话历史。第 1 条问题花费 $0.81;到第 4 条时,由于累计的上下文,费用升至 $3.50。
  3. 存储费用日积月累——$0.10 / GB / day 迅速累加:
    • 1 GB 文档 ≈ $3 /月
    • 10 GB 知识库 ≈ $30 /月
  4. 隐藏的检索费用——File Search 工具不仅检索块,还会将这些块加入每个查询的提示中,导致嵌入、相似度搜索以及提示令牌费用乘以会话历史。

真实场景的成本预测

客服机器人(1 K 对话/天)

  • 每次对话 5 条消息
  • 2 份知识库文档(≈500 页)
  • 存储:$6 /天 → $180 /月
  • 查询:约 300 K 令牌/天 → $300 /天

总计: ≈ $9 180 /月

文档分析应用

  • 用户上传 5 份 PDF(≈250 页)
  • 每份文档 10 个问题,每个问题 3 次追问

每位用户会话成本: $45
100 位用户: $4 500 /月

我的实际使用案例

  • 4 个测试问题,1 份小 PDF(10 页),2 条会话线程

成本: $12.47 → 预计 $3 100 /月(在 1 K 用户时)。

MCP 替代方案:相同功能,成本降低 99 %

什么是 MCP?

Model Context Protocol(MCP)是一个用于将 AI 模型连接到数据源和工具的开放标准——可以把它想象成 AI 的 USB‑C。截止 2025 年 12 月 9 日,它已成为 Linux 基金会的官方项目。

创始成员包括 Anthropic、OpenAI、Google、Microsoft、AWS、Cloudflare、Bloomberg 和 Block。

架构对比

传统 Assistants API 流程

flowchart LR
    A[User] --> B[OpenAI API]
    B --> C[Thread Storage]
    B --> D[Vector Store]
    B --> E[GPT‑4]
    E --> F[Response]
    style C fill:#f9f,stroke:#333,stroke-width:2px
    style D fill:#f9f,stroke:#333,stroke-width:2px

计费组件: 线程存储($0.10 / GB / day)、向量存储检索、令牌使用。

MCP 流程

flowchart LR
    A[User] --> B[MCP Client]
    B --> C[Your MCP Server]
    C --> D[Cloudflare Workers]
    D --> E[Any Model]
    E --> F[Response]

你可以自行控制存储和检索;Cloudflare Workers 提供每月 10 M 免费请求。

关键架构差异

  1. 客户端记忆——会话状态保存在客户端,消除了每日存储费用。

  2. 多模型支持——一个 MCP 服务器可以路由到任意模型:

    // Switch models per request
    const response = await mcp.callTool("search_documents", {
      query: userQuery,
      model: "groq/llama-3.3-70b-versatile" // Free tier
    });
  3. 在 Cloudflare Workers 上的边缘部署——几分钟内全球部署,无冷启动:

    export default {
      async fetch(request, env) {
        const mcp = new MCPServer(env);
        return mcp.handle(request);
      }
    };
  4. 完整的成本控制——在发送请求前,你可以自行决定分块上限、缓存策略和模型定价:

    const searchConfig = {
      maxChunks: 3,
      chunkSize: 500,
      cacheStrategy: "lru",
      model: "groq-free"
    };
    
    const estimatedCost = calculateTokens(chunks) * modelPrice;
    if (estimatedCost > threshold) {
      // fallback to cheaper model or reduce chunks
    }

我的 MCP 实现

// MCP Server on Cloudflare Workers
import { MCPServer } from "@modelcontextprotocol/sdk";

interface MCPTools {
  search_documents: (query: string, maxChunks?: number) => Promise;
  analyze_pdf: (fileId: string) => Promise;
  summarize_conversation: () => Promise;
}

// Cost breakdown for the same 4 questions:
const costs = {
  workersAI_embeddings: 0.011 / 1000, // $0.001 per 1 K tokens (example)
  vectorize_storage: 0,               // Included in free tier
  // ...additional cost items as needed
};

使用 MCP,完成同样的四问工作流只需花费 $12.47 的一小部分,展示了开放协议如何显著降低 AI 驱动应用的开支。

Back to Blog

相关文章

阅读更多 »