春联生成模型-中文-base实战手册对接钉钉机器人实现群内生成春联春节临近你是不是还在为写不出有新意的春联而发愁或者作为团队管理者想给群里的小伙伴们来点不一样的春节祝福今天我就带你玩点新鲜的把AI春联生成器“搬”到钉钉群里想象一下在钉钉工作群里一下机器人输入“发财”、“健康”这样的吉祥词几秒钟后一副对仗工整、寓意美好的专属春联就出现在群里。这不仅能活跃团队气氛还能让大家感受到科技带来的年味。本文将手把手教你如何将“春联生成模型-中文-base”这个强大的AI模型与钉钉机器人对接打造一个属于你自己团队的“AI春联大师”。整个过程清晰明了即使你是编程新手也能跟着一步步实现。1. 项目核心认识春联生成模型在开始动手之前我们先快速了解一下今天要用到的核心武器。1.1 模型是什么“春联生成模型-中文-base”是由达摩院AliceMind团队开发的专门模型。它的本事很简单却非常实用你给它任意两个字的祝福词比如“如意”、“平安”它就能自动生成一副与这个词相关的、上下联对仗、横批点睛的完整春联。这个模型是基于AliceMind团队强大的PALM 2.0中文基础生成模型PALM 2.0预训练生成模型-中文-base专门训练而成的。PALM模型就像一个精通写作的“大脑”经过海量文本的学习掌握了中文的语言规律和创作技巧。而春联模型则是在这个“大脑”的基础上又专门学习了成千上万副传统春联从而具备了针对春联这一特殊文体进行创作的能力。1.2 模型怎么用模型已经封装好并提供了一个非常友好的Web界面供我们使用。你不需要理解复杂的深度学习代码只需通过浏览器访问即可。访问路径在你部署的环境里运行以下前端服务脚本python /usr/local/bin/webui.py运行后在浏览器中打开相应的地址通常是http://localhost:7860或类似就能看到操作界面。使用界面加载模型初次打开页面系统会自动加载模型请耐心等待片刻。输入关键词在输入框中填入任意两个字的吉祥词例如“吉祥”、“奋进”。生成春联点击“生成”按钮模型就会快速创作出一副春联并显示在页面上。界面直观易用让你能立即体验AI写春联的乐趣。但我们的目标不止于此我们要让它能响应钉钉群里的召唤。2. 环境准备与核心思路我们的目标是将Web界面上的功能变成一个可以通过网络API调用的服务这样钉钉机器人才能与之通信。2.1 核心思路拆解整个流程可以概括为以下几步封装模型为API将春联生成模型的调用逻辑包装成一个HTTP接口。当这个接口收到一个包含关键词的请求时它就调用模型生成春联并把结果返回。部署API服务将这个接口服务部署在一台能被公网访问的服务器上或使用内网穿透工具。配置钉钉机器人在钉钉群里创建一个自定义机器人并设置其“消息接收地址”为我们上一步部署的API地址。实现交互逻辑编写API服务的逻辑使其能够正确解析钉钉机器人发来的消息提取关键词调用模型并将生成的春联格式化成钉钉消息再发回群里。听起来有点复杂别担心我们会用最简单的代码实现它。2.2 基础环境准备确保你的运行环境已经具备以下条件Python 3.7这是运行模型和Web服务的基础。模型已就绪确保webui.py可以正常运行即春联生成模型的基础功能是正常的。安装必要库我们将使用Flask这个轻量级框架来创建API。通过pip安装pip install flask3. 实战步骤从模型到钉钉机器人接下来我们进入具体的操作环节。请一步一步跟着做。3.1 第一步创建模型调用函数首先我们需要一个能直接调用春联生成模型核心功能的函数。由于模型已经提供了Web界面其背后一定有相应的Python函数。我们需要找到并调用它。通常模型的核心生成逻辑会封装在一个类或函数中。为了本教程的通用性我们假设你已经找到了这个函数它可能叫做generate_couplet(keyword)。你需要根据模型的实际代码进行调整。这里我们创建一个名为couplet_service.py的文件并写入以下示例代码。你需要将# TODO: 替换为实际调用模型生成春联的代码这部分替换成真实的模型调用逻辑。# couplet_service.py import json import time class CoupletGenerator: 春联生成服务类。 注意这里的generate方法是一个示例你需要根据实际模型代码进行替换。 def __init__(self): # 这里可以放置模型初始化代码如果模型需要显式加载 # 例如self.model load_your_model() print(春联生成器初始化完成示例。) pass def generate(self, keyword): 根据两个字的吉祥词生成春联。 参数: keyword (str): 两个字的吉祥词如“吉祥”、“安康”。 返回: dict: 包含上联、下联、横批的字典。 # 输入验证 if not keyword or len(keyword.strip()) ! 2: return { success: False, message: 请输入两个字的吉祥词如‘如意’、‘平安’。 } clean_keyword keyword.strip() # TODO: 替换为实际调用模型生成春联的代码 # 这里是一个模拟示例。你需要替换成类似下面的真实调用 # result your_model_predict(clean_keyword) # 真实调用可能会返回一个包含上下联和横批的元组或字典。 print(f[模拟] 收到关键词: {clean_keyword}正在生成春联...) time.sleep(0.5) # 模拟生成耗时 # 模拟数据 - 请务必替换 simulated_couplet { success: True, keyword: clean_keyword, 上联: f{clean_keyword}临门添百福, 下联: f平安入户纳千祥, 横批: f喜迎新春 } # 假设真实调用返回格式为 (上联, 下联, 横批) # 你可以这样转换 # real_up, real_down, real_horizontal your_real_model_call(clean_keyword) # simulated_couplet { # success: True, # keyword: clean_keyword, # 上联: real_up, # 下联: real_down, # 横批: real_horizontal # } return simulated_couplet # 全局实例 generator CoupletGenerator() def get_couplet_for_keyword(keyword): 对外提供的生成函数 return generator.generate(keyword) if __name__ __main__: # 本地测试 test_result get_couplet_for_keyword(如意) print(json.dumps(test_result, ensure_asciiFalse, indent2))关键点你必须查阅webui.py或其相关的模型代码找到实际生成春联的函数并替换掉上面的模拟代码。这是整个项目成功的基础。3.2 第二步构建Flask API服务有了生成函数我们现在用Flask创建一个HTTP接口。创建app.py文件。# app.py from flask import Flask, request, jsonify import json from couplet_service import get_couplet_for_keyword app Flask(__name__) app.route(/) def index(): return 春联生成API服务已启动。请使用 /generate 端点。 app.route(/generate, methods[POST]) def generate_couplet_api(): 生成春联的API接口。 预期接收JSON格式数据{keyword: 吉祥} data request.get_json() if not data or keyword not in data: return jsonify({ success: False, message: 请求格式错误请提供JSON数据并包含keyword字段。 }), 400 keyword data[keyword] result get_couplet_for_keyword(keyword) return jsonify(result) app.route(/generate_get, methods[GET]) def generate_couplet_api_get(): GET请求方式的生成接口方便测试。 使用方式 /generate_get?keyword吉祥 keyword request.args.get(keyword, ) if not keyword: return jsonify({ success: False, message: 请通过URL参数提供keyword例如?keyword吉祥 }), 400 result get_couplet_for_keyword(keyword) return jsonify(result) if __name__ __main__: # 调试模式运行host0.0.0.0允许外部访问 app.run(host0.0.0.0, port5000, debugTrue)运行测试在终端中运行python app.py你应该看到输出提示服务在http://0.0.0.0:5000运行。打开浏览器或使用curl命令测试GET方式测试访问http://你的服务器IP:5000/generate_get?keyword如意POST方式测试推荐使用Postman或curlcurl -X POST http://localhost:5000/generate \ -H Content-Type: application/json \ -d {keyword:如意}如果返回了包含春联的JSON数据恭喜你API部分成功了3.3 第三步让API适配钉钉机器人钉钉自定义机器人发送到我们API的数据有固定格式我们需要解析它并按照钉钉要求的格式回复。更新app.py增加一个专门处理钉钉机器人消息的端点。# app.py (续接上文新增端点) import hashlib import hmac import base64 import time # 钉钉机器人安全设置加签Sign所需的密钥。在创建机器人时获得。 DINGTALK_SECRET 你的加签密钥 # 请替换为实际密钥 DINGTALK_ACCESS_TOKEN 你的Access Token # 请替换 def verify_dingtalk_signature(timestamp, sign): 验证钉钉机器人请求签名 if not DINGTALK_SECRET: return True # 如果未设置加签则跳过验证不推荐 string_to_sign f{timestamp}\n{DINGTALK_SECRET} hmac_code hmac.new( DINGTALK_SECRET.encode(utf-8), string_to_sign.encode(utf-8), digestmodhashlib.sha256 ).digest() my_sign base64.b64encode(hmac_code).decode(utf-8) return my_sign sign app.route(/dingtalk, methods[POST]) def dingtalk_webhook(): 钉钉机器人消息接收接口。 1. 验证请求是否来自钉钉。 2. 解析消息内容提取关键词。 3. 调用模型生成春联。 4. 将春联格式化成钉钉消息并返回。 # 1. 验证签名确保请求来自钉钉 timestamp request.headers.get(Timestamp, ) sign request.headers.get(Sign, ) if not verify_dingtalk_signature(timestamp, sign): return jsonify({msg: 签名验证失败}), 403 # 2. 解析JSON数据 data request.get_json() if not data: return jsonify({msg: 无效的请求数据}), 400 # 提取消息内容。钉钉文本消息格式。 msg_content data.get(text, {}).get(content, ).strip() # 移除可能存在的机器人信息 # 假设消息格式是“机器人 吉祥” keyword msg_content.replace(机器人, ).replace( , ) if len(keyword) ! 2: # 如果提取不到两个字的词返回使用说明 reply_text 请我并输入两个字的吉祥词例如\n机器人 如意 reply_msg { msgtype: text, text: { content: reply_text } } return jsonify(reply_msg) # 3. 调用模型生成春联 couplet_result get_couplet_for_keyword(keyword) if not couplet_result.get(success): # 如果生成失败返回错误信息 reply_msg { msgtype: text, text: { content: f生成失败{couplet_result.get(message, 未知错误)} } } return jsonify(reply_msg) # 4. 格式化回复消息 up couplet_result.get(上联, ) down couplet_result.get(下联, ) horizontal couplet_result.get(横批, ) # 将春联格式化成美观的钉钉消息 formatted_text f 为您生成春联【{keyword}】\n\n formatted_text f**上联**{up}\n formatted_text f**下联**{down}\n formatted_text f**横批**{horizontal}\n\n formatted_text f—— 由AI春联大师生成 reply_msg { msgtype: markdown, # 使用markdown格式支持加粗 markdown: { title: AI春联已生成, text: formatted_text } } return jsonify(reply_msg) if __name__ __main__: app.run(host0.0.0.0, port5000, debugTrue)注意你需要将DINGTALK_SECRET和DINGTALK_ACCESS_TOKEN替换为创建钉钉机器人时获得的信息。3.4 第四步配置钉钉自定义机器人现在我们需要在钉钉上创建一个机器人来连接我们的API。打开钉钉群进入你想要添加机器人的群。群设置点击右上角的群设置图标选择“智能群助手”。添加机器人点击“添加机器人”选择“自定义机器人”。安全设置关键步骤加签推荐开启“加签”选项系统会生成一个SEC开头的密钥。将这个密钥复制下来填入上面代码的DINGTALK_SECRET变量。IP地址段如果你有固定的服务器公网IP可以在这里添加增加安全性。完成创建给机器人起个名字比如“AI春联大师”然后完成创建。获取Webhook地址创建成功后你会得到一个Webhook地址格式如https://oapi.dingtalk.com/robot/send?access_tokenXXXXXX。其中的access_token就是代码里需要的DINGTALK_ACCESS_TOKEN。但是钉钉机器人默认是主动向外发送消息。我们需要的是让它接收群消息。自定义机器人本身不具备接收消息的能力。要实现“机器人”触发通常需要以下两种方式之一方式A使用钉钉开放平台机器人创建企业内机器人应用配置消息接收地址即我们的/dingtalkAPI地址并发布到群。这需要企业管理员权限流程稍复杂。方式B简化方案本教程后续我们调整思路。不直接让机器人“接收”而是让群成员在群里发送一条特定格式的消息然后由我们部署在服务器的一个后台进程主动抓取这条消息处理后再通过机器人的Webhook地址发回群里。这模拟了“机器人”的效果。为了教程简洁我们采用方式B的简化模拟我们暂时跳过复杂的消息接收配置假设我们的API (/dingtalk) 已经能通过某种方式如钉钉事件订阅收到消息。在实际部署时你需要根据钉钉开放平台的文档配置“消息接收地址”。3.5 第五步部署与测试服务器部署将你的app.py,couplet_service.py以及模型相关文件上传到具有公网IP的服务器或使用内网穿透工具如ngrok、frp将本地服务暴露到公网。运行服务在服务器上运行python app.py。对于生产环境建议使用Gunicorn或uWSGI配合Nginx。# 使用Gunicorn示例 pip install gunicorn gunicorn -w 4 -b 0.0.0.0:5000 app:app配置钉钉如果你采用方式A在钉钉开放平台配置“消息接收地址”为https://你的公网域名或IP:5000/dingtalk。如果你采用方式B则需要额外编写一个消息监听服务监听群消息当发现符合条件如包含“生成春联 如意”的消息时就调用get_couplet_for_keyword函数然后通过机器人的Webhook地址将结果发到群里。最终测试在钉钉群里尝试发送“AI春联大师 吉祥”。观察群内是否在几秒后收到了机器人回复的春联消息。4. 总结与扩展思路通过以上步骤我们成功搭建了一个桥梁将本地运行的AI春联生成模型与钉钉群聊连接起来。虽然在实际的钉钉机器人消息接收配置上可能需要根据官方文档进行更深入的对接但核心流程——模型封装为API、处理网络请求、解析与返回钉钉消息——已经完整地走通了。4.1 核心回顾模型理解我们利用了现成的“春联生成模型-中文-base”其核心是输入二字吉祥词输出一副春联。服务化通过Flask框架我们将模型功能包装成了一个RESTful API服务这是实现任何外部应用调用的基础。协议对接我们编写了/dingtalk接口专门用于处理钉钉机器人平台发来的HTTP POST请求遵循其规定的数据格式和签名验证。流程贯通实现了“接收关键词 - 调用模型 - 格式化回复 - 返回给钉钉”的完整闭环。4.2 还能怎么玩这个项目只是一个起点你完全可以在此基础上进行扩展多关键词支持修改逻辑允许输入四个字或一句话让AI生成更贴合心意的春联。风格选择在API中增加参数让用户可以选择生成“传统”、“幽默”、“科技”等不同风格的春联。图片生成将生成的文字春联调用另一个AI模型如文生图模型渲染成带有精美背景的图片春联再发到群里效果更震撼。定时任务让机器人在腊月廿三、除夕等特定时间主动在群里发送生成的春联营造节日气氛。接入其他平台同样的API思路可以轻松接入微信机器人、飞书机器人、Slack等平台。技术让传统焕发新彩。希望这个实战手册不仅能帮你打造一个有趣的群工具更能启发你探索更多AI模型与实际场景结合的可能性。动手试试吧让你的钉钉群在今年春节与众不同获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
春联生成模型-中文-base实战手册:对接钉钉机器人实现群内@生成春联
发布时间:2026/5/27 11:31:34
春联生成模型-中文-base实战手册对接钉钉机器人实现群内生成春联春节临近你是不是还在为写不出有新意的春联而发愁或者作为团队管理者想给群里的小伙伴们来点不一样的春节祝福今天我就带你玩点新鲜的把AI春联生成器“搬”到钉钉群里想象一下在钉钉工作群里一下机器人输入“发财”、“健康”这样的吉祥词几秒钟后一副对仗工整、寓意美好的专属春联就出现在群里。这不仅能活跃团队气氛还能让大家感受到科技带来的年味。本文将手把手教你如何将“春联生成模型-中文-base”这个强大的AI模型与钉钉机器人对接打造一个属于你自己团队的“AI春联大师”。整个过程清晰明了即使你是编程新手也能跟着一步步实现。1. 项目核心认识春联生成模型在开始动手之前我们先快速了解一下今天要用到的核心武器。1.1 模型是什么“春联生成模型-中文-base”是由达摩院AliceMind团队开发的专门模型。它的本事很简单却非常实用你给它任意两个字的祝福词比如“如意”、“平安”它就能自动生成一副与这个词相关的、上下联对仗、横批点睛的完整春联。这个模型是基于AliceMind团队强大的PALM 2.0中文基础生成模型PALM 2.0预训练生成模型-中文-base专门训练而成的。PALM模型就像一个精通写作的“大脑”经过海量文本的学习掌握了中文的语言规律和创作技巧。而春联模型则是在这个“大脑”的基础上又专门学习了成千上万副传统春联从而具备了针对春联这一特殊文体进行创作的能力。1.2 模型怎么用模型已经封装好并提供了一个非常友好的Web界面供我们使用。你不需要理解复杂的深度学习代码只需通过浏览器访问即可。访问路径在你部署的环境里运行以下前端服务脚本python /usr/local/bin/webui.py运行后在浏览器中打开相应的地址通常是http://localhost:7860或类似就能看到操作界面。使用界面加载模型初次打开页面系统会自动加载模型请耐心等待片刻。输入关键词在输入框中填入任意两个字的吉祥词例如“吉祥”、“奋进”。生成春联点击“生成”按钮模型就会快速创作出一副春联并显示在页面上。界面直观易用让你能立即体验AI写春联的乐趣。但我们的目标不止于此我们要让它能响应钉钉群里的召唤。2. 环境准备与核心思路我们的目标是将Web界面上的功能变成一个可以通过网络API调用的服务这样钉钉机器人才能与之通信。2.1 核心思路拆解整个流程可以概括为以下几步封装模型为API将春联生成模型的调用逻辑包装成一个HTTP接口。当这个接口收到一个包含关键词的请求时它就调用模型生成春联并把结果返回。部署API服务将这个接口服务部署在一台能被公网访问的服务器上或使用内网穿透工具。配置钉钉机器人在钉钉群里创建一个自定义机器人并设置其“消息接收地址”为我们上一步部署的API地址。实现交互逻辑编写API服务的逻辑使其能够正确解析钉钉机器人发来的消息提取关键词调用模型并将生成的春联格式化成钉钉消息再发回群里。听起来有点复杂别担心我们会用最简单的代码实现它。2.2 基础环境准备确保你的运行环境已经具备以下条件Python 3.7这是运行模型和Web服务的基础。模型已就绪确保webui.py可以正常运行即春联生成模型的基础功能是正常的。安装必要库我们将使用Flask这个轻量级框架来创建API。通过pip安装pip install flask3. 实战步骤从模型到钉钉机器人接下来我们进入具体的操作环节。请一步一步跟着做。3.1 第一步创建模型调用函数首先我们需要一个能直接调用春联生成模型核心功能的函数。由于模型已经提供了Web界面其背后一定有相应的Python函数。我们需要找到并调用它。通常模型的核心生成逻辑会封装在一个类或函数中。为了本教程的通用性我们假设你已经找到了这个函数它可能叫做generate_couplet(keyword)。你需要根据模型的实际代码进行调整。这里我们创建一个名为couplet_service.py的文件并写入以下示例代码。你需要将# TODO: 替换为实际调用模型生成春联的代码这部分替换成真实的模型调用逻辑。# couplet_service.py import json import time class CoupletGenerator: 春联生成服务类。 注意这里的generate方法是一个示例你需要根据实际模型代码进行替换。 def __init__(self): # 这里可以放置模型初始化代码如果模型需要显式加载 # 例如self.model load_your_model() print(春联生成器初始化完成示例。) pass def generate(self, keyword): 根据两个字的吉祥词生成春联。 参数: keyword (str): 两个字的吉祥词如“吉祥”、“安康”。 返回: dict: 包含上联、下联、横批的字典。 # 输入验证 if not keyword or len(keyword.strip()) ! 2: return { success: False, message: 请输入两个字的吉祥词如‘如意’、‘平安’。 } clean_keyword keyword.strip() # TODO: 替换为实际调用模型生成春联的代码 # 这里是一个模拟示例。你需要替换成类似下面的真实调用 # result your_model_predict(clean_keyword) # 真实调用可能会返回一个包含上下联和横批的元组或字典。 print(f[模拟] 收到关键词: {clean_keyword}正在生成春联...) time.sleep(0.5) # 模拟生成耗时 # 模拟数据 - 请务必替换 simulated_couplet { success: True, keyword: clean_keyword, 上联: f{clean_keyword}临门添百福, 下联: f平安入户纳千祥, 横批: f喜迎新春 } # 假设真实调用返回格式为 (上联, 下联, 横批) # 你可以这样转换 # real_up, real_down, real_horizontal your_real_model_call(clean_keyword) # simulated_couplet { # success: True, # keyword: clean_keyword, # 上联: real_up, # 下联: real_down, # 横批: real_horizontal # } return simulated_couplet # 全局实例 generator CoupletGenerator() def get_couplet_for_keyword(keyword): 对外提供的生成函数 return generator.generate(keyword) if __name__ __main__: # 本地测试 test_result get_couplet_for_keyword(如意) print(json.dumps(test_result, ensure_asciiFalse, indent2))关键点你必须查阅webui.py或其相关的模型代码找到实际生成春联的函数并替换掉上面的模拟代码。这是整个项目成功的基础。3.2 第二步构建Flask API服务有了生成函数我们现在用Flask创建一个HTTP接口。创建app.py文件。# app.py from flask import Flask, request, jsonify import json from couplet_service import get_couplet_for_keyword app Flask(__name__) app.route(/) def index(): return 春联生成API服务已启动。请使用 /generate 端点。 app.route(/generate, methods[POST]) def generate_couplet_api(): 生成春联的API接口。 预期接收JSON格式数据{keyword: 吉祥} data request.get_json() if not data or keyword not in data: return jsonify({ success: False, message: 请求格式错误请提供JSON数据并包含keyword字段。 }), 400 keyword data[keyword] result get_couplet_for_keyword(keyword) return jsonify(result) app.route(/generate_get, methods[GET]) def generate_couplet_api_get(): GET请求方式的生成接口方便测试。 使用方式 /generate_get?keyword吉祥 keyword request.args.get(keyword, ) if not keyword: return jsonify({ success: False, message: 请通过URL参数提供keyword例如?keyword吉祥 }), 400 result get_couplet_for_keyword(keyword) return jsonify(result) if __name__ __main__: # 调试模式运行host0.0.0.0允许外部访问 app.run(host0.0.0.0, port5000, debugTrue)运行测试在终端中运行python app.py你应该看到输出提示服务在http://0.0.0.0:5000运行。打开浏览器或使用curl命令测试GET方式测试访问http://你的服务器IP:5000/generate_get?keyword如意POST方式测试推荐使用Postman或curlcurl -X POST http://localhost:5000/generate \ -H Content-Type: application/json \ -d {keyword:如意}如果返回了包含春联的JSON数据恭喜你API部分成功了3.3 第三步让API适配钉钉机器人钉钉自定义机器人发送到我们API的数据有固定格式我们需要解析它并按照钉钉要求的格式回复。更新app.py增加一个专门处理钉钉机器人消息的端点。# app.py (续接上文新增端点) import hashlib import hmac import base64 import time # 钉钉机器人安全设置加签Sign所需的密钥。在创建机器人时获得。 DINGTALK_SECRET 你的加签密钥 # 请替换为实际密钥 DINGTALK_ACCESS_TOKEN 你的Access Token # 请替换 def verify_dingtalk_signature(timestamp, sign): 验证钉钉机器人请求签名 if not DINGTALK_SECRET: return True # 如果未设置加签则跳过验证不推荐 string_to_sign f{timestamp}\n{DINGTALK_SECRET} hmac_code hmac.new( DINGTALK_SECRET.encode(utf-8), string_to_sign.encode(utf-8), digestmodhashlib.sha256 ).digest() my_sign base64.b64encode(hmac_code).decode(utf-8) return my_sign sign app.route(/dingtalk, methods[POST]) def dingtalk_webhook(): 钉钉机器人消息接收接口。 1. 验证请求是否来自钉钉。 2. 解析消息内容提取关键词。 3. 调用模型生成春联。 4. 将春联格式化成钉钉消息并返回。 # 1. 验证签名确保请求来自钉钉 timestamp request.headers.get(Timestamp, ) sign request.headers.get(Sign, ) if not verify_dingtalk_signature(timestamp, sign): return jsonify({msg: 签名验证失败}), 403 # 2. 解析JSON数据 data request.get_json() if not data: return jsonify({msg: 无效的请求数据}), 400 # 提取消息内容。钉钉文本消息格式。 msg_content data.get(text, {}).get(content, ).strip() # 移除可能存在的机器人信息 # 假设消息格式是“机器人 吉祥” keyword msg_content.replace(机器人, ).replace( , ) if len(keyword) ! 2: # 如果提取不到两个字的词返回使用说明 reply_text 请我并输入两个字的吉祥词例如\n机器人 如意 reply_msg { msgtype: text, text: { content: reply_text } } return jsonify(reply_msg) # 3. 调用模型生成春联 couplet_result get_couplet_for_keyword(keyword) if not couplet_result.get(success): # 如果生成失败返回错误信息 reply_msg { msgtype: text, text: { content: f生成失败{couplet_result.get(message, 未知错误)} } } return jsonify(reply_msg) # 4. 格式化回复消息 up couplet_result.get(上联, ) down couplet_result.get(下联, ) horizontal couplet_result.get(横批, ) # 将春联格式化成美观的钉钉消息 formatted_text f 为您生成春联【{keyword}】\n\n formatted_text f**上联**{up}\n formatted_text f**下联**{down}\n formatted_text f**横批**{horizontal}\n\n formatted_text f—— 由AI春联大师生成 reply_msg { msgtype: markdown, # 使用markdown格式支持加粗 markdown: { title: AI春联已生成, text: formatted_text } } return jsonify(reply_msg) if __name__ __main__: app.run(host0.0.0.0, port5000, debugTrue)注意你需要将DINGTALK_SECRET和DINGTALK_ACCESS_TOKEN替换为创建钉钉机器人时获得的信息。3.4 第四步配置钉钉自定义机器人现在我们需要在钉钉上创建一个机器人来连接我们的API。打开钉钉群进入你想要添加机器人的群。群设置点击右上角的群设置图标选择“智能群助手”。添加机器人点击“添加机器人”选择“自定义机器人”。安全设置关键步骤加签推荐开启“加签”选项系统会生成一个SEC开头的密钥。将这个密钥复制下来填入上面代码的DINGTALK_SECRET变量。IP地址段如果你有固定的服务器公网IP可以在这里添加增加安全性。完成创建给机器人起个名字比如“AI春联大师”然后完成创建。获取Webhook地址创建成功后你会得到一个Webhook地址格式如https://oapi.dingtalk.com/robot/send?access_tokenXXXXXX。其中的access_token就是代码里需要的DINGTALK_ACCESS_TOKEN。但是钉钉机器人默认是主动向外发送消息。我们需要的是让它接收群消息。自定义机器人本身不具备接收消息的能力。要实现“机器人”触发通常需要以下两种方式之一方式A使用钉钉开放平台机器人创建企业内机器人应用配置消息接收地址即我们的/dingtalkAPI地址并发布到群。这需要企业管理员权限流程稍复杂。方式B简化方案本教程后续我们调整思路。不直接让机器人“接收”而是让群成员在群里发送一条特定格式的消息然后由我们部署在服务器的一个后台进程主动抓取这条消息处理后再通过机器人的Webhook地址发回群里。这模拟了“机器人”的效果。为了教程简洁我们采用方式B的简化模拟我们暂时跳过复杂的消息接收配置假设我们的API (/dingtalk) 已经能通过某种方式如钉钉事件订阅收到消息。在实际部署时你需要根据钉钉开放平台的文档配置“消息接收地址”。3.5 第五步部署与测试服务器部署将你的app.py,couplet_service.py以及模型相关文件上传到具有公网IP的服务器或使用内网穿透工具如ngrok、frp将本地服务暴露到公网。运行服务在服务器上运行python app.py。对于生产环境建议使用Gunicorn或uWSGI配合Nginx。# 使用Gunicorn示例 pip install gunicorn gunicorn -w 4 -b 0.0.0.0:5000 app:app配置钉钉如果你采用方式A在钉钉开放平台配置“消息接收地址”为https://你的公网域名或IP:5000/dingtalk。如果你采用方式B则需要额外编写一个消息监听服务监听群消息当发现符合条件如包含“生成春联 如意”的消息时就调用get_couplet_for_keyword函数然后通过机器人的Webhook地址将结果发到群里。最终测试在钉钉群里尝试发送“AI春联大师 吉祥”。观察群内是否在几秒后收到了机器人回复的春联消息。4. 总结与扩展思路通过以上步骤我们成功搭建了一个桥梁将本地运行的AI春联生成模型与钉钉群聊连接起来。虽然在实际的钉钉机器人消息接收配置上可能需要根据官方文档进行更深入的对接但核心流程——模型封装为API、处理网络请求、解析与返回钉钉消息——已经完整地走通了。4.1 核心回顾模型理解我们利用了现成的“春联生成模型-中文-base”其核心是输入二字吉祥词输出一副春联。服务化通过Flask框架我们将模型功能包装成了一个RESTful API服务这是实现任何外部应用调用的基础。协议对接我们编写了/dingtalk接口专门用于处理钉钉机器人平台发来的HTTP POST请求遵循其规定的数据格式和签名验证。流程贯通实现了“接收关键词 - 调用模型 - 格式化回复 - 返回给钉钉”的完整闭环。4.2 还能怎么玩这个项目只是一个起点你完全可以在此基础上进行扩展多关键词支持修改逻辑允许输入四个字或一句话让AI生成更贴合心意的春联。风格选择在API中增加参数让用户可以选择生成“传统”、“幽默”、“科技”等不同风格的春联。图片生成将生成的文字春联调用另一个AI模型如文生图模型渲染成带有精美背景的图片春联再发到群里效果更震撼。定时任务让机器人在腊月廿三、除夕等特定时间主动在群里发送生成的春联营造节日气氛。接入其他平台同样的API思路可以轻松接入微信机器人、飞书机器人、Slack等平台。技术让传统焕发新彩。希望这个实战手册不仅能帮你打造一个有趣的群工具更能启发你探索更多AI模型与实际场景结合的可能性。动手试试吧让你的钉钉群在今年春节与众不同获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。