尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

根治大模型幻觉!这套Harness工程框架,彻底解决输出随机性

根治大模型幻觉!这套Harness工程框架,彻底解决输出随机性 文章目录前言1 先聊聊啥是Harness1.1 说白了就是给大模型套缰绳2 整个框架的底子一个通用调用函数2.1 所有请求都走这一扇门3 第一步一口气生成好几个候选答案3.1 别赌运气我全都要3.2 并发请求的正确打开方式4 第二步让大模型自己当评委打分4.1 自己生的自己评闭环了属于是4.2 为啥打分要串行不一起上5 第三步挑个最好的输出5.1 排序取第一简单粗暴6 把整个流程串起来6.1 一条流水线跑完全程7 最后聊聊这背后的工程思路7.1 拆解开每个环节都能换P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看 传送门https://blog.csdn.net/HHX_01前言不知道你们用大模型写代码有没有这种体验——同一个问题复制粘贴问三遍能给你整出三个完全不同的答案。第一次写的还能用第二次直接给你整个最优解第三次好家伙连不存在的API都敢编出来美其名曰“创造性输出”说白了就是幻觉又犯了。很多人说靠prompt工程能治我试过没用。你把prompt写得再细、规矩列得再多它该抽风还是抽风就像你跟外卖员反复说三遍“不要香菜”他该放还是放全看当天顺手不顺手。那咋整靠人一遍遍改效率太低。今天就给你们唠一套工程化的法子直接把大模型的随机性给管得明明白白。1 先聊聊啥是Harness1.1 说白了就是给大模型套缰绳Harness本来是马具的意思就是用来驾驭烈马的。现在的大模型就像没拴绳的野马跑起来能直接给你窜到姥姥家你永远猜不到它下一句能扯到哪去。这个框架的作用就是给它套上流程缰绳让它按规矩办事。核心逻辑特别简单就三步先生成好几个候选答案再挨个给这些答案打分最后挑分数最高的输出。说通俗点就跟公司招人类似——先海投收一堆简历HR挨个筛选打分最后选最匹配的发offer。一套流程走下来靠谱程度直接往上跳一个档次。2 整个框架的底子一个通用调用函数2.1 所有请求都走这一扇门整个框架最底层就一个核心函数专门负责跟大模型对话。别管你是让它写代码还是让它当评委打分所有请求都从这一个函数走。为啥要单独抽出来总不能生成的时候写一遍调用代码打分的时候再复制粘贴一遍吧以后要加个失败重试、加个请求日志、甚至换个模型用改这一处就全搞定了。这就像小区的快递柜所有快递都往这放取件寄件都找它不用挨个跟不同的快递员对接。而且它还兼容所有符合OpenAI接口协议的模型不管是千问、DeepSeek还是别的只要接口对上就能插进去用跟万能充电头似的走哪都能用。3 第一步一口气生成好几个候选答案3.1 别赌运气我全都要大模型每次生成本质上就是概率抽卡你永远不知道下一次出来的是神级答案还是人工智障。有人说我把temperature调成0总行了吧别天真了就算调成0它也不敢保证每次输出都一模一样。就像你每天走同一条路上班总能遇到不一样的红绿灯没地方说理去。那咋办简单粗暴别赌运气多抽几次。默认生成3个就刚好——太少了覆盖不到随机性太多了费token还费时间3个是成本和效果的经验平衡点。就跟你和同事拼单买奶茶似的怕踩雷就点三款不同的总能喝到一杯合口味的。3.2 并发请求的正确打开方式要生成3个答案总不能一个一个等着生成吧那效率也太低了。直接并行发起请求三个请求一起发出去省时间。这里就得提Array.from这个神器了。别瞎写Array(3).map()那玩意儿创建的是空位数组map会直接跳过空位等于白写。就像你点了三份外卖结果商家只给你装了三个空盒子纯纯无效操作。用Array.from就不一样了一步到位创建数组的同时就把请求发出去三个Promise齐刷刷开始跑能多快就多快。当然这里也有个小坑——要是其中一个请求挂了整批都会跟着失败。真上生产环境得做容错处理咱们先把核心逻辑跑通这些都是后话。4 第二步让大模型自己当评委打分4.1 自己生的自己评闭环了属于是生成完一堆候选答案总不能人挨个看吧那也太费劲了还叫啥自动化。直接让大模型自己当评委给每个答案打个0到10的分数要求就一个只给数字别扯别的。有人说这能靠谱吗哎你还别说只要把评分规则写清楚它评得比很多摸鱼的同事认真多了。你跟它说“当严格的评审”它就真敢给低分你跟它说“友好鼓励为主”它能给你全打9分以上。所以说这个评委的prompt本身也是个玄学参数得慢慢调。还有个小细节万一它没按要求输出数字咱也有兜底直接按0分算不能让它把整个流程搞崩。4.2 为啥打分要串行不一起上肯定有人纳闷生成的时候都并行跑了打分为啥要一个一个来一起上不是更快这就是实打实的工程经验了。生成的时候并发没问题但你一下子怼一堆打分请求过去很容易触发平台的限流直接给你返回429错误——啥意思请求太多给你拒了。就像你去食堂打饭三个人一起挤窗口阿姨直接给你白眼让你后面排队去。该快的地方咱们绝不磨蹭该稳的地方咱们绝不冒进。生成要效率所以并行打分求稳妥所以串行。干活就得这样不能瞎堆并发装样子。5 第三步挑个最好的输出5.1 排序取第一简单粗暴所有候选都打完分了咋选最好的按分数从高到低排个序取第一个就完事了。肯定有较真的朋友说找最大值遍历一遍是O(n)排序是O(n log n)效率低。嗨一共就三五个结果排序那点算力开销可以忽略不计。写个排序一眼就能看明白啥意思比写个循环找最大值直观多了。代码首先是写给人看的顺便能在机器上跑就行这点小事没必要抠算法复杂度。6 把整个流程串起来6.1 一条流水线跑完全程把上面三步拼起来就是完整的流水线了。进来一个需求先生成3个候选结果再挨个给它们打分最后挑分数最高的返回。中间每一步都可以加日志干了啥、结果是啥清清楚楚出了问题也好排查。就跟工厂的流水线似的原料从一头进去经过好几道工序最后从另一头出来成品。大模型不再是瞎输出的黑盒子每一步都在你的掌控之中。7 最后聊聊这背后的工程思路7.1 拆解开每个环节都能换整个框架最妙的地方就是每个部分各司其职互不干扰。想提升输出质量把生成数量从3改成5就行。想让评测更准确换个更强的模型当评委。想换择优规则改成多数投票制也没问题。想加监控加告警往每个阶段后面插代码就完了。这就是单一职责的好处改哪动哪不会牵一发而动全身。很多人觉得那些市面上的重型AI框架特别神秘其实核心逻辑都差不多都是生成、评测、择优这一套。无非是功能更多、封装更厚但骨架都是一模一样的。说白了对付大模型的幻觉和随机性别总想着一劳永逸把它根治。就像养哈士奇你别指望它自己变乖你给它拴好绳、关好笼它照样能当听话的乖狗狗。用工程手段把它管起来比啥都强。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01
返回列表