【用AI写周报,“卷死”同事】打造一款自动生成周报的微信小程序

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 PTS,5000VUM额度
简介: 在现代企业中,周报是一个重要的沟通和管理工具。然而,手动编写周报是一项繁琐的任务,往往需要花费大量时间和精力。因此,利用人工智能技术来自动化周报生成是一个值得探究的方向。本文将介绍如何通过微信小程序接入ChatGPT,根据前端、后端、设计师、产品、测试和架构师等职位自动生成周报,并提供完整的代码实现。

前言

image.png

作为一名打工人,每天提交日报、每周周报,成为公司考核的要求。可是作为一名程序猿,不知道大家有没有像我一样,下班之后都要绞尽脑汁去思考如何提交一份工作内容丰富的日报?而且想写出一份内容丰富、情文并茂的日报都会消耗大量时间。

今天就带大家基于OpenAI开发一个生成周报的微信小程序,只需通过AI就可以帮助大家在公司卷出新高度。

下面是实现微信小程序接入ChatGPT,根据前端、后端、设计师、产品、架构师等职位实现一个周报生成器的具体步骤和示例代码。

步骤1:创建账号

创建一个ChatGPT账号并获取API密钥。您需要访问ChatGPT官网注册一个账号,并在控制台中创建一个API密钥。

步骤2:创建一个微信小程序并配置API。

您需要访问微信公众平台创建一个小程序,并在小程序后台中配置ChatGPT API密钥。具体步骤如下:

在小程序后台中打开开发设置,将服务端口配置为443,并在“服务器域名”中添加对应的服务域名。

步骤3:在微信开发者工具中创建一个新的微信小程序项目

首先,您需要在微信开发者工具中创建一个新的微信小程序项目。然后,您可以使用微信开发者工具中的代码编辑器创建UI界面和逻辑。

步骤4:创建ChatGPT API云函数

在微信小程序中,您可以使用云开发来创建云函数。首先,您需要打开微信开发者工具中的云开发控制台,然后单击“函数服务”>“新建函数”。接下来,您可以选择Node.js作为运行环境,并输入以下代码:

const axios = require('axios');

exports.main = async (event) => {
   
  const {
    text, model } = event;

  const headers = {
   
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${
     process.env.OPENAI_API_KEY}`,
  };

  const data = {
   
    'model': model,
    'prompt': text,
    'temperature': 0.5,
    'max_tokens': 256,
    'stop': ['\n'],
  };

  const response = await axios.post('https://api.openai.com/v1/engines/davinci-codex/completions', data, {
    headers });

  return response.data.choices[0].text.trim();
};

这是调用ChatGPT API的云函数代码。请确保将OPENAI_API_KEY替换为您自己的API密钥。

步骤5:创建UI界面

在微信小程序中,您可以使用WXML、WXSS和JavaScript来创建UI界面。以下是一个简单的示例,用于在前端页面中选择职位和输入工作内容:

wxml

<view class="container">
  <view class="title">请选择您的职位:</view>
  <view class="position-buttons">
    <button wx:for="{
    {positions}}" wx:key="{
    {item}}" bindtap="selectPosition">{
  {item}}</button>
  </view>
  <view wx:if="{
    {selectedPosition}}">
    <view class="title">本周工作:</view>
    <textarea bindinput="onWorkInput"></textarea>
    <view class="title">下周计划:</view>
    <textarea bindinput="onPlanInput"></textarea>
    <view class="title">问题与困难:</view>
    <textarea bindinput="onProblemInput"></textarea>
    <view class="title">周报预览:</view>
    <view class="report">{
  {report}}</view>
    <button class="send-button" bindtap="sendReport">发送到邮箱</button>
  </view>
</view>

javascript

Page({
   
  data: {
   
    positions: ['前端工程师', '后端工程师', '设计师', '产品经理', '测试工程师', '架构师'],
    selectedPosition: '',
    workContent: '',
    planContent: '',
    problemContent: '',
    report: '',
  },
  selectPosition(e) {
   
    this.setData({
    selectedPosition: e.currentTarget.dataset.position });
  },
  onWorkInput(e) {
   
    this.setData({
    workContent: e.detail.value });
    this.generateReport();
  },
  onPlanInput(e) {
   
    this.setData({
    planContent: e.detail.value });
    this.generateReport();
  },
  onProblemInput(e) {
   
    this.setData({
    problemContent: e.detail.value });
    this.generateReport();
  },
  generateReport() {
   
    const {
    selectedPosition, workContent, planContent, problemContent } = this.data;
    if (!selectedPosition || !workContent || !planContent || !problemContent) return;
    wx.cloud.callFunction({
   
      name: 'chatgpt',
      data: {
   
        text: `${
     selectedPosition}本周工作:${
     workContent}\n下周计划:${
     planContent}\n问题与困难:${
     problemContent}`,
        model: 'davinci-codex-002',
      },
      success: (res) => {
   
        this.setData({
    report: res.result });
      },
      fail: console.error,
    });
  },
  sendReport() {
   
    const {
    report } = this.data;
    if (!report) return;
    wx.cloud.callFunction({
   
      name: 'sendReport',
      data: {
   
        report,
      },
      success: () => {
   
        wx.showToast({
   
          title: '发送成功',
          icon: 'success',
        });
      },
      fail: console.error,
    });
  },
});

步骤6:创建发送邮件的云函数

您可以使用第三方库如nodemailer来创建一个发送邮件的云函数。以下是一个简单的示例:

const nodemailer = require('nodemailer');

exports.main = async (event) => {
   
  const {
    report } = event;

  const transporter = nodemailer.createTransport({
   
    host: 'smtp.ethereal.email',
    port: 587,
    auth: {
   
      user: process.env.EMAIL_USER,
      pass: process.env.EMAIL_PASSWORD,
    },
  });

  const info = await transporter.sendMail({
   
    from: 'Weekly Report Generator <noreply@example.com>',
    to: process.env.EMAIL_TO,
    subject: 'Weekly Report',
    text: report,
  });

  return info.messageId;
};

请确保将EMAIL_USER、EMAIL_PASSWORD和EMAIL_TO替换为您自己的信息。

步骤7:部署并测试

您可以在微信开发者工具中使用“上传并部署”功能来部署您的小程序。

自测:选择您的职位、填写工作内容、下周计划和问题与困难,然后点击“生成周报”按钮,等待程序返回生成的周报。如果一切正常,您将看到一个包含周报的文本框。然后,您可以点击“发送周报”按钮,程序将使用您的邮箱发送周报。

总结

代码实现中还有一些细节需要注意,例如错误处理和数据验证。您可以根据您的需求进行修改和完善。

这是一个比较完整的实现,希望对您有所帮助!


✍创作不易,求关注😄,点赞👍,收藏⭐️

相关文章
|
6天前
|
人工智能 小程序 程序员
【视频测评 DEMO 参考】VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
148 7
|
6天前
|
人工智能 安全 机器人
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
LangBot 是一个开源的多模态即时聊天机器人平台,支持多种即时通信平台和大语言模型,具备多模态交互、插件扩展和Web管理面板等功能。
328 14
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
|
8天前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
2160 13
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
2月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。
|
2月前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
2月前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
2月前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
2月前
|
人工智能 小程序 JavaScript
【一步步开发AI运动小程序】十四、主包超出2M大小限制,如何将插件分包发布?
本文介绍了如何从零开始开发一个AI运动小程序,重点讲解了通过分包技术解决程序包超过2M限制的问题。详细步骤包括在uni-app中创建分包、配置`manifest.json`和`pages.json`文件,并提供了分包前后代码大小对比,帮助开发者高效实现AI运动功能。
|
2月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
2月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。