分类目录归档:应用开发

作为 CRUD Boy,如何跟上 AI 时代?

在英伟达成为世界上市值第一的公司之时,我们来聊聊作为 CURD Boy 如何跟上时代,开始动手搞 AI。

An image to describe post

目前的 AI 并不够强,也不足以把技术专家给完全替代。而且我非常相信即使你完全不懂 AI,依然可以找到一份工作。但掌握 AI 并不是为了与 AI 对抗,而是给自己新增一个技能树分支,做到人无我有,人有我优,最终提升自己获得更好工作机会的概率;让自己在市场上拥有更多的可能。

如果你想好了,也准备跟上这个 AI 的时代,那么就继续往下看吧!

学 AI, 从用 AI 开始

我不知道你在日常的工作中是否有使用任何基于大模型的 AI 工具,如果你已经在用了,那么很好,继续使用,深度使用,并在使用中不断思考,哪些事情是 AI 可以做的很好的事情?哪些是 AI 做不到很好的事情?以及,为什么这个事情 AI 做不到很好?这些问题可以帮助你更好的理解 AI 的边界,从而找到 AI 的能力圈,并在后续的开发过程中,找到 AI 能提供的价值,并始终在 AI 的能力圈内做事。

而如果你没有开始使用 AI,那么不妨从一些面向开发者的 AI 工具开始,比如:

  • Perplexity:当你需要搜索东西的时候,可以试试先不要丢 Google,丢 Perplexity 试试看,他给你的答案有什么不同?
  • Devv.ai:当你遇到一些卡住的问题,不妨丢给它试试看,看看这个面向开发场景优化的 AI 是如何解决这个问题的。
  • GPTCommit: 如果你像我一样懒得写 Commit Message,试试让 AI 来帮你写 Commit Message。

当然,除了用上面的工具,别忘了思考这几个灵魂拷问:

  • 什么事情是 AI 可以做的很好的事情?
  • 什么事情是 AI 做的不好的事情?为什么这个事情做的不好?
  • 做什么可以让 AI 把做的不好的事情变得更好一点

先用 AI,再复盘和推演,能够帮助你更好的获得对于 AI 的手感,以及对更深一步的认知。不用太着急写代码,因为当你没有基础的 AI 理解时,你用 AI 可能也不过是高射炮打蚊子。

学 AI,从做 AI 开始

当你用好 AI 之后,也有了 AI 的基础认知之后,下一步我推荐你开始动作去做一些 AI 应用,这样可以在练中学,也可以让你更容易找到下一个待研究的问题,从而持续精进,成为领域的专家。

如果说要做什么,那我觉得,作为开发者,你要做的是能帮助你自己提效的工具,因为这个对你没有产品/运营经验的你来说,是投入产出比最高的事情。你不需要去做市场调研,因为只要能解决你的问题,本身就产生了价值;你不需要去做用户访谈,因为你自己就是用户;你不需要去做运营推广,因为解决你自己的问题,渗透率就 100% 了。

先做自己能用的上的工具,最差的情况下不过是只给自己用了,但也能让你学到新东西,解决自己的问题。如果有可能也给别人用,那就是幸运儿了,你甚至还可以获得一些影响力,更幸运的同学还可以把自己的产出变现。

当然,对于不同的人才画像,你可能还会想去搞面向非专业用户的产品,但这个就要结合你自身的经历和能力来作出选择,作为一个 Starter 的引导文章,我就不过多赘述,我们在后续再讨论。

做 AI,从找痛点开始

我身边的不少朋友们,来找我聊 AI 时,往往会说:“我想做 AI ,但我不知道应该做什么比较好”,将这个问题细拆后,我认为可以细分为这两个问题:

  1. 我不知道 AI 能做什么?
  2. 我不知道 AI 能做的事情和我的业务有什么匹配度?

前者就 Callback 回我的第一个建议 —— 先用 AI,不然你无法感知 AI 的能力圈,就谈不上去开发 AI 产品。而后者,我有一个比较简单的粗暴的方式 —— 看看你们团队的实习生在做什么?

AI 目前的能力还做不到像一个工作数十年的专家工程师一样强(当然,可能 GPT 5 出来后就又不一样了),目前我对于它的预期还是团队中的实习生。你可以在团队中观察实习生在做的事情是什么,然后结合你对于 AI 的理解,看看 AI 是否可以接管实习生在做的事情。

当然,也可以是一些你不愿意做的繁琐事项。比如,我有个 Bot 叫小黑,这个 Bot 主要的工作是把我发给他的文字,拆解成 JSON Input,直接通过 OpenAPI 录入到业务系统(readit.ixiqin.com)中,从而降低我自己打开业务系统网站、登录、输入、保存的动作。
An image to describe post

当然,也有可能你的团队当中没有实习生,那么你就试着去看看哪些是团队中最没有价值的事情,并试着让 AI 来做这些事情,让你自己和团队的同学更加专注在更有价值的事情上。

做 AI ,从明确预期开始

在 AI 领域,你可能是一个初学者,那么你需要明确自己的预期

  • 你可能就是前面解决不了问题,因为你还在学习中;你可能就是赚不到钱,因为你还在学习中。放平自己的预期,保持空杯心态,继续学习,可以帮助你更好的沉下心来去学习和使用 AI,如果你希望自己赚快钱,那么建议出门左转接外包还是更快一点。
  • 在 AI 领域,你始终需要不断的做事情来找到 AI 的边界,找到做事的手感,并在做事中迭代认知:AI在变化,业界也在变化,你需要在不断的做事中找到 AI 的长板和短板,并努力去放大 AI 的长板,尽可能的让短板不会被碰到,或被拦截掉。
  • 目前的 AI 就是没有那么强,没办法完美替代人:AI 目前还没有聪明到我们想要的效果,我们依然还需要人的参与,你还是只能把它当成一个实习生,只不过这个实习生可能更聪明,且能做的基础的事项更多。
  • 目前的 AI 就是更新很快,你需要不断的学习:大模型作为一个不算太新的(毕竟 GPT 3 发布已经 4 年了)技术领域,相比于那些成熟的领域(编程范式、计算机原理),还是有很多不断更新的点,所以,你还是需要持续学习、保持学习的状态和手感,并持续下去。

当你的预期是对的,你就对于 AI 这件事更有耐心, 也就更能持续做下去了。

搞 AI,从学习开始

AI 不是一个新词,但这一轮基于大模型的 AI,也不是一个发展非常成熟的领域,领域日新月异的发生变化,持续去学习。我推荐你看看歸藏维护的 AIGCWeekly(我自己也在看),这样你不需要花费太多的精力,同样可以看到一些最新的进展。当你持续研究深入后,再进一步看论文、看更新的进展。

评测即业务:大模型应用开发的生存法则

大模型应用开发,我们真的准备好了吗?我们是否还停留在过去「只要功能正常运行就好」的阶段?

在软件过程发展的过去几十年里,软件工程一直在通过各种各样的手段,来降低系统整体的风险和不确定性。我们设计了大量的方案和框架,来帮助业务快速发展:TDD、BDD、DDD,不同的名词和对应的工具,都在引导我们通过各种各样的手段,来降低项目工程的不确定性,确保系统的整体稳定性。但,大模型的到来,过去稳定的软件工程带来了新的预期—— 可能也不是所有事情都是稳定的

大模型自身的复杂度和特性,决定了其并不如我们过去软件工程通过代码来完成的逻辑那么的稳定和明确。对于一段代码,在设计良好的情况下,我们可以认为其 Input 确定的情况下, Output 也是确定的。但对于大模型来说,至少此刻,我们还没有那么的笃定我们相同的输入一定可以获得相同的输出。这使得过去的软件工程的常规手段出现了裂痕 —— 虽然你的逻辑一切都很清晰和明确,但系统自身的输出依然随机的。而这些随机,为项目自身的稳定性带来了隐患。

也正是因为这些随机问题,使得大模型应用时代的开发,和过去我们熟悉的应用开发开始略有不同 —— 我们需要开始关注模型层面的评测。评测从一个边缘指标,只有算法需要关注的指标,成为如今每一个大模型应用开发者需要关注的指标。如果要下一个论断,那便是 —— 评测即业务

我们为什么要做测评?

作为一个传统工程出身的同学,我很擅长基于对于业务的理解,建设出一个业务系统,帮助业务解决的问题。我曾经和团队一起开发了一款AI文档生成工具,起初只关注功能是否能跑,直到Leader问我 「业务效果如何?准召指标如何?」,我一脸懵,在那一时刻我才知道何为评测,让评测进入到我的项目流程中。

是的,那个时候的我,脑海中完全没有评测的概念,所以也没有做评测的意识,只知道业务在稳定的跑,我们可以拿到正向的用户反馈,但对于业务的效果到底如何?其实我并没有概念。也是在那一次,我开始恶补评测相关的知识,懂得应该如何进一步去做评测,也才有了写这篇文章,告诉你不要犯和我一样的错误。

为什么过去不需要评测?

评测并非大模型的出现时才有的话题,只是在过去,我们大部分时候调用的是一些稳定的服务,比如数据库或者是第三方的 API,他们的行为是可预测的,所以我们只需要关心功能本身。而大模型则不同,大模型本身就是不确定性的来源。

实际上,在传统搜索领域、机器学习领域,评测也是早已有之的概念,只不过这些功能过去往往是作为一个单独的模块存在,所以在工程上使用相关能力的时候,默认假设是相关的模块是可信的,模块内部的准召指标由模块内部的工程和算法同学来完成。业务工程团队更多关注的是工程实现层面的功能是否可用,而非关注效果指标 —— 比如设计的功能是否正常运转,相关的功能模块是否可见、可用。

而大模型应用的时代,大模型不再是作为一个额外的业务模块被调用,而是嵌入在我们的业务系统之中,这种从「外部」到「内部」的转变,意味着我们必须将评测融入到开发的每一个环节,而不是把它看作一个独立的模块。相比于传统的测试和评测只关注功能是否可用,我们开始需要关注模型的性能、数据的质量、用户体验等多哦个不同的模块。其占比也有了巨大的提升。在过去,我们的产研测的配比往往是 1:(5~10):1,但如今随着评测的重要性不断提升,一个更加合理的比例可能是 1:(5~10): 2,这里多出来的1 个人,就是服务于大模型所带来的不确定性的变化所导致的 —— 我们需要有更多的人来保障模型的效果

我们应该怎么做好评测?

如果你认可前面的逻辑,那么就意味着我们拥有了共识:大模型是不那么稳定的,我们需要支付额外的成本,来保障大模型在我们业务系统当中的保持稳定。而基于这个共识,我们就可以开始设计我们的评测系统和方案了:

以终为始:定义业务指标和技术指标

进行评测的第一步,便是定义业务指标的含义和价值,明确模型的输入和输出。评测即业务的含义也在于此,如果你在第一步完成的足够好,其实评测的 80% 的价值便已经拿到手。业务指标因为和业务强相关,不具备太强的通用性,这里就按下不表,我们把精力放在更加通用的技术指标上。

如果你的业务系统当中接入了大模型,则应该关注下面这些指标:

  • 生成质量指标: 评估大模型生成内容的质量。这部分有一些可以参考的评测方式(比如Bilingual Evaluation Understudy、 Recall-Oriented Understudy for Gisting Evaluation 等),不过更加靠谱的还是依赖人工进行打标,毕竟最终是需要由人来评估生成的内容是否符合要求。在人工打标的时候,一般而言,大家会关注生成的内容的有效性、流畅度、连贯性、相关性等指标。
  • 模型效率指标:评估大模型的推理速度、吞吐量、计算资源消耗等。如果你使用的是云端的大模型 API,则可以重点关注模型推理速度和吞吐量,这些可能会直接影响到你的业务系统体验和业务模式涉及(让用户等待还是直接做成异步的任务模式)。而如果你使用的是本地的模型进行运算,则还需要进一步关注到模型大小、内存占用和计算资源消耗,这些指标可能会影响到你的业务系统选型和成本计算。
  • 模型安全指标:评估大模型针对一些恶意请求的处理能力。这部分则可以重点关注模型是否会生成出有害、不当或歧视的内容;是否会出现敏感信息泄露的等。大模型在落地的过程中,会遇到一些不友好的用户请求,如果没有相对应的处理能力,可能会直接让你的应用遭遇滑铁卢,因为安全审核没做好直接被举报挂掉。

如果你的系统在接入大模型的基础之上,还做了相应的数据库系统,来实现 RAG,那么还要额外关注:

  • 准确率:评估在所有召回的文档中,真正与用户相关文档的性能占比有多少,可以帮助你衡量召回结果的效果,减少给大模型的噪音和无关信息,提升生成的准确率。准确率低通常是因为检索模型召回了太多不相关的文档,此时应该提高相似度阈值或优化检索模型使其更严格;
  • 召回率:评估在所有用户意图相关文档中,被召回的文档占据所有用户意图相关的文档的占比,可以帮助你确保检索结果的完整性,确保不遗漏重要的信息。召回率低通常是因为检索模型漏掉了很多相关的文档,此时应该降低相似度阈值或优化模型使其更宽松。
  • 命中率:评估在用户的多次意图查找中,能命中至少一个文档的比率,可以帮助你判断当前知识库内容的是否可以覆盖用户的意图。如果命中率低,可能意味着你需要去补充知识库当中的内容,或者是去优化查询的 Query。

而如果你的业务系统是诸如生成代码之类的场景,可能还需要观测代码执行成功率、代码执行成功率等一系列指标。

上述的这些指标,只能作为一个初步的导览,到了具体的业务当中,肯定还要和业务结合做一些调整。但总的来说,当你想清楚你要观测哪些指标,要进行何等的评测时,其实你的业务已经想的大差不差了,剩下的只不过是通过评测选择出合适的模型和 Prompt,并用工程手段将其串联起来。

清洗数据:高质量评测的关键

定义出了指标,下一步要做的事情,是清晰出高质量的数据,参与到评测,这里就需要你有高质量的数据,能够辅助你的业务进行评测。不同的评测目标对应着不同的数据,因此,也需要维护多组不同的数据集,用于进行不同目标的评测。

随着业务的不同,你所选择的数据集很有可能是无法使用公开数据集覆盖的,则就需要考虑自己去准备数据集,这部分数据可能来自于线上的数据,也可能是人工便携的数据,或对于现有的数据进行标注,从而清洗出高质量的数据参与评测。

获得第一步数据后,下一步则需要对拿到的数据进行清洗。上一环节拿到的数据很有可能存在噪声,或者是数据的不规范,因此,你需要对这些数据进行清洗,移除数据中的错误、重复和不完整的信息,并对格式进行统一,去除无用的数据,规范化数据。如果你的数据可能涉及到一些敏感数据,还要进行数据的脱敏处理,以保护用户的隐私。

在数据的清洗这部分,你会耗费大量的时间和精力,因此,要提前规划数据的收集和清洗,以降低后续的压力。同时,也要提前准备相关的人力,来支持数据集的建设。

除了上述的问题,还要关注到数据集的质量(代表性、准确性、多样性和完整性)、规模、数据偏差等。确保数据集本身不会出现偏见和问题,而将模型导向一个错误的方向。

当你准备好上述的这些数据,接下来要做的事情就相对简单 —— 维护好数据,定期更新,以适配业务,并持续性的对系统和模型进行评测和指标观测,确保各项指标没有出现问题。

持续评测: 常态化过程

评测不是一个一次性的事情,大模型的发展很快,特别是使用云 API 的场景,模型厂商很有可能在后台帮你升级模型,你的线上数据分布也可能发生变化,因此你更需要持续、不断的迭代你的评测。定期(比如每周、每月、每个大版本迭代后)化,常态化(将评测融入到项目的开发迭代流程中)进行评测,从而帮助你及时发现问题,快速迭代。持续评测不是可有可无的选项,而是大模型应用时代不可或缺的必要环节。

评测即业务

在大模型时代,评测即业务,评测不再是锦上添花,而是生死攸关。没有评测,你的产品就像一艘没有罗盘的船,随时可能偏离航向。随着大模型在我们的业务系统中的占比越来越高,其已经不再是系统的附加项,而是我们业务系统成功的基础。因此,作为一个 AI 时代的产品经理/项目成员,更要懂得对业务测评。如果说一个暴论,评测在业务流程中如果占比少于 30%,这个业务大概率是有 50% 以上的优化空间的,没有评测,你根本不知道自己的现状和上限,又如何获得进一步的提升呢?