当前位置: 首页 > news >正文

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 transformers>=4.40.0 streamlit requests

3. 基础部署

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_map="auto")

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_map="auto") 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_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=200) response = tokenizer.decode(outputs[0], skip_special_tokens=True) st.write(f"森林回应: {response}")

启动应用:

streamlit run app.py

4. 集成消息推送功能

4.1 企业微信机器人配置

  1. 在企业微信群中添加自定义机器人
  2. 获取Webhook地址(格式:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXX

4.2 钉钉机器人配置

  1. 在钉钉群设置中添加自定义机器人
  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, headers=headers, data=json.dumps(data)) return response.status_code == 200 def send_dingtalk(message, webhook_url, secret=None): 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'), digestmod=hashlib.sha256).digest()).decode('utf-8') data = { "msgtype": "text", "text": {"content": message}, "at": {"isAtAll": False} } if secret: webhook_url += f"&timestamp={timestamp}&sign={sign}" response = requests.post(webhook_url, headers=headers, data=json.dumps(data)) return response.status_code == 200

5. 完整集成方案

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_WEBHOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_key DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=your_token DINGTALK_SECRET=your_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_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=500) report = tokenizer.decode(outputs[0], skip_special_tokens=True) send_wechat_work(report, webhook_url) def run_scheduler(): schedule.every().day.at("09:00").do(daily_report, webhook_url=os.getenv("WECHAT_WORK_WEBHOOK")) while True: schedule.run_pending() time.sleep(60) # 在单独线程中运行定时任务 Thread(target=run_scheduler, daemon=True).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. 总结

通过本教程,您已经完成了:

  1. 基础部署:成功搭建Phi-3 Mini对话系统
  2. 消息集成:实现与企业微信/钉钉机器人的对接
  3. 功能扩展:添加定时推送和消息格式化功能

7.1 最佳实践建议

  1. 安全注意事项

    • 不要将Webhook地址直接暴露在前端代码中
    • 使用环境变量或配置文件存储敏感信息
    • 限制机器人的消息推送频率
  2. 性能优化

    • 对于高频使用场景,考虑添加消息队列缓冲
    • 使用模型缓存减少重复加载开销
  3. 用户体验

    • 为不同消息类型添加emoji标识
    • 设置消息优先级区分系统通知和普通回复

7.2 后续学习路径

  1. 探索Phi-3 Mini的更多应用场景
  2. 尝试集成其他通讯平台如飞书、Slack
  3. 开发基于消息触发的自动化工作流

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/494395/

相关文章:

  • SecGPT-14BGPU利用率优化:vLLM动态批处理使A10显存占用降低42%
  • 使用VScode开发Java项目,在一个maven工程中,出现src源代码的java文件无法进行自动编译、自动纠错功能的解决方法
  • SecGPT-14B行业方案:教育机构网络安全培训AI助教部署案例
  • 国产信创考试系统推荐!适配麒麟/统信等国产系统
  • Redis200道核心面试题
  • 文脉定序效果展示:在司法判例库中实现‘案由-法条-类案’三级语义对齐
  • HY-Motion 1.0企业应用:智能硬件厂商生成SDK示例动作库(含C++调用)
  • AnythingtoRealCharacters2511惊艳效果展示:复杂发型/眼镜/服饰细节保留能力
  • CasRel开源可部署优势解析:自主可控的关系抽取服务搭建指南
  • Qwen-Ranker Pro快速上手:3步完成局域网访问与端口转发配置
  • Qwen3-0.6B-FP8教学应用:在高校AI课程中演示CoT推理的案例
  • Linux --- Makefile构建系统学习
  • Stable-Diffusion-v1-5-archive企业培训体系:内部AIGC工程师认证课程大纲
  • 864-批量word文档添加水印工具
  • Spring Boot+Nginx+MySQL容器化实战
  • Kimi-VL-A3B-Thinking镜像免配置优势:预编译vLLM、预下载模型权重、开箱即用
  • 七天速刷面试-day01
  • 2026年热门的南京摄影品牌推荐:南京商业摄影/南京食品摄影精选公司 - 品牌宣传支持者
  • QWEN-AUDIO实战案例:跨境电商多语种商品介绍语音批量生成
  • 如果 AI 能读懂并调用 LabVIEW,自动化系统会发生什么?
  • OpenClaw 超级 AI 实战专栏【数据与数据集】(一)高质量数据集:从哪找、怎么选、格式要求
  • Pi0 VLA仿真闭环:Web终端+Isaac Sim/Gazebo构建端到端训练验证环境
  • 1.1 模型量化简介:从动机、对象到主流方法全景
  • centos7系统安装教程
  • 2026携程酒店数据抓取
  • 2.1 模型剪枝(Model Pruning)
  • Ultrascale+ XDMA 从零开始搭建PCIE通信
  • 寻音捉影·侠客行精彩案例:某省级电视台用其日均处理300+小时新闻素材
  • 20260311 文本编辑器
  • 2026年靠谱的凸轮式自动车床工厂推荐:自动车床送料机实力厂家推荐 - 品牌宣传支持者