想象你走进一家餐厅,对服务员说:“来份不太辣的宫保鸡丁,大份。”服务员不会把这串话原封不动地喊进后厨,而是迅速在点单小票上写下:菜名=宫保鸡丁、辣度=微辣、份量=大份。后厨拿到小票,立刻明白该怎么做。大模型驱动的 AI Agent 在调用工具时,也面临同样的“翻译”任务——用户只说人话,工具却只认结构化参数,中间需要一个称职的“翻译官”。这个翻译官,就是参数提取。 如果这一步出了差错,轻则工具报错,重则整个任务跑偏:天气工具拿不到城市名、日历工具排错会议时间、订单系统把型号填错。好在工程界已经摸索出三条路线:规则匹配、模型抽取、LLM 生成。它们像餐厅里不同层级的服务员——有照本宣科的实习生,有经验丰富的老手,也有能随机应变的大厨。这篇文章就带你走进 Agent 的“后厨”,看清这三条路线各有什么本事、哪些软肋,以及真实项目里如何组合落地。
掌握 Agent 工具调用的“翻译官”本领——把自然语言准确转成结构化参数,是 AI 应用开发、智能体落地与对话式交互设计的核心基本功。
可视化演示
展示Transformer中自注意力机制的计算过程:每个token作为Query与其他token的Key计算注意力权重,动态展示权重矩阵的变化与信息流动。
本节配有交互动效(进入视口后自动加载,约 3KB)。
自注意力权重矩阵 Query=T1时,注意力集中在自身及相邻token 权重越大表示信息流动越强 Attn(Q,K)=softmax(QK^T/√d_k) 自注意力允许每个位置关注序列中所有位置的信息
参数提取概述
餐厅里,顾客才不管后厨需要什么格式,他们只负责说:“不要太辣”“大份”“七点之前做好”。服务员的价值,就在于把这些零散的人话整理成一张后厨看得懂的小票。AI Agent 也一样——工具接口只认结构化参数:天气工具要 city 和 date,日历工具要 start_time 和 duration,而用户开口就是“北京明天呢”。中间这层“翻译”,就是参数提取。
在 Agent 的工具调用链路里,大模型先决定“要不要调工具、调哪个工具”,但光有决定还不够。假如天气工具有能力,却拿不到“北京”和“明天”,一次成功的调用依然会失败。参数提取的任务,就是从用户话术中识别出工具相关的信息片段,再映射成工具要求的字段值。它和意图识别是两回事:意图回答“用户想干什么”,参数提取回答“干这件事需要的具体信息是什么”。
技术上的形式化定义很简单:一句话进,一组键值对出。
难点在于自然语言天生多样:指代“那个”、省略“和上次一样”、口语“七点来钟”、同义表达“鸡丁”都能指代宫保鸡丁。提取不完整,工具缺参报错;提取错误,工具执行歪。所以工程上从来不是单一方法包打天下,而是规则匹配、模型抽取、LLM 生成三条路线分层配合——就像一家餐厅不会只靠一个服务员,新人背死规矩、老手凭经验、大厨看全局,各有各的戏份。
- Extract(·) 提取函数输入一句话,输出一组结构化参数,相当于服务员把口语写成小票。
- u(用户话术)顾客原话,例如“要个不太辣的宫保鸡丁,大份”。
- params(参数集合)工具认识的结构化键值对,如菜名、辣度、份量。
- ↦ 映射关系从“一段话”到“一张表”的转化,话术中的信息被拆分、归类、落位到各自栏位。
规则匹配提取
先看看餐厅里那位刚来的实习生服务员。他手里有一本“标准问法册子”:客人说“宫保鸡丁”,他能对上;客人改口“鸡丁”“宫保”,他就僵住了,拿着笔不知道往哪栏写。规则匹配提取就是这样的实习生——把每种参数的常见表达预先写成模板,用户的话术挨个去比对,命中的地方就填进对应的槽位。
概念上这是最朴素也最直观的路线。工具需要什么参数,工程师就为它定义什么模式。比如日历工具需要时间和地点,那就准备两套抽取器:时间用正则、地点用词典。槽位填充的思路则是预先把参数类别声明成槽位——dish、spicy、size——再用词表去话术中找值。“宫保鸡丁”命中菜品词典,填 dish;“不辣”命中辣度词典,填 spicy。条理清晰,结果可解释。
技术展开来看,正则表达式的威力来自它精确描述字符形态的能力。拿时间抽取举例,想从“晚上7点”里拿到"7":
规则匹配的优点很突出:零训练成本、毫秒级延迟、逻辑完全可解释,出了问题能直接改一行正则。代价同样明显:表达一变就失灵,“傍晚七点”“晚上七点多”这类新说法需要人工不断给它补模板;规模一大,词典和正则堆积成山,维护成本飙升。它适合话术高度模板化的场景——比如工单里“订单号:12345”这种固定格式,用规则又快又准。但对开放式的对话,实习生服务员很快就不够用了。
- 括号 ( ) 捕获组把匹配到的内容单独留存下来,方便后续取出使用,相当于小票上预留的“数字栏”。
- \d{1,2} 数字符\d 表示任意数字字符,{1,2} 表示出现 1 到 2 位,所以“7“和”20”都能命中。
- [点时] 字符类匹配“点”或“时”任意一个字符,类似“这个位置必须是点或时”。
- 组合判定先抓数字,再看后接字符,两步都满足才认定是时间,防止把“7号桌”错认成时间。
模型抽取路线
干了五年的老服务员,听完“来份鸡丁,别放辣,几个人吃的那种”,就能猜出菜名、辣度、份量三栏怎么填。他没背过这句话,但见过的菜式多了,听音辨义成了肌肉记忆。模型抽取路线就是这位老服务员——不靠死模板,而是从大量标注样本中学会“什么样的词,该进哪个槽位”。
技术上,这条路线的核心是序列标注,也叫槽位填充。先把用户话术切成一串词,然后给每个词打标签:B-Dish 表示菜品开始,I-Dish 表示菜品继续,O 表示无关信息。“鸡丁”“微辣”会被标成 B-Dish、B-Spicy,模型学到的是词和标签的关联规律,而不是死记某句话。
模型的训练目标,是找到给定话术下最可能的标签序列:
相比规则法,模型抽取最大的优势是泛化。规则只会认“宫保鸡丁”四个字,而模型在训练中见过“宫保”与“鸡丁”共现的模式,即使句子换个顺序、加个同义词,它也能把“鸡丁”识别为菜品。代价也很现实:需要一批人工标注的数据做训练,冷启动周期长;而且一旦用户话术明显偏离训练分布——比如突然冒出一家从来没听过的菜系——老服务员照样可能听岔。这条路线适合话术有一定开放度、团队又有标注资源的场景。
- x 输入词序列话术被切分成的词序列,是模型的输入。
- y 标签序列每个词对应的标签,例如 B-Dish、I-Dish、O 等。
- P(y|x) 条件概率在给定这句话的情况下,某套标签组合出现的概率,反映“这句这么说,标签这么贴”的可能性。
- argmax_y 取最优遍历候选标签组合,选出概率最大的那个序列作为最终标注。
LLM生成方案
最后登场的是餐厅里那位最资深的大厨兼服务生。他不会机械填表,而是把整句话听完、想明白,然后自己组织一张小票:“不要太辣”被他意会成“辣度:微辣”,“上回那桌那个菜”他也能根据上下文推断。但偶尔他也会自由发挥,在小票上多加一行“送份例汤”——服务好是好,就是有点贵,偶尔还加戏。
LLM 生成方案正是把参数提取当成一次“生成”任务。不给 LLM 预设一堆正则和词典,而是准备一段提示词:告诉它你是一个点单服务员、要提取哪些字段、每个字段什么含义,再给一两个示例。然后让模型直接读用户话术,输出一段结构化 JSON。相比前两条路线,它把意图理解和参数抽取合并成一步,天然能处理省略、指代、口语——因为模型靠的是对整个句子的理解,而不是局部模式的命中。
形式化地说,LLM 在给定话术和参数 schema 的条件下,挑选概率最高的参数组合:
工程上要格外管住 LLM 的“自由发挥”:提示词里写清字段枚举,输出后用 JSON schema 校验格式,发现缺字段或类型不对,把错误信息回喂给模型让它重试,这就是自修正。当然,请这位大厨式服务生的代价是延迟和 token 成本明显高于前两者,还有幻觉风险——它可能填出话术里根本不存在的值。所以现实项目里,它常被用作“最后的王牌”:规则和模型搞不定时再请它出场。
- a 参数结果LLM 要生成的 JSON 参数对象,类比服务员填好的小票。
- u 用户话术用户的原始请求文本,是生成的依据。
- s 参数 schema工具声明允许的字段和类型,像小票上预留的栏位,约束模型不要乱填。
- θ 模型参数LLM 经过海量预训练学到的权重,决定了“理解”的上限。
- argmax_a 最优解码在符合 schema 的参数空间里,选择概率最高的那组值。
方案对比选型
餐厅老板月底算账:请多少实习生、多少老员工、多少大厨,得看客流量、人均客单价和预算。AI 项目选参数提取方案也是这笔账——在准确率、延迟、成本、可维护性四个维度之间做权衡,没有绝对最好的方案,只有最适合当前业务的组合。
先看清楚每条路线的画像。规则匹配:延迟最低、成本几乎为零、维护靠人工,准确率天花板低,适合封闭场景。模型抽取:准确率中上、延迟可控,但需要标注数据和训练流水线持续维护。LLM 生成:准确率上限最高、最灵活,不过单次调用要付 token 费,延迟按秒计。选型时把这些维度放进同一个账本里算总账:
实操中最常见的不是单选题,而是混合策略:先让规则和模型处理简单高频的场景,因为它们又快又便宜;当置信度不足——比如槽位大量缺失、规则连续匹配失败——再升级给 LLM 兜底。就像餐厅把稳定出品的菜交给固定师傅,把“客人现场改需求”的难题交给大厨。选型的本质不是挑冠军,而是排兵布阵,让每条路线都待在它最划算的位置上。
- E 错误率参数提取出错导致任务失败或用户投诉的比率,是准确率的反面。
- L 平均延迟从话术输入到参数就绪的时间,交互型 Agent 对延迟特别敏感。
- M 单次调用成本模型推理产生的 token 费用或算力开销。
- α β γ 权重系数团队按业务场景设定的三个权重,加起来为 1——越怕什么,就把权重压在哪一项上。
工程落地实践
一家口碑稳定的餐厅,光有点单流程还不够,还有三件套:领班复核小票、顾客反馈本、季度轮岗培训。参数提取上线也是这样——把流程跑通只是开始,要让它长期可靠,必须配套兜底机制、评测方法和迭代优化。
兜底机制是防错的第一道闸门。参数缺失时填默认值;参数明显不合理时发起澄清对话,反问用户“您说的下午三点是今天还是明天?”;模型反复失败时转人工处理。说白了,就是像领班一样在交单前把一眼可疑的小票拦下来。评测机制则像顾客反馈本:构建一组 golden set——一批“话术到期望参数”的标准样例,每次改动规则、提示词或模型后都要在这组数据上跑一遍,防止老功能回退。
量化评测效果,业界最常用的是 F1 分数,它综合了两个视角的准确程度:系统提取出的参数里有多少是对的,以及应该提取的参数里系统提全了没有。调和平均把它们拧成一个数字:
有了这三件套,就可以放心迭代:每周从线上捞新的失败案例补进 golden set,调整词典、优化提示词、微调模型,再用回归测试确认没有引入新问题。领班复核是兜底、反馈本是评测集、轮岗培训是持续迭代——这三样一件不缺,Agent 的“翻译”能力才能随真实话术的演化越用越稳,真正在业务里站住脚。
- P 精确率(Precision)提取出的参数中,正确的占比——好比小票上填对的栏位数除以填过的栏位总数。
- R 召回率(Recall)应该提取的参数中,被正确提取的占比——好比该填的栏位里你填对了多少。
- F1 调和平均当 P 和 R 一个高一个低时,调和平均会比算术平均更严格地反映“偏科”,避免被单个指标带偏。
AI 应用场景
智能会议助手:帮我订个会议室
阶段:工具调用前的参数提取
解决的问题:用户发一句“帮我订明天下午三点到四点的大会议室”,会议系统 API 需要 title、start_time、end_time、room_type 等精确字段。以往要么人工填表单,要么写死规则只认“X点到Y点”的固定句式。用参数提取后,Agent 把“明天下午三点到四点”解析成具体时间戳,把“大会议室”映射成 room_id,直接生成有效的建会请求。
具体案例:企业 IM 群里的会议室机器人,用户发“周六下午也用一下,行政部那间”,Agent 提取出 {"date":"2025-06-28","period“:“下午”,”location":“行政部”},再结合当前日期计算具体的开始结束时间,调用日历 API 创建事件并回复预约链接。
数据分析 Agent:自然语言查报表
阶段:自然语言到查询参数的映射
解决的问题:BI 平台查询条件多,用户随口“这个季度华东卖得怎么样”要翻译成 {"region“:“华东”,”quarter":"2025Q3","metric":“sales“}。传统下拉筛选器要层层点选,规则法只能精确匹配”华东”“华北”等枚举词,遇到“咱们这边”“东边那几个省”就失效。参数提取把口语和省略转成查询参数的完整填充。
具体案例:运营人员提问“上个月退货率最高的三个城市是谁”,Agent 提取出 {"metric“:“退货率”,”period“:“上月”,”top":3},调用数据分析工具执行查询,返回 Top3 城市列表及退货率数值,并附带简单结论。
客服工单自动化:把投诉转成工单字段
阶段:意图识别与参数提取协同
解决的问题:客服系统需要把用户抱怨转成结构化工单:order_id、issue_type、urgency。规则法只能抓“订单号:123”这类格式,口述“上周那个单子”就抓不到。用 LLM 参数提取后,能识别指代关系,同时补全缺失字段。
具体案例:电商售后机器人收到消息“我上周买的那个耳机,绿联的,没声音,急着用”,提取出 {"product“:“耳机”,”brand“:“绿联”,”issue":"no_sound","urgency":"high"},自动建工单并挂入加急队列,省去人工逐条录入。
Python 演示
# -*- coding: utf-8 -*-"""Agent 参数提取三种方案的最小可运行对比演示."""import re class ParamExtractor: """餐厅点单式参数提取器: 把用户话术转成结构化订单.""" def __init__(self): # 方案1: 规则匹配 (正则 + 固定词典) self.time_pat = re.compile(r"(\d{1,2})[点时:](\d{1,2})?分?") self.slots_map = { "大份": "大", "中份": "中", "小份": "小", "不辣": "不辣", "微辣": "微辣", "中辣": "中辣", "特辣": "特辣", } self.dish_names = ["宫保鸡丁", "水煮鱼", "红烧肉"] self.dish_keywords = ["鸡", "鱼", "肉"] # 方案3: LLM 提示词模板 (真实项目拼进大模型请求) self.llm_prompt = """你是一名点单服务员, 从用户话术中提取结构化订单参数, 只输出JSON.用户说: {text}输出格式: {{"dish": str, "spicy": str, "size": str}}""" def extract_by_rule(self, text): """方案1: 纯规则匹配, 只能命中模板内的说法.""" order = {"dish": None, "spicy": None, "size": None} for name in self.dish_names: if name in text: order["dish"] = name break for word, val in self.slots_map.items(): if word in text: if "辣" in word: order["spicy"] = val else: order["size"] = val time_m = self.time_pat.search(text) if time_m: order["time"] = time_m.group(0) return order def extract_by_slot(self, text): """方案2: 模拟模型抽取, 支持口语变体与关键词泛化.""" order = {"dish": None, "spicy": None, "size": None} if any(k in text for k in self.dish_keywords): order["dish"] = "命中菜品关键词" for word, val in self.slots_map.items(): if word in text: if "辣" in word: order["spicy"] = val else: order["size"] = val if "不吃辣" in text or "不要辣" in text: order["spicy"] = "不辣" time_m = self.time_pat.search(text) if time_m: order["time"] = time_m.group(0) return order def extract_by_llm(self, text): """方案3: LLM生成 (此处用模拟结果演示; 真实实现见注释). 真实实现: response = openai.ChatCompletion.create( model="gpt-4o", messages=[{"role": "user", "content": self.llm_prompt.format(text=text)}] ) return json.loads(response["choices"][0]["message"]["content"]) """ base = self.extract_by_slot(text) # 模拟 LLM 能理解绕口说法: "来条鱼" 推断为已知菜品 if base["dish"] and "鱼" in text: base["dish"] = "水煮鱼" return base def run(self, text): print("用户说:", text) print("规则法:", self.extract_by_rule(text)) print("槽位法:", self.extract_by_slot(text)) print("LLM法:", self.extract_by_llm(text)) print("-" * 44) if __name__ == "__main__": ex = ParamExtractor() ex.run("来一份不辣的宫保鸡丁,大份,晚上7点") ex.run("我不吃辣,来条鱼,要小份的")
self.time_pat = re.compile(r"(\d{1,2})[点时:](\d{1,2})?分?")用正则预定义时间格式模板,规则匹配的典型写法for name in self.dish_names:依次比对预设菜名词典,属于规则法的固定词表if "不吃辣" in text or "不要辣" in text:槽位法模拟模型学到口语变体,泛化能力比规则略强self.llm_prompt.format(text=text)把用户话术拼进提示词模板,让 LLM 生成 JSONresponse = openai.ChatCompletion.create(...)真实项目中的 LLM 调用入口,返回后解析 JSONif __name__ == "__main__":保证脚本可直接运行,展示三组关键测试用例
常见误区
误区用户话术不就那么几种说法吗?我把常见句式都写成正则或者整理成词典,匹配一下不就提取出来了?没必要上模型,费钱又费事。
正解真实用户的话术远比想象中多样——有省略、指代、同义词、口误,甚至语法不完整的句子。规则法只对“话术落在模板内”的情况有效,话术稍微绕一点就提取失败或提取错误。工程上线后你会发现,正则和词典的维护量会随话术复杂度指数增长,最终压垮团队。参数提取应当按场景分层,规则负责它擅长的固定格式,开放表达交给模型。
为何常见:看到“提取参数”四个字容易联想到简单的字符串处理,习惯了“给定格式抓内容”的思维,低估了自然语言本身的开放性和多样性。
误区大模型那么聪明,理解能力那么强,不管什么参数提取需求,统统把用户话术丢给它,让它输出 JSON 不就行了?省得维护正则和模型。
正解LLM 生成方案准确率高、灵活性强,但代价是每次调用都有 token 成本、延迟明显高于规则法,而且存在幻觉风险——可能填出话术里没有的值。对高频简单的提取需求,用 LLM 会显著推高成本;对安全敏感场景,幻觉也是隐患。合理的做法是分层路由:简单参数用规则和模型,复杂场景再升级 LLM 兜底。
为何常见:大模型能力宣传铺天盖地,容易让人形成“大模型=标准答案”的思维,忽略了成本、延迟和稳定性的工程约束。
误区模型抽取路线?不就是让大模型去理解话术吗?反正都是“模型”,跟 LLM 生成是一回事,直接调 API 就行。
正解模型抽取路线指的是传统的序列标注/槽位填充方法——训练一个小型专用模型,输入词序列、输出 BIO 标签序列,模型结构和推理流程与 LLM 完全不同。它不需要每次调外部大模型接口,延迟和成本都低得多,但需要自己准备标注数据并维护训练流程。它和 LLM 生成是两条独立的技术路线,适用场景和资源要求都不一样。
为何常见:“模型”两个字有歧义,初听者容易把“使用了模型的方案”和“用大模型生成”混为一谈,忽略了传统监督学习和 LLM 提示工程之间的本质区别。
误区只要在提示词里写一句“请以 JSON 格式输出”,模型就会乖乖返回合法 JSON,字段名和类型都不会错,直接解析就能用。
正解LLM 的生成过程有随机性,偶尔会输出 Markdown 代码块、多余的说明文字、字段名拼写漂移,甚至填出话术里不存在的参数。工程上必须用 JSON schema 做输出约束,解析失败就重试,重试仍失败就触发自修正——把校验错误信息回喂给模型让它重新生成。提示词只是“请求”,校验才是“验收”,两者缺一不可。
为何常见:把大模型想象成一台听话的打印机,以为写了格式要求就能稳定输出,忽略了其概率生成本质和幻觉可能性。
误区参数提取规则和提示词写完、测试通过、成功上线,这件事就算结束了。后面要是出问题,那就是模型的问题,不是我的问题。
正解真实用户话术会不断演化,新词、新场景、新说法层出不穷。上线只是开始,需要持续构建 golden set 评测集,定期从线上失败案例中提取新样本,回归测试后迭代词典、正则、提示词甚至模型。没有这套循环,系统的准确率会随话术演化逐渐下滑,直到某天用户发现 Agent “突然听不懂人话”。
为何常见:把参数提取当成一次性的开发任务,缺少“数据回流-评测-迭代”的运营思维,忽视了自然语言系统需要持续养护的特性。
面试题
Q1. 参数提取的核心目标是什么?
- A.转成工具可用的结构化参数← 正确答案
- B.生成自然流畅的对话回复
- C.对用户话术做情绪分类
- D.提高模型训练数据质量
答案:A。参数提取的本质是“翻译官”:把用户一句自然的请求,映射成工具接口认识的结构化字段,类似服务员把口语写成订单小票。B 是对话生成的目标,C 是情感分析,D 是数据工程的事,都与参数提取无关。
Q2. 规则匹配最主要的特点是什么?
- A.精确高效但拓展性差← 正确答案
- B.泛化能力强但速度慢
- C.需要大量标注数据
- D.完全无需任何维护
答案:A。规则匹配像背模板的实习生:命中模板就精确快速,毫秒级延迟、零训练成本;但表达一变就失灵,需要人工持续补正则和词典,泛化能力弱。B 说反了,C 是模型抽取的代价,D 忽略了规则需要长期维护。
Q3. 模型抽取路线相比规则路线的最大优势是什么?
- A.泛化到没见过的同义说法← 正确答案
- B.完全不需要任何训练数据
- C.运行时延迟相对更低下
- D.保证不会产生任何错误
答案:A。模型抽取从标注数据中学会“词到标签”的规律,所以能泛化到训练集没出现过的同义表达,像老服务员凭经验听音辨义。B 说反了,模型恰恰需要训练数据;C 规则更快;D 任何方案都可能出错。
Q4. 槽位填充的基本思想是什么?
- A.预置槽位从话术中取值填入← 正确答案
- B.先聚类再人工标记主题
- C.语义压缩减少接口调用
- D.将话术编码成低维向量
答案:A。槽位填充先定义好参数栏位(dish、spicy、size),再从话术中识别对应的值填进去,就像服务员往小票各栏写字。B 是主题聚类思路,C 是文本摘要,D 是向量化表示,都不是槽位填充的核心。
Q5. 正则 ^(\d{1,2})[点时] 中 [点时] 的含义是什么?
- A.匹配“点”或“时”中任一字符← 正确答案
- B.同时匹配“点”和“时”两字符
- C.要求数字后跟随两个字符
- D.匹配任意一个标点符号
答案:A。方括号是正则的字符类,表示“任选其一”,[点时] 只消费一个字符,可以是“点”也可以是“时”。B 是错误的对“并集”理解,C 误解了字符类的长度,D 混淆了标点与中文字符。
Q6. LLM 生成方案的优点包括哪些?
- A.理解上下文适应口语新说法← 正确答案
- B.无需设计提示词和结构约束
- C.意图理解与抽取可统一完成← 正确答案
- D.调用成本通常低过规则法
答案:AC。LLM 靠整句理解提取参数,能处理省略指代,同时把“理解意图”和“填参数”合并为一步,这是它相对前两条路线的核心优势。B 说反了,LLM 恰恰需要精心设计提示词和输出约束;D 也错了,LLM 的 token 成本通常远高于规则法。
Q7. 综合方案选型时最常见的策略是什么?
- A.规则模型保底大模型处理复杂← 正确答案
- B.全部交给大模型处理最省心
- C.全部用规则匹配最为精准
- D.各方案随机轮询择优返回
答案:A。工程实践常用混合策略:简单高频参数走规则和模型,又快又便宜;遇到置信度不足或规则失灵的复杂场景,再升级 LLM 兜底。B 忽视成本和延迟,C 夸大规则能力,D 随机轮询没有业务依据。
Q8. 工程落地中的兜底机制包括哪些?
- A.给缺失参数填充默认值← 正确答案
- B.主动向用户追问确认信息← 正确答案
- C.失败时静默吞掉错误继续
- D.将疑难案例转交人工处理← 正确答案
答案:ABD。兜底机制像领班复核小票:参数缺失时给默认值,明显不合理时发起澄清对话反问用户,反复失败则转人工。C 是典型的错误做法——静默吞错会让用户拿到一份“看起来成功实则错误”的结果,是工程红线。
Q9. F1 分数在参数提取评测中的含义是什么?
- A.精确率与召回率的调和平均← 正确答案
- B.精确率与召回率的算术平均
- C.召回率乘以响应延迟的积
- D.仅衡量单一结果的正确与否
答案:A。F1 = 2PR/(P+R),它同时惩罚“多填错的”和“漏填对的”,比算术平均更严格地反映偏科。例如 P=1.0 但 R=0.5 时,算术平均 0.75,调和平均只有 0.67,更真实地暴露“提了很多但漏了一半”的问题。
Q10. LLM 自修正提升参数提取准确率的做法包括哪些?
- A.先输出结构化结果再校验← 正确答案
- B.校验失败让模型参考错因重生成← 正确答案
- C.用字段约束限定允许的类型← 正确答案
- D.增加随机扰动提升结果探索性
答案:ABC。自修正闭环是“生成→校验→纠错重生成”:先让 LLM 输出 JSON,用 schema 校验字段和类型,失败时把校验错误信息回喂给模型重新生成。A、B、C 正是这个闭环的三个环节。D 是随机搜索的思路,与提升提取准确率无关,还会引入不稳定。