第三章 技术选型与核心组件

前两章主要回答的是 为什么做做什么,那么从这一章开始,就真正进入技术部分。

这一章的目标不是讲代码,而是让读者知道:

为什么最终选择这一套技术栈,而不是网上那些五花八门的方案。

这一章的定位应该属于架构设计篇


没有最好的技术,只有最适合当前阶段的技术。

很多人在做 AI Agent 时,一开始就陷入了一个误区。

今天看到 LangGraph 很火,就去研究 LangGraph;明天看到 AutoGen,又重新推倒重来;后天 MCP 火了,又开始全部重构。

最后折腾了几个月,AI 没做出来,时间倒是全部浪费了。

而我做这个企业微信 AI 助手时,给自己定了一条原则:

一切技术,只为解决问题服务。

所以,在真正开始开发之前,我先确定了整个系统应该满足哪些要求。


3.1 我希望它具备哪些能力?

我给整个 AI 助手列了一张需求清单。

第一,它必须能够接收企业微信消息。

用户发送一句话。

例如:

今天上海天气怎么样?

系统应该能够立即收到这条消息。


第二,它必须能够调用大模型。

收到消息之后,不是自己写死回复,而是把内容发送给 DeepSeek、OpenAI 或 Claude。

例如:

用户:
今天上海天气怎么样?

AI 返回:

今天上海多云,
最高温度 32℃,
建议......

整个过程完全自动完成。


第三,它必须支持上下文。

不能每一句话都是新的聊天。

例如:

用户:
帮我写一封邮件

AI:
好的,请告诉我主题。

用户:
离职申请

AI 必须知道:

第二句话是在继续第一句话。

所以:

必须保存 Session。


第四,它必须能够调用工具(Tool)。

例如:

查天气
查数据库
发邮件
查询库存
调用 ERP

未来这些都会变成 AI 的能力。

因此:

Agent 必须支持 Tool Calling。


第五,它必须方便以后扩展。

今天只有企业微信。

以后可能还有:

  • 微信公众号
  • 飞书
  • 钉钉
  • Telegram
  • Slack
  • WhatsApp
  • Web Chat

所以:

消息入口不能写死。

必须做成统一 Gateway。


最后,也是最重要的一点。

整个系统必须:

稳定。

我不希望每天半夜两点服务器报警。

也不希望升级一个依赖,全系统崩掉。

所以:

稳定性,比炫技更重要。


3.2 为什么不用一堆现成平台?

很多朋友都会问:

为什么不用 Dify?

为什么不用 Coze?

为什么不用 FastGPT?

为什么不用 LangGraph?

其实,我一开始都试过。

它们都有自己的优点。

但是对于企业微信 AI 助手来说,都存在一些共同的问题。

例如:

很多平台都是:

平台
↓

调用 LLM

↓

输出

它们非常适合:

  • AI 工作流
  • AI 应用
  • ChatBot

但是:

对于企业微信来说。

真正困难的地方不是 AI。

而是:

消息入口。

例如:

企业微信要求:

  • URL 验证
  • AES 加密
  • 签名校验
  • XML
  • 回调
  • Token
  • EncodingAESKey

这些并不是 AI 平台负责的。

所以:

最后还是需要自己写接口。

既然入口必须自己写。

那么:

后面的 AI 部分,也可以自由选择。

这样系统反而更加灵活。


3.3 最终确定的整体架构

经过多次尝试,我最终确定了下面这套架构。

            企业微信

                 │

                 │ HTTPS

                 ▼

          OpenResty / Nginx

                 │

                 ▼

         FastAPI Gateway

                 │

        ┌──────────────┐
        │ 消息解密      │
        │ XML解析      │
        │ Session管理  │
        └──────────────┘

                 │

                 ▼

          AI Service

                 │

        ┌──────────────┐
        │ DeepSeek      │
        │ OpenAI        │
        │ Claude        │
        └──────────────┘

                 │

                 ▼

          Tool Manager

      ┌─────┬─────┬──────┐
      │天气 │数据库│ ERP │
      └─────┴─────┴──────┘

                 │

                 ▼

          回复企业微信

整个系统其实只有几个核心模块。

但是职责划分非常清晰。

每一层只做自己的事情。

这也是大型系统设计的重要原则:

高内聚,低耦合。


3.4 为什么选择 FastAPI?

这里很多人会问:

为什么不用 Flask?

毕竟 Flask 更简单。

我的答案很直接:

因为 FastAPI 更适合现代 AI 应用。

它有几个明显优势。

第一:

异步。

调用 AI 接口,本身就是网络 IO。

FastAPI 天然支持 async。

高并发性能明显更好。

第二:

类型提示。

接口参数一目了然。

开发效率非常高。

第三:

自动生成 API 文档。

启动以后。

直接访问:

/docs

所有接口立即可见。

调试效率极高。

第四:

社区已经成为 AI 项目的事实标准。

几乎所有新的 AI SDK。

第一时间都会支持 FastAPI。

因此:

我没有理由继续使用 Flask。


3.5 为什么选择 OpenResty?

很多教程直接暴露 Python 服务。

例如:

8000

公网直接访问。

这种方式我并不推荐。

我的做法是:

Internet

↓

443 HTTPS

↓

OpenResty

↓

127.0.0.1:8000

这样做有几个好处。

第一:

SSL 全部交给 OpenResty。

第二:

统一域名。

第三:

统一日志。

第四:

支持限流。

第五:

以后可以做负载均衡。

甚至:

未来增加多个 AI 节点。

都不需要修改 Python。

OpenResty 就可以完成流量分发。


3.6 为什么选择 DeepSeek?

目前的大模型越来越多。

OpenAI。

Claude。

Gemini。

Qwen。

DeepSeek。

为什么最终选择 DeepSeek?

原因很简单。

对于国内开发者来说。

它具有几个明显优势。

首先:

中文能力非常强。

其次:

API 成本低。

第三:

响应速度快。

第四:

兼容 OpenAI API。

意味着:

几乎所有 SDK。

都可以直接接入。

未来如果更换模型。

甚至不用改业务代码。

只需要修改:

Base URL

API Key

Model Name

即可完成切换。

这种架构叫做:

模型解耦。


3.7 为什么不用 LangChain?

很多 AI 教程都会使用 LangChain。

它确实很强。

但是:

对于当前这个项目。

我最终没有采用。

原因只有一句话。

过度设计。

我们的需求其实很简单。

收到消息

↓

调用模型

↓

返回结果

整个流程不到几十行代码。

如果引入 LangChain。

反而会增加:

  • 学习成本
  • 调试成本
  • 升级成本
  • 依赖冲突

等未来真正需要:

  • Memory
  • Agent
  • Tool Calling
  • 多 Agent

再逐步引入也完全来得及。

软件开发中有一句经典的话:

You Aren’t Gonna Need It(YAGNI)——你不会需要它。

提前设计大量暂时用不到的能力,往往会让系统变得更复杂,而不是更优秀。


本章小结

技术选型,并不是追逐最新、最热门的框架,而是根据项目目标做出权衡。

对于企业微信 AI 助手来说,我们真正需要的是一套能够长期稳定运行、便于扩展、易于维护的架构。

因此,本书最终采用了以下核心技术组合:

  • OpenResty:统一 HTTPS 入口、反向代理、安全控制与流量管理。
  • FastAPI:实现企业微信回调接口、消息处理和 AI 服务。
  • DeepSeek(兼容 OpenAI API):作为默认的大模型服务,同时保留切换其他模型的能力。
  • 企业微信回调机制:负责消息接收、AES 解密、签名校验和响应。
  • Tool Manager(工具层):统一封装天气查询、数据库、ERP、邮件等业务能力。
  • Session 管理:维护多轮对话上下文,为后续 Agent 能力打下基础。

这套架构遵循了"入口统一、业务解耦、模型可替换、工具可扩展"的设计思想,也将成为后续所有章节实现的基础。

下一章,我们将正式进入系统架构设计,逐步搭建整个企业微信 AI 助手的完整工程框架。

这一章已经完成了技术选型部分。下一章建议进入《第四章:系统整体架构设计》,将开始绘制整体架构图,并详细拆解消息流、模块职责、目录结构以及部署拓扑,为后续编码做好准备。