企业微信API二次开发:接入 AI 大模型实现外部群智能问答

在社群运营与客户服务场景中,将 AI 大模型(如 DeepSeek、OpenAI 等)与企业微信外部群打通,能够大幅降低人工客服答疑成本,实现 24 小时实时响应。

本文将演示如何利用企微二次开发 API 与 Webhook 回调,结合 LLM 构建一个具备上下文记忆能力的外部群智能问答助手。

一、 整体系统架构设计

系统通过 Webhook 接收企微群消息,将其发送给大模型进行处理,再将生成的结果异步回复至对应的外部群:

复制代码
 [企微外部群消息] ──► [企微 API 节点] ──► (Webhook 回调) ──► [开发者 Python 后端]
                                                                  │
                                                        (请求 LLM 大模型 API)
                                                                  │
 [企微外部群消息] ◄── [企微 API 节点] ◄── (HTTP 发送接口) ◄────────┘

环境准备提示 :在开始接入前,关于企微消息回调格式与发送消息的接口规范,可先查阅 企微二次开发 API 文档 了解完整的 Request / Response 字段定义。

二、 核心代码实现(Python + DeepSeek / OpenAI API)

以下为完整的可运行服务端代码示例,实现了接收群消息 ➔ 智能判断 ➔ 调用大模型 ➔ 回复群消息的完整闭环。

python 复制代码
from flask import Flask, request, jsonify
import requests
import json

app = Flask(__name__)

# 配置参数
QIWE_API_BASE = "http://your-qiwe-api-server"
DEEPSEEK_API_KEY = "your-deepseek-api-key"

def call_llm(prompt):
    """调用大模型 API 获取回答"""
    url = "https://api.deepseek.com/v1/chat/completions"
    headers = {
        "Authorization": f"Bearer {DEEPSEEK_API_KEY}",
        "Content-Type": "application/json"
    }
    data = {
        "model": "deepseek-chat",
        "messages": [
            {"role": "system", "content": "你是一位专业且礼貌的企业客服助手,回答要简明扼要。"},
            {"role": "user", "content": prompt}
        ]
    }
    try:
        res = requests.post(url, headers=headers, json=data, timeout=10)
        return res.json()['choices'][0]['message']['content']
    except Exception as e:
        return "不好意思,客服系统正忙,请稍后再试。"

def send_group_text(guid, chat_id, text):
    """通过企微 API 发送群消息"""
    url = f"{QIWE_API_BASE}/work/message/sendtext"
    payload = {
        "guid": guid,
        "content": {
            "chat_id": chat_id,
            "msg_type": 1,
            "text": text
        }
    }
    requests.post(url, json=payload)

@app.route('/webhook/group_msg', methods=['POST'])
def handle_group_msg():
    data = request.json
    
    # 解析企微群消息事件
    if data.get('event_type') == 'GROUP_MSG_RECEIVED':
        guid = data.get('guid')
        content = data.get('content', {})
        chat_id = content.get('chat_id')
        msg_text = content.get('text', '')
        
        # 触发条件(例如包含 @机器人 或特定前缀)
        if msg_text.startswith("@客服"):
            query = msg_text.replace("@客服", "").strip()
            
            # 1. 请求大模型
            ai_reply = call_llm(query)
            
            # 2. 回复群消息
            send_group_text(guid, chat_id, ai_reply)
            
    return jsonify({"code": 0, "msg": "success"})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

三、 优化与避坑指南

  1. 异步队列(MQ)隔离 :大模型生成回答通常需要 1-3 秒,Webhook 收到消息后应立即返回 200 OK,将任务推入 Redis/RabbitMQ 异步处理,防止超时导致的重复回调。

  2. 上下文对话管理 :如需支持多轮对话,建议在 Redis 中按 chat_id + user_id 维护历史消息 List,控制 Token 长度。

相关推荐
2601_955662468 分钟前
AI 配音工具 7 款实测:短视频、影视解说、小说推文音质横向对比
人工智能·音视频·语音识别·视频
AI创界者18 分钟前
PinkCherry-MiniMax-H3 全能AI视频整合包:8G显存开箱即用,支持首尾帧/超分补帧/自动提示词
人工智能·aigc
罗西的思考24 分钟前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
Mr数据杨26 分钟前
GNSS伪距误差预测实战案例 从Kaggle回归任务到城市定位误差补偿
人工智能·数据分析·kaggle竞赛
冬奇Lab30 分钟前
Code Agent 解剖(15):Harness 设计之五——可观测性
人工智能·开源
冬奇Lab31 分钟前
开源项目第203期:Cumora — AI Agent 与人类同队的跨平台团队协作工具
人工智能·开源·资讯
天远Date Lab35 分钟前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
甲维斯42 分钟前
Claude Opus5 开发中转应用平台的5万字项目文档!
人工智能
hahaha60161 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
荷蒲1 小时前
【小白量化Qbuddy】用AI设计miniQMT指标公式计算量化平台
人工智能·python·机器人