3 步用 Python + 大模型搭一个微信公众号’AI 代聊秘书’:有约饭需求 AI 帮你先聊

· 小白基础技术分享

微信内测”AI 社交”功能在 36 氪 9 月初被曝光:用户发出”约饭、组局、请教”这类需求时,AI 可以代替你先去和对方私聊、确认时间地点,整理好要点再回你。这件事开发者今天就能用公开 API 复刻——一个挂在服务器上的 Python 小程序 + 一个 LLM API + 微信公众号 Webhook。

3 步用 Python + 大模型搭一个微信公众号'AI 代聊秘书':有约饭需求 AI 帮你先聊封面

整个流程跑通后,你的公众号就具备”代聊”能力:用户发”帮我问下周和老张吃饭有没有空”,AI 自动用预设人设去私聊、收回复、整理成 1 行话发回主会话。

前置条件

– 一台云服务器或 NAS(2 核 2GB 起,需要长期在线)

– 一个微信公众号(订阅号或个人号都行,需要客服消息权限)

– 一个 LLM API Key(OpenAI、DeepSeek、智谱、月之暗面任一)

第 1 步:搭建 Web 服务接收微信回调

微信服务器要求 80/443 端口可用,且需要响应 signature 校验。直接用 FastAPI 起步。

pip install fastapi uvicorn wechatpy openai
# main.py
from fastapi import FastAPI, Request
from wechatpy import parse_message
from wechatpy.replies import TextReply
import openai, os, json

app = FastAPI()
WECHAT_TOKEN = os.environ["WX_TOKEN"]   # 自定义令牌
client = openai.OpenAI()

# 关注/收到消息时的入口
@app.post("/wx/cb")
async def wx_callback(request: Request):
    msg = parse_message(await request.body())
    if msg.type == "text":
        user_text = msg.content
        # 第二步:让 LLM 代聊
        ai_reply = await ai_da_liao(user_text, msg.source)
        reply = TextReply(message=ai_reply, message=msg)
        return reply.render()
    return "success"

第 2 步:写”代聊”Prompt 和人设

代聊的关键是让 LLM 知道三件事:用户的目标、对话对象是谁、AI 自己的人设。Prompt 这样写:

SYSTEM_PROMPT = """你是用户的"AI 代聊秘书",人设:礼貌、简洁、不超过 30 字。
目标:替用户发起一次简短对话,明确 1 个具体问题。
规则:
- 用中文,口语化
- 一句话内说清目的
- 末尾加一句"如不方便请回复'X',我转告 ta"
示例:用户说"问老张明晚能不能打球",你就回"老张你好,我替朋友问下,明晚 7 点老地方羽毛球你能来吗?" """

async def ai_da_liao(user_text: str, user_id: str) -> str:
    resp = client.chat.completions.create(
        model="gpt-4o-mini",   # 任何轻量模型都行
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": f"用户需求:{user_text}"}
        ],
        max_tokens=120,
        temperature=0.4,
    )
    return resp.choices[0].message.content.strip()

**小技巧**:把每位用户的历史对话存到 SQLite,下次再发起时让 LLM 看到”上次老张说他周三加班”,代聊会更精准。

第 3 步:把回复推回主会话

微信个人号无法主动发消息(除了订阅号的客服消息接口),所以”AI 代聊”在实际场景里要走企业微信或第三方托管。最稳的折中方案:让公众号充当”AI 输出窗口”,把代聊结果发给用户本人,由用户手动转发。

# 在 ai_da_liao 后追加:把代聊结果回给用户
import httpx
async def push_back(user_openid: str, content: str):
    # 通过客服消息接口发回去(需要 access_token,这里省略获取逻辑)
    async with httpx.AsyncClient() as cli:
        await cli.post(
            f"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={ACCESS_TOKEN}",
            json={"touser": user_openid, "msgtype": "text",
                  "text": {"content": f"📩 代聊话术已生成:\n{content}"}}
        )

启动服务:

uvicorn main:app --host 0.0.0.0 --port 8000
# 微信公众平台 → 服务器配置 → URL 填 http://你的IP:8000/wx/cb
# Token 填 WECHAT_TOKEN 环境变量值

成功验证

– 关注公众号,发送”帮我问小李今晚能不能视频”

– 3 秒内收到 AI 代聊话术(带 emoji、分行、口语化)

– 把话术手动复制发给小李,小李回复后再次输入”小李说可以,7 点开始”

– AI 自动整理为:”✅ 今晚 7 点视频,已确认”

常见失败

| 现象 | 原因 | 修复 |

|—|—|—|

| 微信提示”token 校验失败” | 签名算法不匹配 | 用 `wechatpy.utils.check_signature` 验证 GET 请求里的 signature |

| 用户发消息没反应 | 公众号没开”客服消息” | 微信公众平台 → 客服消息 → 启用 |

| AI 回复超字数被截断 | 微信 2048 字节限制 | `max_tokens=120` + 后处理检测长度 |

| API 调用超时报错 | 国内访问 OpenAI 不稳 | 换 DeepSeek / 智谱 GLM-4 / Kimi,API 兼容 OpenAI 协议 |

这套框架改一改还能做”AI 日程助理”、”AI 投诉模板生成”、”AI 节日祝福批量发送”。**核心是把 LLM 当成”第二大脑”,让它替你完成第一轮沟通**。


🔥 关注 LC 智趣厅,每天 8 篇 AI / 科技精选

👇 关注不错过,明早 7:30 见


— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn

Scroll to Top
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅