大模型提效案例:小组问题智能化收集与追踪

646 阅读9分钟

零、摘要

✨ 本文主要讲述了作为一位研发同学,在遇到问题时的拆解流程 & 思考方案 & 实现思路,并在文末推荐一款令我心动的显示器~

一、提出问题

❓小组内同学在工作中遇到了一些问题时,如何反馈?如何解答?如何记录?如何追踪

在看下方的图之前,可以先想一下目前自己组内,在遇到类似场景时,是如何的一个流程呢?

whiteboard_exported_image.png

以上是一个我们构想的,属于比较理想化的流程,涵盖【反馈】→【讨论】→【记录】→【回顾】四个阶段,大部分小组的流程应该是它的一个子集,因为能够按这个流程严格执行的团队少之又少

对于为什么没有很多团队能够如此执行,经过讨论,大家认为以上流程存在部分痛点:

  • 问题反馈群的聊天记录平铺,不成组,看问题时不直观
  • 问题总结时,人工翻找、记录聊天记录上下文比较费时
  • 问题总结时,人工根据聊天记录再进行总结,若需组织一个措辞完善、重点突出的总结文案,是比较费时费力
  • 问题记录后,需要定时人工统计问题现状,并催促相关同学进行处理
  • 人工同步问题记录到周会、月会中时,需要一定的同步成本

痛点关键词人工不直观

由于存在以上痛点,大部分同学认为组织一个问题反馈流程的ROI并不高(换句话说就是:没有必要!) ,因为需要占用一定的人力来做这些事。

经过一些调研和实践,我们基于以上流程,着重优化其中需要人工的节点,减轻人工成本,提高小组建立问题反馈流程的ROI。

二、解决方案

我们针对以上痛点,case by case的通过工具显著的提升了效率:

whiteboard_exported_image (1).png

❓:问题反馈群的聊天记录平铺,不成组,不方便以问题维度进行查看

💡:使用飞书话题群代替普通群,可以更直观的by问题维度查看消息

❓:问题总结时,人工翻找、记录聊天记录上下文比较费时

💡:直接调用飞书open api,一次性获取对应范围的聊天记录

❓:问题总结时,人工根据聊天记录进行总结,难以组织措辞完善、重点突出的总结文案

💡:使用大模型来根据聊天记录生成一个措辞完善、重点突出的文案,它很擅长

❓:问题记录后,需要定时人工统计问题现状,并催促相关同学进行处理

💡:使用定时任务,通过工具来分析问题现状(替代人工),并通知到对应同学及时处理

❓:人工同步问题记录到周会、月会中时,需要一定的同步成本

💡:使用多维表格来承载问题列表,使用多维表格的仪表盘、嵌入至飞书文档能力代替人工同步


ezgif-6-2cf1698128.gif

小助手示例动图

三、方案实现

image.png

全链路时序图

1. 轻量级函数

介绍

FaaS,函数即服务,遵循服务函数化理念,支持用户一键创建和部署函数,支持快速构建任何类型的应用和服务。

各个厂家的云平台都有FaaS的服务,大家可以按自己的意愿来使用哈~

我的使用

基于轻量级函数,我实现了以下功能,串联起了 飞书 + Coze+ 多维表格 这三个平台。

  • 获取群聊天记录
  • 将聊天记录进行总结
  • 将总结内容存到多维表格

每个步骤的细节实现会在后续模块展开~

// 伪代码
// 事件入口
addEventListener("fetch", async (event) => {
  // 处理入参相关
  const { url, method } = event.request;
  const { pathname } = new URL(url);

  // 判断当前调用类型(卡片回调、@事件处理等)
  const isChallengeMode = requestJson.challenge;
  const isCardCallback = requestJson.event && requestJson.event.host === "im_message";
  
  // 事件分发:处理@事件
  if (isAtMsg) {
    const messageId = jsonEvent.message.message_id;
    // 1. 获取飞书token
    validByLark().then(async (validByLarkRes) => {

      // 2. token验证
      if (validByLarkRes && validByLarkRes.tenant_access_token) {
        // 旧卡片messageId
        let cardMsgId = "";
        // 3. 先发一个loading状态的消息卡片到群里
        sendCard(messageId, token, "让我康康怎么个事儿", "正在读取当前话题聊天记录数据,并尝试总结中...").then(res => {
          cardMsgId = res.data.message_id;
        })

        // 4. 获取话题聊天记录,话题里的聊天记录(没有被撤回的)
        const threadList = await getThreadTalkList(token, jsonEvent.message.thread_id);

        // 5. 获取发送者信息
        const userIds = uniq(threadList.map(item => {
          return item.sender.id;
        }))
        const userInfoMap = await batchGetUserInfo(token, userIds);

        // 6. 格式化聊天记录
        const talkList = threadList.map(recordItem => {
          const userItem = userInfoMap[recordItem.sender.id];
          const userName = userItem ? userItem.name : "用户";
          let talkContent = recordItem.body.content;
          if (recordItem.mentions?.length) {
            recordItem.mentions.forEach(mention => {
              talkContent = talkContent.replace(mention.key, `@${mention.name}`)
            })
          }
          return { userName, talkContent }
        })

        // 7. 生成AI建议
        const aiSuggest = await getAISuggest(JSON.stringify(talkList));

        if (aiSuggest && aiSuggest.output) {
          const {title, suggest} = aiSuggest.output;
          // 8. 发送消息卡片
          await updateCard(cardMsgId, token, title, suggest, "一键记录该问题到多维表格中~", outputStr);
        }
      }
    })
    return event.respondWith(new Response(JSON.stringify({ success: true }), {
      headers: { "content-type": "application/json" }
    }));
  }

  event.respondWith(new Response(JSON.stringify(requestJson), {
    headers: { "content-type": "application/json" }
  }));
});
//# sourceMappingURL=index.js.map

2. 飞书开放平台

介绍

开放平台:一个封闭的平台往往是无法cover用户的各种使用场景的,把平台的相关能力开放给使用者,使用者可以根据这些能力开发一些更贴合业务的定制化功能,最终提高用户粘性。

飞书开放平台: 将飞书的部分能力以API的方式开放给业务开发者,通过这些API,你可以开发各种企业应用,来增强你在使用飞书时的体验。

image.png

我的使用

2.1. 飞书机器人

与用户在聊天中交互的应用,可以向用户或群组自动发送消息、响应用户的消息、管理群组。

在使用机器人时,需要为对应的功能开启相关权限:

  • 接收群聊中@机器人消息事件(通过在群中通过@来唤起机器人
  • 查看群消息(查看群聊上下文
  • 获取用户基本信息(获取用户名称
  • 查看、评论、编辑和管理多维表格(存储记录到多维表格中
2.2. 飞书消息卡片

相比于普通的消息体,消息卡片是一个交互更友好、展示更直观的载体。

基于该功能,我们搭建了一个交互卡片,主要的交互逻辑很简单:用户点击【记录到多维表格中】,我们将当前聊天记录、聊天总结一起保存到多维表格中

2.3. 事件与回调

2.3.1. 事件

通过【事件】,我们可以绑定At动作,用户在@机器人后,可以把这个动作同步触发到我们的开发者服务器。

  • 先配置请求地址,这个地址代表我们的开发者服务器
  • 再添加相关事件,只有我们显式添加的事件,才会触发到开发者服务器(白名单逻辑)

image.png

2.3.2. 回调

通过【回调】,我们可以绑定机器人的交互(卡片的按钮),在用户点击卡片上的按钮后,会同步触发到我们的开发者服务器。

image.png

3. Coze

介绍

Coze是新一代 AI 应用开发平台。无论你是否有编程基础,都可以在扣子上快速搭建基于大模型的各类Bot,并将 Bot 发布到各个社交平台、通讯软件或部署到网站等其他渠道。

一句话总结:

产品:你可以在coze平台上快速开发一些AI应用(Bot机器人等),发布到各种社交平台中。

API:你可以通过OpenAPI的方式,丝滑的通过接口调用的方式,将你搭建的应用 or 模块嵌入到你的业务流程中。

我的使用

Coze有很多简单实用的功能,比如逻辑编排、知识库等,这里我只介绍本次使用到的workflow(工作流)

  1. 工作流

工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排,例如旅行规划、报告分析等。

当目标任务场景包含较多的步骤,且对输出结果的准确性、格式有严格要求时,适合配置工作流来实现

来源文档:www.coze.cn/docs/guides…

工作流配置截图

工作流运行示意图

👍🏻 比较惊喜的一点是工作流可以通过open api的方式单独调用! 这样就为在轻量级函数中调用提供了前提条件~ 可以低成本的接入到用户的业务中~

const getAISuggest = (talkList) => {
  return fetch(`https://api.coze.cn/v1/workflow/run`, {
    method: "POST",
    headers: {
      Authorization: `你的Token`,
      "Content-Type": "application/json",
      "Connection": "keep-alive",
      "Accept": "*/*"
    },
    body: JSON.stringify({
      "workflow_id": "Workflow的ID",
      "parameters": {
        // 入参
        "CUSTOM_INPUT": `${talkList}`
      }
    })
  }).then(res => res.json())
    .then(res => {
      const dataStr = res.data;
      return JSON.parse(dataStr || "{}");
    })
}

4. 多维表格

介绍

多维表格是一个非常强大的工具,它是一个以表格形态存在的在线数据库,用来存储和管理数据,区别于常规电子表格,多维表格不仅可以实现数据的存储,还可以实现数据分析、可视化

我的使用

4.1. 机器人添加记录

通过点击机器人卡片上的【添加到多维表格中】按钮,一键将聊天记录、总结内容保存到表格中。

暂时无法在飞书文档外展示此内容

// 新增记录示例代码
// appToken: https://open.larkoffice.com/document/server-docs/docs/bitable-v1/notification
// tableId: https://open.larkoffice.com/document/server-docs/docs/bitable-v1/notification
const addRecordToLarkExcel = async (valueObj, token) => {
  const result = await fetch(`https://open.larkoffice.com/open-apis/bitable/v1/apps/appToken(自行获取)/tables/表格Id(地址栏上有)/records/batch_create`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json; charset=utf-8', // 如果发送JSON数据
      'Authorization': `Bearer ${token}`
    },
    body: JSON.stringify({
      records: [
        {
          fields: {
            标题: valueObj.title,
            话题内对话内容: valueObj.content,
            AI给出的建议: valueObj.suggest,
            记录时间: new Date().getTime(),
            任务状态: "待跟踪",
          }
        }
      ]
    }),
  }).then(res => res.json())
  return result;
}
4.2. 仪表盘监控

可以快速添加一些图表来从各种视角看数据表,这里我们按解决状态、近90天趋势两个视角来看数。

四、最终效果

1. 机器人使用效果

ezgif-6-2cf1698128.gif

2. 周报使用效果

image.png

五、后续规划

目前它的已涵盖了【反馈】→【讨论】→【记录】→【回顾】四个能力,属于是可以用起来的阶段啦~

同时对于它的一些后期构想我们简单列了下,如:

  1. 使用机器人定期(如周五上午)向业务群内推送目前的各种任务的状态,并让大模型根据项目管理经验,给出一些管理上的建议
  2. 补充一些其他机器人,当讨论问题时,没太有思路的时候,可以 @机器人给一些建议(把一些基建、项目管理、协作相关的知识放到coze的知识库)

六、One More Thing~

我是一个喜欢新事物的同学

2012~2015这几年,正是手机行业井喷的几年,也正是我的高中时代

我前后折腾了不下30款手机

三星、LG、小米、魅族、海信、摩托、天语、黑莓......

塞班S40、塞班S60、原生安卓、黑莓、MIUI、Flyme、WP......

品牌多到我好像真的两只手... 都数不过来...

但是,自从19年工作至今,近5年的时间里,我只换了两个手机,红米k20pro 和 小米11

那股想折腾、喜欢新鲜事物的劲儿,好像一夜之间就没了

“我好像对现在的手机提不起兴趣了,没一个心动的...”

“不是你的原因,是现在的手机之间越来越没有差异了”

“或许是这样的...”

可是就在最近,我关注并入手了一款显示器,它让我有了久违的对电子产品的那种心动的感觉...

“它与其他显示器,有那么一点不一样,因为它是为程序员专门设计的”

有趣的显示比例

首先我对显示器的要求一点儿也不高,我不是一个狂热爱好者,我之前秉持的理念是:“能用就行,好用更好”

公司和家里都有显示器,4K 27寸,16:9

这是一个非常常见的配置,长得扁扁长长,好像无论你到哪里,都能看到这种比例的显示器。

就像... 我杂乱的工位上的傻乎乎的它...

image.png

而这次入手的显示器就很不一样!它的比例很少见:4K 28寸,3:2

具体什么样呢?大概是......?

image.png

哈哈哈,我第一反应也是如此,不过它是这样的!

WechatIMG170.jpg

新的显示比例,带给我新的开发体验,我可以一屏看更多的代码了!(粗估能多展示近20%的代码)

这真的非常重要!

特别是在读代码的时候,大一些的屏幕,可以有更强一些的掌控感~

image.png

极致的显示效果(for程序员)

之前看过很多显示器的评测,大多数在显示效果上都是for剪辑、设计师这些同学,因为他们对色彩要求更高,这我能理解。

但是!

真正for程序员群体的显示器调优,我认为也是非常有必要的!(中国有那么多程序员,那么多不差钱的程序员😁

我放几张图来直接展示它的极致点吧!

1. 深得我心的专业编程模式

WechatIMG250.jpg

可以看到右侧,在专业编程模式下,它的黑色更纯粹,代码仿佛要从背景中凸出来一样,体验真的会好上很多!像什么呢?好像是眼镜刚刚被擦干净,戴上的那一瞬间。

来看下效果!

ezgif-7-855fa19ffe.gif

想进入编码模式,也不需要多复杂的切换,只需要点一下功能栏中央的编程触键,就能丝滑切换到专业编程模式啦!

ezgif-7-486976459a.gif

2. 惊艳的抗反光效果

如果有工位在窗户边上的同学难免会遇到有出现光源直射的情况,屏幕上的眩光会极大的干扰我们的编码工作,而这款显示器搭载了抗反射涂层,能有效避免屏幕眩光。

image.png

ezgif-7-3a76809757.gif

3. 有点意思的配套软件

显示器还搭配了明基自研的display pilot2软件,能在电脑上就调整显示器相关参数设施,还支持便捷的桌面分区、快捷键,以及我最感兴趣的功能——应用颜色模式 ,可以给不同软件设置自己专属的颜色模式,告别一刀切模式!

image.png

image.png

这样在不同的编辑器、浏览器等,我们可以case by case的处理其颜色模式,在每种场景都能展示最优的效果!

以上

以上几点就是这款显示器让我非常感兴趣的几点,也在此推荐给热爱编程的同学~

我觉得它真的是站在程序员的角度上认真考虑过的,每个卖点都挺让我心动,特别是那个3:2的屏幕哈哈哈,真爽呐!

这maybe是一个软广,占用了你一定的时间,不过如果感兴趣,真的可以去搜搜看~ 它的型号是:

明基 RD280U

感谢你的阅读~