AI助手做得再好,只有自己能用也等于没做——接进飞书后,我才搞懂"服务化"

0 阅读6分钟

这节课标题叫"Agent系统服务化封装与IM接入"。

看到"服务化",我以为就是把脚本包一层,再挂个聊天窗口。

上完才发现差得远。加个入口是小事,难的是想清楚"谁负责什么"。

脚本和服务的区别,不在代码,在"谁负责"

原来的程序,得手动跑一次,才完成一次任务。

做成服务之后,程序启动完就一直挂着,别人从约定好的入口发个请求,就能接着用已有的能力。启动、配置、出错提示、运行记录,这些都得安排上。

一次请求走五步:接收消息、建立任务、处理任务、保存结果、回复用户。

每一步都得有东西负责。课件给了张分工表。

平台适配器管连接平台、核验消息来源、提取消息、发送回复。Gateway公共处理管把消息交给服务、关联任务和回复位置、安排结果发送。Agent服务管接受业务任务、检查权限和输入、运行分析、保存结果。

这节课让我最清醒的一句话是:

模型只接收分析所需的业务材料。

谁发来的、结果存哪、回复到哪个会话,全是程序的事,跟模型没关系。

别让模型去管身份

接口约定那张表里,有一行我看了好几遍。

"已验证身份——由服务根据接入凭证和平台身份建立,不能直接相信消息正文里自报的身份。"

说白了,用户在消息里写"我是管理员",你不能信。身份得从平台的接入凭证推出来,不能从聊天内容里读。

还有几个信息也得程序记。会话和回复分支,决定结果回到哪个单聊、群聊,或者被回复的那条消息。平台消息标识,用来认平台重复送来的同一条消息。任务编号,把业务任务和原来的回复位置对上。

为什么这么较真?因为用户发一次消息,程序得保证三件事:这条任务属于他、只能被他查、结果回到他发起的地方。这些交给模型,模型既不知道也不该知道。

模型的输入应该干净到只剩两样:评论列表、分析要求。

这也是"换平台不用改业务"的前提。这两样不变,助手就能接着用。

Webhook不一定是你收消息的方式

课件提醒了一句:Webhook这词会出现在不同方向的接口里,读文档先确认谁向谁发请求。

我一开始没当回事,后来发现真的容易绕。

三种接入方式,方向完全不一样。

群推送Webhook,应用主动调平台给的地址,往群里发消息,方向是你到平台。HTTP事件回调,平台往你的回调URL发事件,方向是平台到你。长连接、Stream、Socket Mode,应用主动连上平台,平台顺着这条连接下发事件,你先连,它再发。

前两个都叫webhook,方向正好相反。

长连接的好处很实在:不用准备公网回调地址,本地就能跑。代价也很实在:电脑一休眠、进程一退,服务就断了。想无人值守,得挪到一直开机的环境。

换一个平台,只应该改一个地方

要是每个IM都复制一份分析代码,改一次分析规则就得改好几份。

可插拔的做法是:平台差异全留在适配器里,业务服务只面对统一的请求。

怎么知道做到了?课件给了个办法。接完真实IM,再加一个终端入口。终端不用申请账号,正好用来验"第二个入口是不是真的复用了同一个服务"。

加个终端入口还要动分析逻辑,那就说明平台差异漏到业务层了。

插件也是这个道理,分两类。渠道插件管"从哪用",飞书、终端、第二个IM都算。业务插件管"能做什么",评论分析、反馈摘要都算。加平台加渠道插件,加业务加业务插件,两边不打架。

出问题的时候,四条记录就够了

第一版不用什么专业监控,终端加个日志文件就够查。

每次任务留四条记录。收到消息,建了任务T001。开始分析,模型在处理。分析完成,结果存了。回复已发出,去聊天窗口对一下。

打开同一次任务的记录,按时间往下读,卡在哪一步很清楚。

没有"收到消息",去查连接、机器人配置、使用范围。停在"开始分析",去查模型调用。"分析完成"但后面跟着"回复失败",先保住已有结果,再查发送权限和回复位置,修好重发,别重新调一遍模型。

跟上一课的数据流排查是一个路子:别急着改代码,先找信息在哪一步断的。

能收到回复,不等于做对了

功能联调的检查项有九个:正常请求、重复事件、输入不足、身份隔离、业务失败、交付失败、重启、插件替换、少量并发。

有两个我印象最深。

一个是重复事件。平台有时候会把同一条消息送两遍,程序得用平台给的消息标识认出来,不能分析两遍。注意,用户自己又发一次相同的字,那是新请求,不该去重。

另一个是身份隔离。换个用户或组织去查某个任务,得按授权拒绝,不能把别人的内容返回来。

课件原话是:能收到回复,只说明这次传输通了。分析有没有依据评论、引用准不准,还得单独查。

对我意味着什么

我现在的状态是找工作,目标是AI应用开发岗。

学这节课之前,我以为AI应用开发就是调模型、写提示词。

学完发现,真正的工作量在模型之外。把已有能力封成服务,设计输入输出和失败怎么表达,处理身份和权限,让多个平台复用同一套业务逻辑,出了问题能定位到哪一步。

模型负责回答问题。让它能被别人用起来、用不出乱子,是另一回事。

你现在做的AI应用,是一个自己跑的脚本,还是一个别人能用的服务?