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

发布时间:2026/10/5 4:54:17

根治大模型幻觉!这套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
延伸阅读

更多相关文章

2026/10/4 13:03:28

计算机考试-C K列迁移—东方仙盟

#include <stdio.h> #define M 3 #define N 5void fun(int (*a)[N], int k) {int i, j, p, temp;/********found********/for(p 1; p < 【1】; p){for(i 0; i < M; i){temp a[i][0];/********found********/for(j 0; j < 【2】; j){a[i][j] a[i][j 1];}/*…

2026/10/5 4:52:20

用Agent Skills打破数据孤岛:跨系统智能查询的轻量方案

上周五我处理一个客户投诉&#xff0c;前后开合了四个后台&#xff1a;先翻CRM看客户合约周期&#xff0c;再去工单系统查最近三个月有没有服务记录&#xff0c;然后回知识库翻产品说明&#xff0c;最后还要找运维要一份日志摘要。整个过程四十分钟&#xff0c;大部分时间都耗在…

2026/10/5 4:52:20

无人机视角森林桩燃烧识别数据集:二分类与YOLOv5实战指南

简介&#xff1a;面向无人机森林巡检与火灾监测场景的图像分类数据集&#xff0c;专门聚焦森林桩燃烧状态识别&#xff0c;包含燃烧、未燃烧两个类别。数据已按训练集与测试集划分并以文件夹形式保存&#xff0c;训练集约两万张图片、测试集约八千六百张图片&#xff0c;既适合…

2026/10/5 4:52:20

图神经网络热点追踪:GraphRAG、表情识别与动态图实战解析

2026年第39周&#xff0c;我照例打开arXiv的CS.LG分类&#xff0c;把过去七天和图神经网络相关的论文扫了一遍。今年有一个很明显的体感&#xff1a;光看标题里的“graph neural network”已经不够了&#xff0c;大量工作把它藏在了别的关键词后面&#xff0c;比如graph reason…

2026/10/5 4:52:20

Qt图表库选型实战:Qwt、QChart与QCustomPlot性能对比与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 4:52:20

LLM 模型是胡说八道引擎

原文&#xff1a;LLM Models Are Bullshit Engines | Jeffrey Snovers blog 发布于 2026 年 7 月 20 日 你的 LLM 系统不必如此 哈里法兰克福写过一篇精彩的随笔&#xff0c;叫《论胡说八道》。他的核心手法在于一个大多数人都会忽略的区分&#xff1a;说谎者与胡扯者之间的…

2026/10/5 4:47:20

UE5地编法线贴图DirectX与OpenGL坐标系差异及转换指南

地编入门第一课&#xff0c;往往不是刷地形&#xff0c;也不是摆资产&#xff0c;而是先把法线贴图的坐标系搞清楚。很多人在 UE5 里导入一张法线贴图&#xff0c;发现光照方向不对、墙面凸起变凹陷、地面材质看起来发灰发闷&#xff0c;排查到最后&#xff0c;经常就是 Direct…

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起&#xff1a;为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高&#xff0c;很多人第一次听到会以为是某个新模型的名字&#xff0c;其实它更像是一种思路——把Jev模型的能力当作底座&#xff0c;通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同"&#xff1a;多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西&#xff0c;大概率会有一种感觉&#xff1a;单个 Agent 能做的事情&#xff0c;其实很快就摸到天花板了。你给它一个提示词&#xff0c;挂几个工…

2026/10/4 1:01:05

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑