Phi-3 Mini部署教程:集成企业微信/钉钉机器人实现消息推送通知

发布时间:2026/7/3 15:17:07

Phi-3 Mini部署教程:集成企业微信/钉钉机器人实现消息推送通知 Phi-3 Mini部署教程集成企业微信/钉钉机器人实现消息推送通知1. 项目概述Phi-3 Forest Laboratory是一个基于微软Phi-3 Mini 128K Instruct模型构建的AI对话终端以其极简主义和治愈系设计风格著称。本教程将指导您完成模型部署并实现与企业微信/钉钉机器人的集成打造一个能够自动推送通知的智能助手系统。2. 环境准备2.1 硬件要求GPU推荐NVIDIA RTX 3090/4090或更高性能显卡内存至少16GB RAM存储20GB可用空间2.2 软件依赖# 创建Python虚拟环境 python -m venv phi3_env source phi3_env/bin/activate # Linux/macOS # phi3_env\Scripts\activate # Windows # 安装核心依赖 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers4.40.0 streamlit requests3. 基础部署3.1 下载模型from transformers import AutoModelForCausalLM, AutoTokenizer model_name microsoft/Phi-3-mini-128k-instruct tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, device_mapauto)3.2 创建基础对话界面新建app.py文件import streamlit as st from transformers import AutoModelForCausalLM, AutoTokenizer # 初始化模型 st.cache_resource def load_model(): model_name microsoft/Phi-3-mini-128k-instruct tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, device_mapauto) return model, tokenizer model, tokenizer load_model() # 创建界面 st.title( Phi-3 Forest Laboratory) user_input st.text_input(向森林深处发出的讯息) if user_input: inputs tokenizer(user_input, return_tensorspt).to(cuda) outputs model.generate(**inputs, max_new_tokens200) response tokenizer.decode(outputs[0], skip_special_tokensTrue) st.write(f森林回应: {response})启动应用streamlit run app.py4. 集成消息推送功能4.1 企业微信机器人配置在企业微信群中添加自定义机器人获取Webhook地址格式https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyXXX4.2 钉钉机器人配置在钉钉群设置中添加自定义机器人选择自定义类型获取Webhook地址和安全设置4.3 实现推送功能修改app.py添加以下代码import requests import json def send_wechat_work(message, webhook_url): headers {Content-Type: application/json} data { msgtype: text, text: {content: message} } response requests.post(webhook_url, headersheaders, datajson.dumps(data)) return response.status_code 200 def send_dingtalk(message, webhook_url, secretNone): headers {Content-Type: application/json} timestamp str(round(time.time() * 1000)) sign if secret: string_to_sign f{timestamp}\n{secret} sign base64.b64encode(hmac.new(secret.encode(utf-8), string_to_sign.encode(utf-8), digestmodhashlib.sha256).digest()).decode(utf-8) data { msgtype: text, text: {content: message}, at: {isAtAll: False} } if secret: webhook_url ftimestamp{timestamp}sign{sign} response requests.post(webhook_url, headersheaders, datajson.dumps(data)) return response.status_code 2005. 完整集成方案5.1 修改主程序更新app.py实现完整功能# 在Streamlit侧边栏添加配置选项 with st.sidebar: st.header(消息推送设置) notification_type st.selectbox(选择通知方式, [无, 企业微信, 钉钉]) if notification_type 企业微信: webhook_url st.text_input(企业微信Webhook地址) elif notification_type 钉钉: webhook_url st.text_input(钉钉Webhook地址) secret st.text_input(钉钉加签密钥(可选)) # 在生成响应后添加推送逻辑 if user_input and response: notification_msg f新消息:\n用户: {user_input}\nAI回复: {response} if notification_type 企业微信 and webhook_url: if send_wechat_work(notification_msg, webhook_url): st.success(已推送至企业微信) else: st.error(推送失败) elif notification_type 钉钉 and webhook_url: if send_dingtalk(notification_msg, webhook_url, secret if secret else None): st.success(已推送至钉钉) else: st.error(推送失败)5.2 环境变量配置可选创建.env文件WECHAT_WORK_WEBHOOKhttps://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyyour_key DINGTALK_WEBHOOKhttps://oapi.dingtalk.com/robot/send?access_tokenyour_token DINGTALK_SECRETyour_secret修改代码读取环境变量from dotenv import load_dotenv import os load_dotenv() # 在Streamlit界面中使用默认值 webhook_url_wechat os.getenv(WECHAT_WORK_WEBHOOK, ) webhook_url_dingtalk os.getenv(DINGTALK_WEBHOOK, ) dingtalk_secret os.getenv(DINGTALK_SECRET, )6. 高级功能扩展6.1 定时推送功能添加定时任务每天推送精选内容import schedule import time from threading import Thread def daily_report(webhook_url): prompt 生成一份包含励志语录、今日建议和科技新闻摘要的日报 inputs tokenizer(prompt, return_tensorspt).to(cuda) outputs model.generate(**inputs, max_new_tokens500) report tokenizer.decode(outputs[0], skip_special_tokensTrue) send_wechat_work(report, webhook_url) def run_scheduler(): schedule.every().day.at(09:00).do(daily_report, webhook_urlos.getenv(WECHAT_WORK_WEBHOOK)) while True: schedule.run_pending() time.sleep(60) # 在单独线程中运行定时任务 Thread(targetrun_scheduler, daemonTrue).start()6.2 消息过滤与格式化def format_notification(user_input, response): # 简化AI回复去除重复内容 clean_response response.replace(user_input, ).strip() # 限制长度 if len(clean_response) 300: clean_response clean_response[:300] ... return f 用户咨询: {user_input}\n AI回复: {clean_response} # 在推送前调用 notification_msg format_notification(user_input, response)7. 总结通过本教程您已经完成了基础部署成功搭建Phi-3 Mini对话系统消息集成实现与企业微信/钉钉机器人的对接功能扩展添加定时推送和消息格式化功能7.1 最佳实践建议安全注意事项不要将Webhook地址直接暴露在前端代码中使用环境变量或配置文件存储敏感信息限制机器人的消息推送频率性能优化对于高频使用场景考虑添加消息队列缓冲使用模型缓存减少重复加载开销用户体验为不同消息类型添加emoji标识设置消息优先级区分系统通知和普通回复7.2 后续学习路径探索Phi-3 Mini的更多应用场景尝试集成其他通讯平台如飞书、Slack开发基于消息触发的自动化工作流获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻