作者:京东物流 李雪婷。 一、什么是 Prompt Engineering? 幻想一下,你在和一个。智能。帮手谈天,你需求说出十分明晰和详细的要求,才干得到你想要的答案。Prompt Engineering 便是规划和优化与。AI。对话的“提示词”或“指令”,让AI能准确了解并供给有用的回应。 Prompt Engineering 首要包含以下几个方面: 1.明晰方针:期望AI完结什么使命。例如:写一篇文章,答复一个问题,进行一次对话? 2.规划提示词:规划出详细的提示词,提示词应该尽量简练明了,包含一切必要的。信息。。比方:“写一篇关于环境保护重要性的文章。”。 3.优化和测验:一开端的提示词或许并不完美,所以需求不断调整和优化,测验不同的表达办法,测验找到最好的成果。 4.处理意外状况:有时候,AI或许会给出意外的答复,还需求猜测这些意外状况,并规划出应对战略。 二、Prompt Engineering 怎么鼓起? 1)前期阶段(2017年前)。 •。根本指令。:前期的NLP模型中,用户与AI的互动首要是依据简略的指令和关键词匹配。此刻的AI体系首要依靠预界说的规矩和有限的上下文了解才能。 •。模板化。问答。:一些前期的谈天。机器人。和问答体系选用模板化的问答形式,用户问题有必要严厉匹配预设的模板才干得到有用回应。 2)开端探究(2017-2018)。 •。Seq2Seq 模型。:Sequence-to-Sequence 模型的引进,使得AI能够更好地处理输入和输出之间的联系,但仍然需求明晰的指令和很多练习数据。 •。预练习模型。:2018年,OpenAI发布的GPT标志着预练习言语模型的鼓起。虽然前期的GPT模型在了解和生成文本方面有了明显前进,但仍需求明晰提示词。 3)快速开展(2019-2020)。 •。GPT-2 发布(2019)。:GPT-2的发布使得言语模型在生成自然言语文本方面取得了重大突破。Prompt Engineering开端遭到重视,研讨人员开端探究怎么经过规划提示词来引导模型生成更相关的内容。 •。BERT和其他模型。:Google发布BERT,进一步进步了NLP模型的了解才能。Prompt Engineering开端运用这些模型的双向了解才能来优化提示词。 4)老练阶段(2020-2021)。 •。GPT-3 发布(2020)。:GPT-3的发布带来了更大规划的预练习模型,具有更强的生成和了解才能。Prompt Engineering变得愈加重要,研讨人员和。开发者。开端体系性地研讨和优化提示词。 •。Few-shot 和 Zero-shot 学习。:GPT-3支撑Few-shot和Zero-shot学习,这意味着模型能够经过少数乃至没有示例的状况下完结使命。Prompt Engineering技能迅速开展,规划出有用的提示词来最大化模型的功能。 5)技能手法演化(2021-2023)。 •。Prompt Tuning。:研讨人员开发了Prompt Tuning技能,经过调整提示词的。参数。来优化模型的输出。这种办法在进步模型功能方面体现出色,成为Prompt Engineering的重要手法之一。 •。主动化东西。:为了简化Prompt Engineering的进程,呈现了许多主动化东西和结构,协助开发者快速生成和测验提示词。 •。范畴特定优化。:Prompt Engineering开端针对特定范畴(如医疗、法令、教育等)进行优化,规划出更专业和精准的提示词。 6)现代阶段(2024及今后)。 •。自习惯提示词生成。:跟着。AI技能。的进一步开展,呈现了自习惯提示词生成技能,模型能够依据上下文和用户需求动态调整提示词。 •。多模态提示词。:结合文本、图画、。音频。等多模态数据的提示词规划,使得Prompt Engineering在处理杂乱使命时愈加高效和灵敏。 •。人机协同优化。:经过人机协同的办法,结合用户反应和模型自我改善,进一步进步Prompt Engineering的功率和作用。 三、Prompt Engineering 技能介绍。 1)无扩展练习技能(New Task Without Ex。te。nsive Training)。 Zero-shot和Few-shot是两种最根底的提示词工程,首要留意Prompt的格局(比方分阶段,用序号的办法展现你想表达内容的逻辑次序等)和叙述内容就能够,一起依据对输出成果的需求来调整参数。 ① Zero-shot Promp。ti。ng:直接给出使命和方针,留意prompt格局和参数调整。 ② Few-shot Prompting:和Zero-shot比较便是多了几个“shots”,给予模型少数样本进行完成上下文学习;留意典范的挑选对模型体现很重要,不恰当的典范挑选或许导致模型学习到不准确或有成见的信息。 小东西:这个链接能够供给prompt模版,依据挑选不同的模版,帮你规划根底的prompt内容。 根底参数: temperature:操控生成文本的随机性,规模0到1;较低值使输出更确认,较高值添加随机性和多样性max_tokens:约束生成的最大符号数,一个符号大是一个单词或标点符号top_p:操控依据累积概率的采样,较低值会使生成的文本愈加确认(例如:top_p=0.1 意味着只会从概率最高的前10%的符号中进行采样)n=1:生成回复个数,默许1个stop=None:不设置中止条件presence_penalty:设置为0不赏罚重复内容,较高值会鼓舞模型生成与上下文中已有内容不同新内容frequency_penalty:设置为0不赏罚频频呈现的内容,较高值会削减模型生成重复词语的或许性。 2)推理与逻辑技能(Reasoning and。 Logic。)。 推理与逻辑技能能使 LLM 愈加深化与杂乱的逻辑考虑。如:Chain-of-Thought (CoT)、Automat。ic。Chain-of-Thought (Auto-CoT)、Self-Consistency、Logical CoT等,都旨在促进模型以更结构化和逻辑性的办法处理信息,然后进步问题解決的准确性和深度。 ① Chain-of-Thought (CoT)。 原理:为了战胜LLM在处理杂乱推理使命方面的约束,Wei et al. (2022) 提出了CoT,经过引进一种特别的提示战略,促进模型进行接连和逐渐的考虑进程,衔接考虑技能的首要奉献在于能够更有用地激起LLM产出结构化且深化考虑的答复。 示例阐明:规范提示中,模型直接给出答案,而没有解说或展现其推理进程。在CoT提示中,模型不只给出答案,还详细展现了其推理进程。CoT经过在经过在提示中参加详细的推理进程,引导模型逐渐处理问题。适用于需求杂乱推理和多进程核算的使命。 ② Automatic Chain-of-Thought (Auto-CoT) Prompting。 原理:CoT是一种手动的办法,进程耗时且功率低下,因而 Zhang et al. (2022) 提出了 Auto-CoT 技術。经过主动生成“逐渐考虑”式的提示,协助大模型完成推理链。经过多样化的样本生成来进步全体的稳定性,能够对多种问题发生多个共同的推理链,并将它们组合成一个终极典范调集。这种主动化和多样化的样本生成办法有用地降低了犯错率,进步了少样本学习的功率,并避免了手艺构建CoT的繁琐作业。 示例阐明:左边展现了Auto-Cot的四个进程(示例构建、聚类、示例挑选和上下文推理)。首要,经过聚类。算法。将问题示例分组,然后从每个组中挑选具有代表性的示例,构建一个包含详细答复的示例集,终究,经过在上下文中供给这些示例,协助LLM进行推理并得出正确答案。 ③ Self-Consistency。 原理:Wang et al. (2022)提出了一种新式解码战略,方针在于替代链式考虑提示中运用的单纯贪婪解码。从言语模型的decoder中提取多条不同的推理途径,然后生成多种或许的推理链,添加找到正确答案的或许性。 示例阐明:不同于简略CoT的贪婪解码办法,该技能先生成多个不同的推理途径,不同途径或许会得出不同答案,然后经过对一切生成的途径进行汇总,挑选最共同的答案为终究输出。 第一步:模型生成多个推理途径,得到不同的答案($18、$26、$18) 第二步:汇总推理途径,挑选最共同的答案($18)。 ④ Logical Chain-of-Thought (LogiCoT) Prompting。 原理:Zhao et al. (2023)提出的 LogiCoT,与之前的逐渐推理办法 (例如CoT) 比较,引进了一个全新的结构。该结构吸取了symbolic logic的精华,以一种愈加结构化和条理明晰的办法来增强推理进程。选用了反证法这一战略,经过证明某一推理进程若导致对立则该推理进程过错,然后来核对和纠正模型发生的推理进程。 图例阐明:上方是CoT,推理进程是线性的,每一步都依靠于前一步,下方是LoT,推理进程是树状的,能够在某些进程上进行分支,每个节点仍代表一个推理进程,但节点之间有更多的衔接办法,形成了一个分支结构。这种办法答应探究多个或许的推理途径。图中虚线框标出了某些分支节点,表明这些节点能够在不同的途径上进行组合和挑选。因而LoT办法能更灵敏地处理杂乱问题,答应一起考虑多个推理途径,然后或许得到更全面和准确的成果。 ⑤ Chain-of-Symbol (CoS) Prompting。 原理:为了战胜LLM依靠简单含糊且或许带有成见的自然言语的约束,Hu et al. (2023)提出了 CoS。这种办法不适用自然言语,而是选用简化的符号作为提示,优势在于使提示愈加明晰简练,进步模型处理空间联系问题才能,一起运作原理更易使人了解。 示例阐明:下图展现了CoT和CoS在处理一个从一堆砖块中取出特定砖块的问题时的体现。。CoT输出A, E, D,成果过错,没有遵从正确移出次序。CoS经过将Prompt的结构从文字转换为符号(如下): 1.B/A/D/E/C。 2.C/E。 3.E/D。 4.D。 模型输出:C, E, D。 3)削减错觉技能(Reduce Hallucination)。 削减错觉现象(错觉是指你从大言语模型中得到过错的成果,因为大言语模型首要依据互联网数据进行练习,其间或许存在不共同的信息,过期的信息和误导的信息)是LLM的一种应战,技能如 RAG、Re。Ac。t Prompting、Chain-of-Verification (CoVe)等,都是为了削减LLM发生无依据或许不准确输出的状况。这些办法经过结合外部信息检索、增强模型的自我查看才能或引进额定的验证进程来完成。 ① RAG (Retrieval Augmented Generation)。 原理:RAG的中心为“检索+生成”,前者首要是运用向量数据库的高效存储和检索才能,召回方针常识;后者则是运用大模型和Prompt工程,将召回的常识合理运用,生成方针答案。 流程:完好的RAG运用流程首要包含两个阶段。 •数据预备阶段:一般是离线进程,首要是将私域数据向量化后构建。索引。并存入数据库的进程。首要包含:数据提取、文本切割、向量化、数据入库等。 ◦数据提取——>文本切割——>向量化(embedding)——>数据入库。 •运用阶段:依据用户发问,经过高效的检索办法,召回与发问最相关的常识,并融入Prompt;大模型参阅当时发问和相关常识,生成答案。关键环节包含:数据检索(相似性检索、全文检索-关键词)、注入Prompt(Prompt规划依靠个人经历,实践运用中往往需求依据输出进行针对性调优)。 ◦用户发问——>数据检索(召回)——>注入Prompt——>LLM生成答案。 ② Chain-of-Verification (CoVe) Prompting。 原理:Dhuliawala et al. (2023) 提出了一种称为 CoVe 的办法,该办法首要有四个进程:开端答案、规划验证问题以查验作业、独立答复这些问题、依据验证成果来批改开端答案。该办法经过精心规划验证问题,模型能够辨识本身的过错并进行批改,然后明显进步了准确率。 示例阐明:下图表展现了一个查询和验证进程,意图是找出一些在纽约市出世的政治家。整个进程分为四个进程,经过验证开端信息来确保终究呼应的准确性。 1.开端呼应:体系供给了一个开端的呼应,列出了一些或许在纽约市出世的政治家:Hillary Clinton、Donald Trump、Michael Bloomberg。 2.计划验证:体系决议验证开端呼应中的信息,提出了问题:Hillary Clinton 出世在哪里?Donald Trump 出世在哪里?Michael Bloomberg 出世在哪里? 3.履行验证:体系查找并验证了这些政治家的出世地,Hillary Clinton 出世在伊利诺伊州芝加哥、Donald Trump 出世在纽约州纽约市皇后区、Michael Bloomberg 出世在马萨诸塞州波士顿。 4.终究验证呼应:依据验证成果,体系供给了一个批改后的列表,只包含在纽约市出世的政治家。Donald Trump - 前美国总统、Alexandria Ocasio-Cortez - 美国众议院议员。 4)微谐和优化(Fine-Tuning and Optimization)。 ① Automatic Prompt Engineer (APE)。 原理:Zhou et al. (2022)提出的APE技能,其突破了手动和固定提示的约束,能够针对特定使命主动生成并挑选输出有用的提示。先剖析用户输入,规划一系列候选指令,再透过强化学习挑选最优提示,并能习惯不同情形。 示例阐明:下图展现了APE技能的几个进程。 1.Proposal(提议):运用LLM生成初始提示 “write the antonym of the w。or。d”。 2.Scoring(评分):对生成的提示进行评分,评分的依据是提示的对数概率(不同提示分数不共同,有0.26、0.28等)。 3.High Score。 Can。didates(高分候选项):保存得分较高的候选提示,丢掉得分较低的提示。例如,得分为-0.86和-1.08的提示被丢掉,得分为-0.26和-0.28的提示被保存。 4.(Optional)Resampling(重采样):生成高分候选提示的变体,坚持语义不变。例如,生成提示“write the opposite of the word given”。 5.Final Selection(终究挑选):挑选得分最高的提示作为终究运用提示。提示“write the opposite of the word given”得分为0.16,被选为终究提示。 经过这个流程,APE技能能够主动生成和优化提示,确保挑选的提示能够生成高质量的输出。 5)其他手法(Othe。rs。Techniques)。 以下四种Prompt Engineering手法个人认为比较有意思,因而做扼要介绍。 ① Chain-of-Code (CoC) Prompting。 原理:CoC 技能是Li et al. (2023)提出的,经过。编程。强化模型在逻辑与语义使命上的推理才能,将语义使命转化为灵敏的伪代码。CoT首要用于处理需求逻辑推理、问题分化和逐渐处理的使命,如逻辑推理问题、文本剖析等;CoC则专心于编程使命,经过分步引导模型生成代码处理编程问题。 示例阐明:下图展现了运用三种不同的办法来答复一个问题:“我去过多少个国家?我去过孟买、伦敦、华盛顿、大峡谷、巴尔的摩,等等。”。 1.直接答复:直接给出了几个或许的答案,32和29是过错的,54是正确的。 2.思路链 (CoT):首要,将城市按国家分组,然后核算不同国家的数量。61和60是过错的,54是正确的。 3.代码链(CoC):首要,初始化一个包含城市称号的列表和一个空的调集来存储国家。然后遍历每个城市,经过函数 get_country(place) 获取对应的国家,并将其添加到调集中。终究核算调集的长度,成果显现,54是正确的。 总结:直接答复法没有解说进程,简单犯错。思路链法逐渐解说,但仍或许犯错。代码链法经过编程逻辑,确保了答案的准确性,在三种办法中体现最好。 ② Contrastive Chain-of-Thought (CCoT) Prompting。 原理:传统CoT疏忽了从过错中学习的总要环节,Chia et al. (2023)提出CCoT技能。这种技能经过一起供给正确和过错的推理示例来要到模型。可是该种技能仍是面对一些应战,即怎么为不供给问题主动生成比照示例。 示例阐明:下图展现了三种提示办法在答复数学问题时的体现。 •Prompt问题:James每周给两个不同的朋友各写一封3页的信,每周写两次。他一年写多少页? •待答复问题:James有30颗牙齿。他的牙医钻了其间的4颗,而且批改了比钻的牙齿多7颗的牙齿。牙医批改了James牙齿的百分比是多少? 1.规范提示:Prompt中答复直接给出答案,但没有解说进程,导致第二个问题答案:37.5%,答复过错。 2.思想链(CoT):Prompt中参加了详细的解说进程,使得模型在输出批改牙齿份额问题中能更准确地考虑,可是答案为36.67%,仍是过错。 3.比照思想链(Contrastive CoT):Prompt中参加了正确答案和过错答案的详细解说阐明。终究输出答案50%正确。Contrastive CoT 不只供给正确的解说,还展现了过错的解说,协助了解和验证答案的正确性。 ③ Managing Emotions and Tone。 原理:Li et al. (2023) 提出了EmotionPrompt 技能。经过在提示中参加情感词汇或情感上下文来引导模型更好地了解和回运用户的情感需求。 辨认情感需求:辨认出期望模型生成的呼应中包含的情感类型(如高兴、哀痛、愤恨等)。 构建情感提示词:在原始提示中参加情感词汇或上下文,以引导模型生成契合预期情感的呼应。 测验和调整:生成呼应后依据实践作用进行测验和调整,确保模型生成的内容契合预期的情感。 示例阐明:下图展现了不同类型的情感表达及其在不同理论结构下的分类和穿插联系。首要包含了三个理论结构:自我监控、社会认知理论和认知心情调理,并排出了每个结构下的详细情感表达语句(EP01-EP11)。经过这种分类办法,能够看出不同情感表达在不同理论结构和维度下的穿插联系和运用场景。这种分类有助于更好地了解和运用情感表达在不同情境中的作用。右侧展现了这些情感表达在不同社会效应和自负维度下的分类: 1.社会效应(Social effect)包含:EP01, EP02, EP03, EP04, EP05, EP06(EP06是EP01, EP02, EP03的复合体)。 2.自负(Self-esteem)包含:EP07, EP08, EP09, EP10, EP11。 3.补白:EP06 是EP01, EP02, 和EP03的复合体。 ④ Rephrase and Respond (RaR) Prompting。 原理:因为LLM常常疏忽了人类思想办法和LLM思想办法间的差异,Deng et al. (2023)提出了RaR技能。经过让LLM在提示中从头表述和扩展问题,然后进步模型对问题的了解和答复准确性,改写后的问题能够更明晰地传递语意,削减问题含糊性。 示例阐明:RaR 首要分为两个进程,经过对 prompt 了解和重述,言语模型能够更好地了解和答复问题。 1.重述问题:首要给定一个原始问题,“取 Edgar Bob 中每个单词的终究一个字母并将它们衔接起来”。然后重述使其更明晰、更详细。重述后的问题变成“你能辨认并提取 Edgar Bob 中每个单词的终究一个字母,然后按它们呈现的次序将它们衔接起来吗?”。 2.答复重述后的问题:重述后的问题是“你能辨认并提取 Edgar Bob 中每个单词的终究一个字母,然后按它们呈现的次序将它们衔接起来吗?”答复为“Edgar Bob 中每个单词的终究一个字母是 r 和 b,按呈现次序衔接起来是 rb”。 四、Prompt Engineering 的运用事例。 1)项目布景。 在京东物流的大件。产品。入库环节,收集人员需求依据。产品。拟定的区分规范人工判别并录入产品件型。但是,件型保护过错会导致物流方面的收入丢失、客户投诉及调账等问题。为了处理这些问题,咱们经过技能手法对存量SKU进行件型反常辨认,并在前置环节完成件型。引荐。,对新入库的SKU进行件型录入预警。件型的判别高度依靠于产品品类,但因为大部分SKU为外单产品,其品类保护首要依靠于商家和出售,超越40%的外单产品品类被归为“其他服务”。因而,咱们首要对这些品类进行批改,再依据批改后的数据打开反常辨认和件型引荐。 跟着大模型运用的广泛遍及,针对第二阶段件型判别,咱们经过引进大模型对文本辨认技能计划难以掩盖的SKU进行弥补辨认(进步掩盖率)。以下会测验上述介绍的几种根底Prompt Engineering手法,对空调品类的产品进行件型判别,并比照几种提示词工程在辨认作用上的差异。 2)运用举例。 辨认方针:经过告知大模型空调相关品类的件型判别规范,让大模型判别产品的件型。下面首要经过不同的提示词工程手法,来调整prompt以进步输出准确率。 样本阐明:数据一共包含7个字段(goods_code:产品编码,goods_name:产品称号, item_third_cate_name:批改后品类,weight:分量(kg), big_goods:件型编码,big_goods_desc:件型中文,label:事务打标的正确件型(查验模型成果的label)。 测验代码: ① 根底GPT调用Demo:首要设定了模型的人物和使命,为了确保成果输出的稳定性,分别将参数 temperature设置为0,一起件型最长字符串不超越6个,因而设置max_tokens=6,仅输出一个成果,设置top_p=0.1。 def classify_product(row, rules_text): try: client = OpenAI( a。pi。_key=os.environ["OPENAI_API_KEY"], base_url=os.environ["OPENAI_API_BASE"] ) # 输入描绘 description = f"产品编码:{row['goods_code']},描绘:{row['goods_name']},分量:{row['weigth']}。" # 设定模型的人物和使命 system_message = "你是物流职业的一位专家,请依据规矩和产品描绘,仅输出该产品的件型,不要输出其他任何信息。" # 用户详细输入 user_message = (f"规矩:n{rules_text}n" f"产品描绘:{description}n") # 恳求模型 response = client.chat.completions.create( model="gpt-4-1106-preview", messages=[ {"role": "system", "content": system_message}, {"role": "user", "content": user_message}], temperature=0, # temperature 操控生成文本的随机性,规模为0到1。较低的值使输出更确认和共同,而较高的值添加随机性和多样性。 max_tokens=6, # 约束生成的最大符号数,一个符号大约是一个单词或标点符号。 top_p=0.1, #。 数控。制依据累积概率的采样,较低的 top_p 值会使生成的文本愈加确认,只会考虑累积概率到达较低阈值的符号。 n=1 # 生成一个回复 ) # 解析并回来成果 return response.choices[0].message.content.strip() except Exception as e: return str(e)。 Zero-shot:准确率44.44%。 prompt1 = """件型的判别和产品的细分品类、产品来历和产品参数有关。细分分类为:1. 挂机空调:描绘或类型中含“挂机空调”或“G”或“GW”。2. 柜机空调:描绘或类型中含“柜机空调”或“L”或“LW”。3. 家用空调:描绘中含“家用空调”或类型中含“KFR”。4. 中央空调/天花机/风管机/多联机/移动空调一体机:描绘或称号中含“中央空调”、“天花机”、“风管机”、“多联机”或“移动空调一体机”。5. 其他类别空调:不契合上述任何一个特定类型的空调。产品来历分为自营和外单两种,产品编码以“EMG”最初为外单,否则为自营。件型包含:超小件、小件、中件-半件、中件、大件-半件、大件、超大件-半件、超大件。件型规矩如下:1. 自营挂机空调: - 匹数≤3p或类型≤72为中件-半件 - 匹数>3p或类型>72为大件-半件2. 自营柜机空调: - 匹数≤2p或类型≤51为中件-半件 - 2p。< 匹数≤3p或51< 型号≤72为大件-半件 - 匹数 >3p或类型>72为超大件-半件3. 自营家用空调: - 描绘含“大2p”或类型≤51为中件-半件 - 描绘含“大3p”或51。< 型号≤72为大件-半件 - 型号 >72为超大件-半件4. 自营及外单的家用中央空调、天花机、风管机、多联机及移动空调一体机: - 分量。< 15kg为超小件 - 15kg≤重量< 25kg为小件 - 25kg≤重量< 40kg为中件 - 40kg≤重量< 60kg为大件 - 60kg≤重量< 100kg为超大件5. 外单家用空调、挂机空调、柜机空调: - 匹数≤2p或型号≤51为中件-半件 - 2p< 匹数≤3p或51< 型号≤72或描述中提到“大2p”为大件-半件 - 匹数 >3p或类型>72或描绘中说到“大3p”为超大件-半件"""。 Few-shots:在Zero-shot根底上加了两个示例阐明,准确率55.56%。 prompt2 = """...同prompt1举例:1. 编码:100015885342,描绘:酷风(Coolfree)中央空调一拖多多联机 MJZ-36T2/BP3DN1-CF4,分量:21,件型是:小件。2. 编码:100014630039,描绘:COLMO AirNEXT空气主机 3匹 AI智能空调新一级全直流变频空调立式柜机 KFR-72LW/CE2 线下同款,分量:21,件型是:超大件-半件。"""。 Chain-of-Thought (CoT):和Few-shots的差异,将两个示例分进程展现,向模型阐明进行件型判别的逻辑次序,准确率66.67%。 prompt3 = """ ...同prompt1 举例:1. 编码:100015885342,描绘:酷风(Coolfree)中央空调一拖多多联机 MJZ-36T2/BP3DN1-CF4,分量:21。 - 第一步:判别产品来历。产品编码不以“EMG”最初,因而产品来历为自营。 - 第二步:判别细分品类。描绘中含有“中央空调”以及“多联机”,因而细分品类为中央空调。 - 第三步:判别件型。分量为21kg,满意15≤分量。< 25,因此件型为小件。2. 编码:100014630039,描述:COLMO AirNEXT空气主机 3匹 AI智能空调新一级全直流变频空调立式柜机 KFR-72LW/CE2 线下同款,重量:21。 - 第一步:判断商品来源。商品编码不以“EMG”开头,因此商品来源为自营。 - 第二步:判断细分品类。描述中含有“KFR”和“LW”,优先判断细分品类为柜机空调。 - 第三步:判断件型。由于描述中含有“3匹”且型号为72,满足2p< 匹数≤3p或51< 型号≤72,因此件型为大件-半件。""" Automatic Chain-of-Thought (Auto-CoT) Prompting:运用prompt2,可是在调用的使命阐明时,告知大模型判别的次序为,先判别产品的细分品类,再判别产品来历,再判别产品件型,终究准确率77.78%。 system_message = "你是物流职业的一位专家,请依据规矩和产品描绘,主张先判别产品的细分品类,再判别产品来历,再判别产品件型,请扼要阐明关键进程,并在100个字内判别产品件型。"。 Self-Consistency:仍旧运用prompt2,但调整调用参数和解析逻辑,让模型进行屡次输出,取呈现频率最高的成果为终究成果,准确率为66.67%。 import randomdef classify_product_self_consistency(row, rules_text): try: client = OpenAI( api_key=os.environ["OPENAI_API_KEY"], base_url=os.environ["OPENAI_API_BASE"] ) description = f"产品编码:{row['goods_code']},描绘:{row['goods_name']},分量:{row['weigth']}。" system_message = "你是物流职业的一位专家,请依据规矩和产品描绘,仅输出该产品的件型,不要输出其他任何信息。" user_message = (f"规矩:n{rules_text}n" f"产品描绘:{description}n") # 屡次恳求模型,获取多个输出 responses = client.chat.completions.create( model="gpt-4-1106-preview", messages=[ {"role": "system", "content": system_message}, {"role": "user", "content": user_message}], temperature=0.1, max_tokens=20, top_p=0.1, n=5 # 生成5个不同的输出 ) # print(responses) # 提取件型 piece_type_options = [] for response in responses.choices: piece_type_match = re.search(r"件型:(.+)", response.message.content) if piece_type_match: piece_type = piece_type_match.group(1) if piece_type not in piece_type_options: piece_type_options.append(piece_type) else: piece_type = response.message.content if piece_type not in piece_type_options: piece_type_options.append(piece_type) # 如果有多个不同的件型定论,回来一个随机的件型定论 if len(piece_type_options) >1: return random.choice(piece_type_options) elif piece_type_options: return piece_type_options[0] else: return "无法确认件型,请查看规矩或产品描绘。" except Exception as e: return str(e)审阅修改 黄宇。 内容来源:https://congtytkp.com.vn/app-1/keo nhà cai com,http://chatbotjud.saude.mg.gov.br/app-1/subway-pay-apk |