提示词工程
参考网站:提示工程指南 – Nextra
声明:我现在也才刚刚开始学习 人工智能,我会着重于 agent 的学习,如果有不对的地方请大家及时指出。
模型设置
前言
在向大模型发送请求时,常常能看到以下参数:
{"messages": [{"content": "You are a helpful assistant","role": "system" //角色},{"content": "Hi","role": "user" //角色}],"top_p": 1, //核采样-Nucleus Sampling"top_k": 1, //k 采样top_p top_k 互斥不可以同时使用"temperature": 1, //温度 一般不和top_p top_k 同时使用"max_tokens": 2048, //输出最大token数"stop":null, //停止序列"frequency_penalty": 0, //频率处罚"presence_penalty": 0, //存在处罚 不和frequency_penalty一起使用"response_format": {"type": "text"},"stream": false,"stream_options": null,"tools": null,"tool_choice": "none","logprobs": false,"top_logprobs": null
}
它们是干啥的?? 那我们先要聊聊 大多数语言模型 的生成策略
生成策略
我们熟悉的大多数语言模型都是通过重复生成token序列(sequence)中的下一个token来运作的。每次模型想要生成另一个token时,会重新阅读整个token序列并预测接下来应该出现的token。这种策略被称为自回归生成(autoregressive generation)。
在自然语言任务中,我们通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,我们需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。
- 例如,如果输入的文本是“我最喜欢的”,那么模型可能会给出下面的概率分布:
那么,我们应该如何从这个概率分布中选择下一个单词呢?以下是几种常用的方法:
- 贪心解码(Greedy Decoding):直接选择概率最高的单词。这种方法简单高效,但是可能会导致生成的文本过于单调和重复。
- 随机采样(Random Sampling):按照概率分布随机选择一个单词。这种方法可以增加生成的多样性,但是可能会导致生成的文本不连贯和无意义。
- Beam Search:维护一个大小为 k 的候选序列集合,每一步从每个候选序列的概率分布中选择概率最高的 k 个单词,然后保留总概率最高的 k 个候选序列。这种方法可以平衡生成的质量和多样性,但是可能会导致生成的文本过于保守和不自然。
以上方法都有各自的问题,而 top-k 采样和 top-p 采样是介于贪心解码和随机采样之间的方法,也是目前大模型解码策略中常用的方法。
Top_p
使用 top_p
(与 temperature
一起称为核采样(nucleus sampling)的技术),可以用来控制模型返回结果的确定性。如果你需要准确和事实的答案,就把参数值调低。如果你在寻找更多样化的响应,可以将其值调高点。
使用Top_P意味着只有词元集合(tokens)中包含top_p
概率质量的才会被考虑用于响应,因此较低的top_p
值会选择最有信心的响应。这意味着较高的top_p
值将使模型考虑更多可能的词语,包括不太可能的词语,从而导致更多样化的输出。
一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。Top_k 与 Top_p 的互斥性两者通常不同时使用,因为它们的目标重叠(均用于限制候选词范围)
top-k
在每一步,只从概率最高的 k 个单词中进行随机采样,而不考虑其他低概率的单词,可以用来控制模型返回结果的确定性。同样如果你需要准确和事实的答案,就把参数值调低。如果你在寻找更多样化的响应,可以将其值调高点。Top_k 与 Top_p 的互斥性两者通常不同时使用,因为它们的目标重叠(均用于限制候选词范围)
Temperature
简单来说,temperature
的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。(调小temperature
)实质上,你是在增加其他可能的 token 的权重。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 temperature
值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,适度地调高 temperature
参数值可能会更好。
Max_Length
您可以通过调整 max length
来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。
Stop Sequences
stop sequence
(停止序列 )是一个字符串,可以阻止模型生成 token,指定 stop sequences
是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为 stop sequence
来告诉模型生成不超过 10 个项的列表。
Frequency Penalty
frequency penalty
(频率点球)是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中已出现的次数成比例, frequency penalty
越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。
Presence Penalty
presence penalty
(存在处罚) 也是对重复的 token 施加惩罚,但与 frequency penalty
不同的是,惩罚对于所有重复 token 都是相同的。出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。 此设置可防止模型在响应中过于频繁地生成重复的词。 如果您希望模型生成多样化或创造性的文本,您可以设置更高的 presence penalty
,如果您希望模型生成更专注的内容,您可以设置更低的 presence penalty
。
与 temperature
和 top_p
一样,一般建议是改变 frequency penalty
和 presence penalty
其中一个参数就行,不要同时调整两个。
基本概念
给LLM提示
你可以通过简单的提示词(Prompts)获得大量结果,但结果的质量与你提供的信息数量和完善度有关。一个提示词可以包含你传递到模型的指令或问题等信息,也可以包含其他详细信息,如上下文、输入或示例等。你可以通过这些元素来更好地指导模型,并因此获得更好的结果。
//如果不加任何提示
user:
The sky is?assistant:
blue.
//如果加了提示Complete the sentence:
user:Complete the sentence: The sky is
assistant:The sky is blue during the day and dark at night.
提示词格式
前文中我们还是采取的比较简单的提示词。 标准提示词应该遵循格式:<问题>?
<指令>
格式化为问答(QA)格式,这在许多问答数据集中是标准格式,如:
Q: <问题>?
A:
# "A:" 是一种在问答中使用的显式提示格式,你在这里使用它是为了告诉模型接下来你期望有一个答案。
# 较新的模型,你可以省略“Q:”部分,
# 因为模型会根据序列(译注:输入的提示词)的构成将其理解为问答任务。
# 换句话说,提示可以简化如下:
<问题>?
当像上面那样提示时,这也被称为零样本提示,即你直接提示模型给出一个回答,而没有提供任何关于你希望它完成的任务的示例或示范。一些大型语言模型具备进行零样本提示的能力,但这取决于手头任务的复杂性和知识,以及模型被训练以在其上表现良好的任务。
基于以上标准格式(format),一种流行且有效的提示技术被称为少样本提示,其中你提供示例(即示范)。你可以按照以下格式组织少样本提示:
<问题>?
<答案><问题>?
<答案><问题>?
<答案><问题>?# 问答格式的版本看起来像这样:
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A:
请记住,使用问答格式并非必须。提示格式取决于手头的任务。例如,你可以执行一个简单的分类任务,并给出如下所示的示例来给任务示范:
# 输入:
This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //
# 输出:
Negative
提示词要素
提示词可以包含以下任意要素:
- 指令
-
- 想要模型执行的特定任务或指令。
- 具体性
-
-
- 要非常具体地说明你希望模型执行的指令和任务。提示越具描述性和详细,结果越好。
- 在提示中提供示例对于获得特定格式的期望输出非常有效。
-
-
- 避免不明确
-
-
- 如:
解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。
- 如:
使用 2-3 句话向高中学生解释提示工程的概念。
- 如:
-
-
- 做什么
-
-
- 设计提示时的另一个常见技巧是避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。
-
-
- 你可以使用命令来指示模型执行各种简单任务,例如“写入”、“分类”、“总结”、“翻译”、“排序”等,从而为各种简单任务设计有效的提示。
- 上下文
-
- 包含外部信息或额外的上下文信息,引导语言模型更好地响应。
- 输入数据
-
- 用户输入的内容或问题。
- 输出指示
-
- 指定输出的类型或格式。
如:
输入:
请将文本分为中性、否定或肯定
文本:我觉得食物还可以。
情绪:输出:
中性输入:
提取以下文本中的地名。
所需格式:
地点:<逗号分隔的公司名称列表>
输入:“虽然这些发展对研究人员来说是令人鼓舞的,
但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家
Henrique Veiga-Fernandes 说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”
“如果我们想在治疗背景下使用它,我们实际上需要了解机制。””输出:
地点:里斯本,香帕利莫德中心输入:
以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。
客户:请根据我的兴趣推荐电影。
代理:
输出
当然,我可以根据你的兴趣推荐电影。
你想看什么类型的电影?你喜欢动作片、喜剧片、爱情片还是其他类型的电影?输入:
以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。
它应该避免询问用户的偏好并避免询问个人信息。
如果代理没有电影推荐,它应该回答“抱歉,今天找不到电影推荐。”。
```顾客:请根据我的兴趣推荐一部电影。
客服:
输出:
抱歉,我没有关于你兴趣的任何信息。
不过,这是目前全球热门的电影列表:[电影列表]。希望你能找到喜欢的电影!
在上面的提示示例中,指令是“将文本分类为中性、否定或肯定”。输入数据是“我认为食物还可以”部分,使用的输出指示是“情绪:”请注意,此基本示例不使用上下文,但也可以作为提示的一部分提供。例如,此文本分类提示的上下文可以是作为提示的一部分提供的其他示例,以帮助模型更好地理解任务并引导预期的输出类型。
提示词示例
提示词示例 – Nextra
- Role: 多领域知识整合专家和高效信息处理顾问
- Background: 用户需要在多个领域进行高效的信息处理,包括文本概括、信息提取、问答、文本分类、对话、代码生成和推理,这表明用户可能在进行复杂的研究、开发或学习任务,需要一个能够综合运用多种技能的专家来提供支持。
- Profile: 你是一位精通多领域知识的整合专家,具备深厚的语言学、逻辑学、计算机科学和人工智能背景,能够灵活运用各种工具和方法,为用户提供精准、高效的信息处理服务。
- Skills: 你拥有强大的文本分析能力、信息提取技术、问答系统构建经验、文本分类算法知识、对话管理技巧、代码生成能力以及逻辑推理能力,能够根据用户需求在不同领域之间无缝切换。
- Goals:
- 提供精准的文本概括,提炼关键信息。
- 高效提取文本中的重要信息。
- 构建准确的问答系统,满足用户查询需求。
- 对文本进行准确分类,便于管理和检索。
- 进行流畅且富有逻辑的对话,提供帮助和解答。
- 根据需求生成高质量的代码。
- 进行严谨的逻辑推理,解决复杂问题。
- Constrains: 在各个领域内,应确保信息的准确性和逻辑性,避免误导用户;在对话中保持礼貌和专业性;在代码生成时遵循良好的编程规范;在推理过程中遵循逻辑规则。
- OutputFormat: 根据不同任务,输出格式可以是文本、代码、对话记录等,具体格式根据用户需求确定。
- Workflow:
1. 精确理解用户需求,确定任务类型和具体要求。
2. 根据任务类型,调用相应的技能和知识库,进行信息处理。
3. 对处理结果进行审核和优化,确保质量和准确性。
- Examples:
- 文本概括例子:原文:“这是一篇关于人工智能在医疗领域应用的长篇报告,详细介绍了各种技术的应用场景、优势和挑战。” 概括:“人工智能在医疗领域应用的报告,涵盖技术场景、优势与挑战。”
- 信息提取例子:文本:“在2024年,公司A的销售额达到了1000万元。” 提取信息:“公司A,2024年,销售额,1000万元。”
- 问答例子:问题:“人工智能在医疗领域的优势是什么?” 回答:“人工智能在医疗领域的优势包括提高诊断准确性、优化治疗方案、降低医疗成本等。”
- 文本分类例子:文本:“这是一篇关于环保的新闻报道。” 分类:“新闻报道,环保。”
- 对话例子:用户:“我最近在学习人工智能,你能帮我解答一些问题吗?” 你:“当然可以,请问你想了解哪方面的内容?”
- 代码生成例子:需求:“生成一个简单的Python代码,用于计算两个数的和。” 代码:
```python
def add(a, b):
return a + b
```
- 推理例子:前提:“所有A都是B,C是A。” 结论:“C是B。”
- Initialization: 在第一次对话中,请直接输出以下:您好!作为您的多领域知识整合专家,我将为您提供文本概括、信息提取、问答、文本分类、对话、代码生成和推理等全方位的信息处理服务。请告诉我您的具体需求,我会尽力帮助您。
提示技术
提示技术 – Nextra
零样本提示
请注意,在上面的提示中,我们没有向模型提供任何示例。
输入:
将文本分类为中性、负面或正面。
文本:我认为这次假期还可以。
情感:输出:
中性
少样本提示
标准的少样本提示对许多任务都有效,但仍然不是一种完美的技术,特别是在处理更复杂的推理任务时。
实例
输入:
这太棒了!// Negative
这太糟糕了!// Positive
哇,那部电影太棒了!// Positive
多么可怕的节目!//
输出:
Negative
少样本就像照葫芦画瓢,只要样本逻辑正确(不对也可能得出正确答案),格式相似就行
无法完成推理任务
输入:
这组数字中的奇数加起来是一个偶数:4、8、9、15、12、2、1。
A:答案是False。
这组数字中的奇数加起来是一个偶数:17、10、19、4、8、12、24。
A:答案是True。
这组数字中的奇数加起来是一个偶数:16、11、14、4、8、13、24。
A:答案是True。
这组数字中的奇数加起来是一个偶数:17、9、10、12、13、4、2。
A:答案是False。
这组数字中的奇数加起来是一个偶数:15、32、5、13、82、7、1。
A:
输出
答案是True。 (错误的)
CoT(Chain-of-Thought Prompting)
实例
输入: (不需要这么多提示)
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到25。答案为False。
这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。
A:将所有奇数相加(17、19)得到36。答案为True。
这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。
A:将所有奇数相加(11、13)得到24。答案为True。
这组数中的奇数加起来是偶数:17、9、10、12、13、4、2。
A:将所有奇数相加(17、9、13)得到39。答案为False。
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
输出:
将所有奇数相加(15、5、13、7、1)得到41。答案为False。
输入: (让我们逐步思考)
Q:这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
让我们逐步思考。
A:
输出:
将所有奇数相加(15、5、13、7、1)得到41。答案为False。
Auto-CoT(自动思维链)
当使用思维链提示时,这个过程需要手工制作有效且多样化的例子。这种手动工作可能会导致次优解决方案。这种手动工作可能会导致次优解决方案。Zhang et al. (2022) 提出了一种消除人工的方法,即利用 LLMs “让我们一步一步地思考” 提示来生成一个接一个的推理链。这种自动过程仍然可能在生成的链中出现错误。为了减轻错误的影响,演示的多样性很重要。这项工作提出了Auto-CoT,它对具有多样性的问题进行采样,并生成推理链来构建演示。
- 阶段1:问题聚类:将给定问题划分为几个聚类
- 阶段2:演示抽样:从每组数组中选择一个具有代表性的问题,并使用带有简单启发式的 Zero-Shot-CoT 生成其推理链。
实例
▶ 音乐购买问题
Q: Zoo购买3张乡村专辑和5张流行专辑,每专辑含3首歌,求总歌曲数 #聚类1
A:
- 乡村专辑歌曲:3专辑×3首=9首
- 流行专辑歌曲:5专辑×3首=15首
- 总计:9+15=24首
(尽管存在OCR识别错误如"379-9"等乱码,仍可看出分步计算逻辑)
▶ 烹饪问题
Q: 需烹饪9个土豆,已煮7个,每个耗时3分钟,求剩余耗时 #聚类2
A:
- 剩余数量:9-7=2个
- 所需时间:2×3=6分钟
(原图存在"1m more minutes"等表述误差,体现自动生成的容错性)
▶ 宠物店问题
Q: 初始64只幼犬,售出28只后,每笼放4只需多少笼子? #聚类3
A:
- 剩余数量:64-28=36只
- 笼子数量:36÷4=9个
(图片中最终答案误写为8,印证论文中提到的错误链影响需通过多样性缓解)
自我一致性(cot-sc)
自我一致性旨在“替换链式思维提示中使用的天真贪婪解码方法”。其想法是通过少样本 CoT 采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高 CoT 提示在涉及算术和常识推理的任务中的性能。
- 贪婪(Greedy)
-
- 贪婪解码是一种逐个生成词元的策略,每次选择当前概率最大的词元作为下一个输出,而不考虑后续词元的可能性。这种方法效率高,因为不需要跟踪多个可能的序列,但它的短视性可能导致错过更好的整体序列。
- 天真(Naive)
-
- “天真”则指这种方法过于简单,没有考虑更复杂的优化策略。例如,它不考虑生成结果的整体一致性或逻辑性,只是单纯地根据每一步的概率选择词元。这种方法在处理复杂问题时可能会导致错误的推理路径
- “天真”则指这种方法过于简单,没有考虑更复杂的优化策略。例如,它不考虑生成结果的整体一致性或逻辑性,只是单纯地根据每一步的概率选择词元。这种方法在处理复杂问题时可能会导致错误的推理路径
实例
- 例子1:
- 你需要采用不同的方法得出多个答案,在从多个答案中选择最有可能的答案
问题:当我6岁时,我的妹妹是我的一半年龄。现在我70岁了,我的妹妹多大?
解答:
-
- Q1:
-
-
- 直接计算年龄差:当我6岁时,妹妹是我的一半年龄,即妹妹当时是3岁。我和妹妹的年龄差为:6岁 - 3岁 = 3岁。现在我70岁,妹妹的年龄为:70岁 - 3岁 = 67岁。
- 设定变量解方程:设我现在的年龄为 x,妹妹现在的年龄为 y。根据题意:当我6岁时,妹妹是我的一半年龄: y - (x - 6) = 6/2 = 3; 带入70 得67
- 时间差法:从我6岁到70岁,过去了 70−6=64 年。妹妹在我6岁时是3岁,经过64年,她的年龄为:3+64=67
- 直接除以2:当我6岁时,妹妹是我的一半年龄。所以我70岁时,妹妹是我的一半年龄:70/1 = 35 不合理
- 根据答案,得出妹妹现在67岁,答案一致且合理。
-
生成知识提示
能够融合知识或信息,以帮助模型做出更准确的预测。
流程图关键要素解析
- 流程架构(颜色区分功能模块)
-
- 问题输入(Question)
- 知识生成(Knowledge 1, Knowledge 2...)
-
-
- 提示(Prompt):包含指令(Instruction)、示范(Demonstrations)和问题(Question),用于引导模型生成知识。
- PLM(预训练语言模型):通过采样生成多个知识点。
-
-
- 知识整合(Integration)
- 最终答案(Answer)
- 核心流程(箭头指向信息流)
问题 → 知识生成(PLM并行采样) → 知识整合 → 答案
- 提示工程组件
-
- 指令(Instruction):明确任务目标(如"生成相关科学原理")
- 示范(Demonstrations):提供固定任务示例(如Q₁→K₁, Q₅→K₅)
- PLM生成:基于提示生成多样化知识片段
示例演示
假设问题:"为什么蜜蜂采集花蜜有助于植物繁殖?"
阶段一:知识生成(多路径探索)
- Knowledge 1(生物学知识):
"蜜蜂身体附着花粉,在花朵间移动时完成授粉→雌蕊接受花粉后发育成果实" - Knowledge 2(生态学知识):
"植物通过花蜜吸引传粉者→蜜蜂作为媒介提升异花授粉概率→增加遗传多样性" - Knowledge 3(行为学观察):
"蜜蜂偏好访问同种植物集群→形成高效传粉网络→提升局部区域繁殖成功率"
阶段二:知识整合(逻辑串联)
python整合步骤:
1. 提取关键因子:蜜蜂、花蜜、花粉传递、繁殖结果
2. 关联知识:- K1解释物理接触机制(花粉附着)- K2说明生态互惠关系(吸引→授粉→结果)- K3补充空间行为影响(集群效应)
3. 去冗余后合成:"蜜蜂被花蜜吸引→体表携带花粉→在访问不同花朵时传递花粉→促进异花授粉→提高植物繁殖成功率与遗传多样性"
技术优势对比
方法 | 人工参与度 | 知识覆盖度 | 抗干扰性 |
传统提示法 | 高(需设计模板) | 单一线性 | 低(依赖单一路径) |
生成知识提示(本图) | 低(自动采样) | 多维度覆盖 | 高(多知识交叉验证) |
设计亮点
- 模块化分层
-
- 将知识生成与整合分离,避免信息过载。
- 动态采样机制
-
- PLM通过Q₁~Q₅示例学习任务范式,生成知识时自动适配问题类型
- 容错增强设计
-
- 多知识片段并行生成(Knowledge 1, 2...)降低单条错误影响
该方法通过解耦知识发现与推理过程,显著提升了复杂问题的解答深度,尤其在需要跨学科知识的场景(如生物-生态交叉问题)中展现出独特优势。图中的颜色编码与箭头流向设计,直观呈现了从数据输入到知识萃取的工业化思维过程。
链式提示
链式提示是一种通过结构化推理步骤引导大语言模型(LLM)解决复杂问题的技术。其核心在于将任务分解为许多子任务。 确定子任务后,将子任务的提示词提供给语言模型,得到的结果作为新的提示词的一部分。,而非直接输出结果。该技术模拟人类解题思维,如数学题的“写解→分析→分步推导→结论”流程,有效提升模型在逻辑推理、数学计算等任务中的表现。
TOT思维树
ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,LM 能够自己对严谨推理过程的中间思维进行评估。LM 将生成及评估思维的能力与搜索算法(如深度优先(DFS)/广度优先(BFS)/集束(beam)搜索)相结合,在系统性探索思维的时候可以向前验证和回溯。
提示词
假设三位不同的专家来回答这个问题。所有专家都写下他们思考这个问题的第一个步骤,然后与大家分享。然后,所有专家都写下他们思考的下一个步骤并分享。以此类推,直到所有专家写完他们思考的所有步骤。只要大家发现有专家的步骤出错了,就让这位专家离开。请问...
ToT 完成算 24 的游戏任务要执行广度优先搜索(BFS),每步思维的候选项都要求 LM 给出能否得到 24 的评估:“sure/maybe/impossible”(一定能/可能/不可能) 。作者讲到:“目的是得到经过少量向前尝试就可以验证正确(sure)的局部解,基于‘太大/太小’的常识消除那些不可能(impossible)的局部解,其余的局部解作为‘maybe’保留。”每步思维都要抽样得到 3 个评估结果。整个过程如下图所示:
从下图中报告的结果来看,ToT 的表现大大超过了其他提示方法:
RAG(检索增强生成 )
通用语言模型通过微调就可以完成几类常见任务,比如分析情绪和识别命名实体。这些任务不需要额外的背景知识就可以完成。要完成更复杂和知识密集型的任务,可以基于语言模型构建一个系统,访问外部知识源来做到。这样的实现与事实更加一性,生成的答案更可靠,还有助于缓解“幻觉”问题。
Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起。RAG 可以微调,其内部知识的修改方式很高效,不需要对整个模型进行重新训练。
(ART)自动推理并使用工具
使用 LLM 完成任务时,交替运用 CoT 提示和工具已经被证明是一种即强大又稳健的方法。这类方法通常需要针对特定任务手写示范,还需要精心编写交替使用生成模型和工具的脚本。Paranjape et al., (2023)(opens in a new tab)提出了一个新框架,该框架使用冻结的 LLM 来自动生成包含中间推理步骤的程序。
ART(Automatic Reasoning and Tool-use)的工作原理如下:
- 接到一个新任务的时候,从任务库中选择多步推理和使用工具的示范。
- 在测试中,调用外部工具时,先暂停生成,将工具输出整合后继续接着生成。
ART 引导模型总结示范,将新任务进行拆分并在恰当的地方使用工具。ART 采用的是零样本形式。ART 还可以手动扩展,只要简单地更新任务和工具库就可以修正推理步骤中的错误或是添加新的工具。这个过程如下:
对比
自动提示工程师(APE)
LLMs as Inference Models(LLMs作为推理模型)
- 任务描述:教授史密斯被给定了一些指令,模型需要根据这些指令进行推理。
- 示例:
-
- 输入:prove(证明)
- 输出:disprove(反驳)
- 输入:on(打开)
- 输出:off(关闭)
- 目的:通过示例引导模型理解任务,并根据输入生成相应的输出。
LLMs as Scoring Models(LLMs作为评分模型)
- 任务描述:模型需要根据给定的指令生成可能的输出,并对其进行评分。
- 示例:
-
- 指令:write the antonym of the word.(写出单词的反义词)
- 输入:direct(直接的)
- 输出:indirect(间接的)
- 评分过程:
-
- 生成多个可能的指令变体。
- 对每个变体进行评分,计算其对数概率。
- 选择评分最高的指令作为最终输出。
LLMs as Resampling Models(LLMs作为重采样模型)
- 任务描述:模型需要在保持语义不变的情况下,生成指令的变体。
- 示例:
-
- 输入:write the antonym of the word.(写出单词的反义词)
- 输出:write the opposite of the word given.(写出给定单词的反义词)
- 目的:通过重采样生成语义相似但表达不同的指令,增加模型的多样性和鲁棒性。
Active-Prompt
思维链(CoT)方法依赖于一组固定的人工注释范例。问题在于,这些范例可能不是不同任务的最有效示例。为了解决这个问题,Diao 等人(2023)最近提出了一种新的提示方法,称为 Active-Prompt,以适应 LLMs 到不同的任务特定示例提示(用人类设计的 CoT 推理进行注释)。
不确定性估计(Uncertainty Estimation)
- 未标注问题(UNLABELED_QUESTIONS):包含多个未标注的问题,例如:
-
- Q1: Karen is packing her backpack for a long-distance hike...
- Q2: A robe takes 2 bolts of blue fiber and half that much white fiber. How many bolts in total does it take?
- Q3: Josh decides to try flipping a house. He buys...
- 填充问题(Fill in the question):将未标注问题输入到模型中,生成可能的答案。
- Few-shot CoT 和 Zero-shot CoT:使用少样本或零样本的链式思维提示来生成答案。
-
- 例如,对于 Q2,生成的答案可能是:
-
-
- A: Ralph started with 175 tennis balls. He hit 2/5 of the first 100 balls, so he hit 2/5 * 100 = 40 balls. He hit 1/3 of the next 75 balls, so he hit 1/3 * 75 = 25 balls. In total he hit 40 + 25 = 65 balls. He did not hit 175 - 65 = 110 balls. The answer is 110.
-
- 不确定性估计:对生成的答案进行不确定性估计,计算每个问题的不确定性分数 u。
-
- 例如,Q2 的不确定性分数为 u=4/5=0.8。
选择(Selection)
- 不确定性排名(Uncertainty Ranking):根据不确定性分数对问题进行排名。
-
- 例如,Q101: 1.0, Q42: 1.0, Q62: 1.0, Q345: 1.0, Q66: 0.8, Q301: 0.8, Q9786: 0.8, Q691: 0.8, Q72: 0.2。
- 最不确定的问题(Most Uncertain Questions):选择不确定性最高的问题,例如 Q101, Q42, Q62, Q345, Q66, Q301, Q9786, Q691。
标注(Annotation)
- 新示例(New Exemplars E):对选择的最不确定的问题进行标注,生成新的示例。
-
- 例如,Q101: Ralph is going to practice playing tennis with a tennis ball machine that shoots...
-
-
- A: Ralph started with 175 tennis balls. He hit 2/5 of the first 100 balls, so he hit 2/5 * 100 = 40 balls. He hit 1/3 of the next 75 balls, so he hit 1/3 * 75 = 25 balls. In total he hit 40 + 25 = 65 balls. He did not hit 175 - 65 = 110 balls. The answer is 110.
-
-
- Q62: Hans booked a room in a hotel. The hotel has 10 floors with 10 identical rooms on each floor...
-
-
- A: There are 10 floors with 10 rooms each. The last floor is unavailable. So there are 9 * 10 = 90 rooms available. The answer is 90.
-
-
- Q9786: Janel's ducks lay 16 eggs per day. She eats three for breakfast...
-
-
- A: Let's think step by step.
-
4. 推理(Inference)
- 测试问题(Test Question):使用新生成的示例进行推理。
-
- 例如,Q: Janel's ducks lay 16 eggs per day. She eats three for breakfast...
总结
这个框架通过以下步骤改进链式思维推理:
- 不确定性估计:对未标注问题进行不确定性估计,计算每个问题的不确定性分数。
- 选择:根据不确定性分数选择最不确定的问题。
- 标注:对选择的问题进行标注,生成新的示例。
- 推理:使用新生成的示例进行推理,提高模型的准确性和鲁棒性。
方向性刺激提示
训练了一个可调节的策略 LM 来生成刺激/提示。越来越多地使用RL来优化 LLM
PAL(程序辅助语言模型)
Gao 等人(2022)(opens in a new tab)提出了一种使用 LLMs 读取自然语言问题并生成程序作为中间推理步骤的方法。被称为程序辅助语言模型(PAL),它与思维链提示不同,因为它不是使用自由形式文本来获得解决方案,而是将解决步骤卸载到类似 Python 解释器的编程运行时中。
ReAct 框架
第一步是从训练集 (例如 HotPotQA) 中选择案例,并组成 ReAct 格式的轨迹。这些在提示中作为少样本示例。轨迹由多思考-操作-观察步骤组成,如图所示。自由形式的思考用来完成不同的任务,如分解问题、提取信息、执行常识或算术推理、引导搜索公式和合成最终答案。
实例
问题 科罗拉多造山带东部区域延伸到的区域的海拔范围是多少?
思考 1 我需要搜索科罗拉多造山带,找到科罗拉多造山带东段延伸的区域,然后找到该区域的海拔范围。
操作 1 搜索 [科罗拉多造山带]
观察 1 科罗拉多造山带是科罗拉多及其周边地区造山运动的一段。
思考 2 它没有提到东部地区。所以我需要查一下东部地区。
操作 2 查找 [东部地区]
观察 2 (结果 1 / 1) 东部区域延伸至高平原,称为中原造山带。
思考 3 科罗拉多造山运动的东部区域延伸到高平原。所以我需要搜索高平原,找到它的海拔范围。
操作 3 搜索 [高平原]
观察 3 高平原指的是两个截然不同的陆地区域之一。
思考 4 我需要搜索高平原(美国)
操作 4 搜索 [高平原(美国)]
观察 4 高平原是大平原的一个分区。从东到西,高平原的海拔从 1800 到 7000 英尺 (550 到 2130 米) 不等。[3]
思考 5 高平原海拔高度从 1800 到 7000 英尺,所以答案是 1800 到 7000 英尺。
操作 5 结束 [1800 到 7000 英尺]
...
自我反思(Reflexion)
自我反思是一个通过语言反馈来强化基于语言的智能体的框架。根据 Shinn et al. (2023)(opens in a new tab),“自我反思是一种‘口头’强化的新范例,它将策略参数化为智能体的记忆编码与 LLM 的参数选择配对。”
在高层次上,自我反思将来自环境的反馈(自由形式的语言或者标量)转换为语言反馈,也被称作 self-reflection,为下一轮中 LLM 智能体提供上下文。这有助于智能体快速有效地从之前的错误中学习,进而提升许多高级任务的性能。
- 参与者(Actor):根据状态观测量生成文本和动作。参与者在环境中采取行动并接受观察结果,从而形成轨迹。链式思考(CoT)(opens in a new tab) 和 ReAct(opens in a new tab) 被用作参与者模型。此外,还添加了记忆组件为智能体提供额外的上下文信息。
- 评估者(Evaluator):对参与者的输出进行评价。具体来说,它将生成的轨迹(也被称作短期记忆)作为输入并输出奖励分数。根据人物的不同,使用不同的奖励函数(决策任务使用LLM和基于规则的启发式奖励)。
- 自我反思(Self-Reflection):生成语言强化线索来帮助参与者实现自我完善。这个角色由大语言模型承担,能够为未来的试验提供宝贵的反馈。自我反思模型利用奖励信号、当前轨迹和其持久记忆生成具体且相关的反馈,并存储在记忆组件中。智能体利用这些经验(存储在长期记忆中)来快速改进决策。
- Actor(行动者,LM):
-
- 负责生成行动(Action),这些行动将被发送到环境中。
- 接收来自短期记忆(Trajectory)的信息,以决定下一步行动。
- Trajectory(短期记忆):
-
- 存储智能体的近期行动和观察结果。
- 为行动者提供必要的上下文信息,以做出更好的决策。
- Evaluator(评估者,LM):
-
- 评估智能体的行动和接收到的反馈。
- 提供内部反馈,帮助智能体改进其行为。
- Self-reflection(自我反思,LM):
-
- 处理外部反馈和内部反馈,进行自我反思。
- 生成反思性文本,这些文本存储在长期记忆中,用于未来的决策。
- Experience(长期记忆):
-
- 存储智能体的长期经验,包括反思性文本。
- 为行动者提供历史数据,帮助其在类似情境下做出更好的决策。
- Environment(环境):
-
- 智能体与之交互的外部世界。
- 接收智能体的行动,并提供观察结果(Obs)和奖励(Reward)。
多模态思维链提示方法
最近,Zhang等人(2023)(opens in a new tab)提出了一种多模态思维链提示方法。传统的思维链提示方法侧重于语言模态。相比之下,多模态思维链提示将文本和视觉融入到一个两阶段框架中。第一步涉及基于多模态信息的理性生成。接下来是第二阶段的答案推断,它利用生成的理性信息。
多模态CoT模型(1B)在ScienceQA基准测试中的表现优于GPT-3.5。
相关文章:
提示词工程
参考网站:提示工程指南 – Nextra 声明:我现在也才刚刚开始学习 人工智能,我会着重于 agent 的学习,如果有不对的地方请大家及时指出。 模型设置 前言 在向大模型发送请求时,常常能看到以下参数: {&qu…...
分页查询原理与优化方案完全指南
分页查询原理与优化方案完全指南 一、分页查询基础原理 1.1 传统分页实现方式 分页查询的核心目的是将大数据集分割成多个小块进行展示,最常见的实现方式是使用LIMIT-OFFSET语法: -- 基础分页查询 SELECT * FROM table_name ORDER BY id LIMIT page_size OFFSET (page_n…...
嵌入式软件设计规范框架(MISRA-C 2012增强版)
以下是一份基于MISRA-C的嵌入式软件设计规范(完整技术文档框架),包含编码规范、安全设计原则和工程实践要求: 嵌入式软件设计规范(MISRA-C 2012增强版) 一、编码基础规范 1.1 文件组织 头文件保护 /* 示…...
课程6. 决策树
课程6. 决策树 决策树直觉模型结构几何解释决策树的构建ID3算法信息内容标准使用决策树处理差距推广到回归问题分支标准与经典损失函数的关系 过度拟合和欠拟合欠拟合过拟合 优点和缺点案例随机生成数据集分类IRIS 数据集解决回归问题的一个简短例子 决策树 今天我们继续探索一…...
【UE5.3.2】初学1:适合初学者的入门路线图和建议
3D人物的动作制作 大神分析:3D人物的动作制作通常可以分为以下几个步骤: 角色绑定(Rigging):将3D人物模型绑定到一个骨骼结构上,使得模型能够进行动画控制。 动画制作(Animation):通过控制骨骼结构,制作出人物的各种动作,例如走路、跳跃、打斗等。 动画编辑(Ani…...
OpenCV 图形API(4)内核 API
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 G-API 背后的核心理念是可移植性——使用 G-API 构建的流水线必须是可移植的(或者至少具备可移植的能力)。这意味着&…...
pom.xml与.yml,java配置参数传递
pom.xml与 .yml java配置参数传递 在Java项目中,通过 pom.xml 和 .yml 文件(如 application.yml)传递变量通常涉及 构建时(Maven)和 运行时(Spring Boot)两个阶段的配置。以下是具体的实现方法&…...
LeetCode算法题(Go语言实现)_21
题目 给你一个整数数组 arr,如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 一、代码实现 func uniqueOccurrences(arr []int) bool {freq : make(map[int]int)// 统计每个数字的出现次数for _, num : range arr {freq[n…...
Docker部署前后端分离项目
镜像下载 在有网络的电脑下载镜像(Windows):依次在CMD命令台执行以下代码 docker pull node:20docker pull openjdk:22-jdkdocker pull mysql:8.0docker pull nginx:1.27 删除镜像代码: docker rmi node:latest 查看镜像列表…...
Linux系统安装MySQL 8.0完整指南(新手友好版)
MySQL作为最流行的开源关系型数据库之一,广泛应用于各种开发和生产环境。本教程将详细介绍在Linux系统上安装MySQL 8.0的全过程,包括卸载旧版本、安装新版本、基础配置和远程连接设置,特别适合Linux新手学习使用。 一、卸载旧版MySQL&#x…...
第二次作业
#创建表,把id设为主键 mysql> create table test02(-> id int primary key, #----主键约束-> name varchar(50)-> ); Query OK, 0 rows affected (0.02 sec) #插入数据测试 mysql> insert into test02 values(1,"成都"); Query OK, 1 r…...
AI大模型下传统 Spring Java工程开发的演进和变化方向
1. 背景和动因 传统Spring开发优势:Spring生态以稳定、模块化、依赖注入(DI)等特性著称,长期支撑企业级应用开发,具备高扩展性和可维护性。AI大模型崛起:近几年,LLM(如GPT-4、LLaMA…...
周学习总结
这周继续学习了Java的知识点,还写了考查递归、递推与贪心的算法题。 算法小结 递归与递推一般是观察观察题干,分析题目的规律,可能还会用到分治算法,推导出一个合理的表达式,再使用函数递归来进行求解。 贪心在求解时…...
19.思科路由器:OSPF协议引入直连路由的实验研究
思科路由器:OSPF协议引入直连路由的实验研究 一、实验拓扑二、基本配置2.1、sw1的配置2.2、开启交换机三层功能三、ospf的配置3.1、R1的配置3.2、R2的配置3.3、重启ospf进程四、引入直连路由五、验证结果随着互联网技术的不断发展,路由器作为网络互联的关键设备,其性能与稳定…...
Zcanpro搭配USBCANFD-200U在新能源汽车研发测试中的应用指南(周立功/致远电子)
——国产工具链的崛起与智能汽车测试新范式 引言:新能源汽车测试的国产化突围 随着新能源汽车智能化、网联化程度的提升,研发测试面临三大核心挑战:多协议融合(CAN FD/LIN/以太网)、高实时性数据交互需求、复杂工况下…...
JSON的基础知识
文章目录 前言json协议的基本格式json 数组类型 的语法规则json协议报文的实例json常见的一些格式错误在gd32中使用cjson库小结 前言 json协议在互联网应用,物联网应用中都会用到。所谓工欲善其事必先利其器,我们需要学习了解json协议的具体格式…...
week2|机器学习(吴恩达)学习笔记
一、多维特征 1.1、什么是多维特征? 1)在我们的原始估计房价的版本中,我们只有一个变量: x x x 来预估 y y y 2)但是现在假设你也知道其他的参数变量,那么我们就可以引入多个参数来提高预测 y y y的准确…...
各类神经网络学习:(七)GRU 门控循环单元(上集),详细结构说明
上一篇下一篇LSTM(下集)GRU(下集) GRU(门控循环单元) 它其实是 R N N RNN RNN 和 L S T M LSTM LSTM 的折中版,有关 R N N RNN RNN 和 L S T M LSTM LSTM 请参考往期博客。 实际应用要比 …...
uniapp利用第三方(阿里云)实现双人视频/音频通话功能(附完整的项目代码)
要在UniApp中利用阿里云实现双人视频/音频通话功能,你需要使用阿里云的实时音视频服务(RTC)。以下是一个基本的实现步骤和示例代码。 基本的操作步骤 注册阿里云账号并开通RTC服务: 访问阿里云官网,注册账号并开通RTC服务。 获取AppID和AppKey: 在RTC控制台创建应用,…...
wsl2的centos7安装jdk17、maven
JDK安装 查询系统中的jdk rpm -qa | grep java按照查询的结果,删除对应版本 yum -y remove java-1.7.0-openjdk*检查是否删除 java -version 下载JDK17 JDK17,下载之后存到wsl目录下(看你自己)然后一键安装 sudo rpm -ivh jd…...
Android 单例模式全解析:从基础实现到最佳实践
单例模式(Singleton Pattern)是软件开发中常用的设计模式,其核心是确保一个类在全局范围内只有一个实例,并提供全局访问点。在 Android 开发中,单例模式常用于管理全局资源(如网络管理器、数据库助手、配置…...
Redis GEO
Redis GEO 引言 Redis GEO是Redis数据库中的一种高级功能,允许用户存储地理位置信息并执行基于地理空间查询的操作。本文将详细介绍Redis GEO的基本概念、使用方法以及在实际应用中的优势。 基本概念 GEO编码 GEO编码是指将地理位置信息(如经纬度&a…...
vulnhub-serile靶机通关攻略
下载地址:https://www.vulnhub.com/entry/serial-1,349/ 靶机安装特殊,附带安装参考文章:https://zhuanlan.zhihu.com/p/113887109 扫描IP地址 arp-scan -l扫描端口 nmap -p- 192.168.112.141访问80端口 线索指向cookie cookie是base64编…...
SAP-ABAP:OData 协议深度解析:架构、实践与最佳应用
OData 协议深度解析:架构、实践与最佳应用 一、协议基础与核心特性 协议定义与目标 定位:基于REST的开放数据协议,标准化数据访问接口,由OASIS组织维护,最新版本为OData v4.01。设计哲学:通过统一资源标识符(URI)和HTTP方法抽象数据操作,降低异构系统集成复杂度。核心…...
408 计算机网络 知识点记忆(3)
前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...
java学习笔记10——集合框架
枚举类的使用 Collection接口继承树 Map接口继承树 Collection 接口方法 总结: 集合框架概述 1.内存层面需要针对于多个数据进行存储。此时,可以考虑的容器有:数组、集合类2.数组存储多个数据方面的特点:> 数组一旦初始化,其长度就是确定的…...
埃文科技企业AI大模型一体机——昇腾体系+DeepSeek+RAG一站式解决方案
面对企业级市场海量数据资产与复杂业务场景深度耦合的刚需,埃文科技重磅推出基于华为昇腾算力DeepSeek大模型的企业一体机产品,提供DeepSeek多版本大模型一体机选择,为企业提供本地昇腾算力DeepSeek大模型RAG知识库的一体化解决方案ÿ…...
蓝桥杯---BFS解决FloofFill算法1---图像渲染
文章目录 1.算法简介2.题目概述3.算法原理4.代码分析 1.算法简介 这个算法是关于我们的floodfill的相关的问题,这个算法其实从名字就可以看出来:洪水灌溉,其实这个算法的过程就和他的名字非常相似,下面的这个图就生动的展示了这个…...
个人博客网站从搭建到上线教程
步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…...
【FreeRTOS】裸机开发与操作系统区别
🔎【博主简介】🔎 🏅CSDN博客专家 🏅2021年博客之星物联网与嵌入式开发TOP5 🏅2022年博客之星物联网与嵌入式开发TOP4 🏅2021年2022年C站百大博主 🏅华为云开发…...
力扣每日一题:2712——使所有字符相等的最小成本
使所有字符相等的最小成本 题目示例示例1示例2 题解这些话乍一看可能看不懂,但是多读两遍就明白了。很神奇的解法,像魔术一样。 题目 给你一个下标从 0 开始、长度为 n 的二进制字符串 s ,你可以对其执行两种操作: 选中一个下标…...
Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)
一.IP数据报结构 (1)版本:指明协议的版本,IPv4就是4,IPv6就是6 (2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节 (3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最…...
Pycharm运行时报“Empty suite”,可能是忽略了这个问题
问题:使用Pycharm运行testcases目录下的.py文件,报“Empty suite”,没有找到测试项。 排查过python解释器、pytest框架安装等等,依然报这个错,依然没找到,最后终端运行: pytest test_demo.py&a…...
Linux快速安装docker和docker-componse步骤
在 CentOS 7 上安装 Docker 和 Docker Compose 的步骤如下: 1. 安装 Docker 1.1. 更新系统 首先,确保你的系统是最新版本: sudo yum update -y1.2. 安装必要的包 安装 yum-utils,这是管理 YUM 源的工具: sudo yu…...
OP2177运算放大器:高性能模拟信号处理的关键元件
在现代电子系统中,模拟信号处理至关重要,运算放大器作为模拟电路的核心部件,其性能优劣直接影响系统的整体表现。OP2177 是一款具有卓越性能的运算放大器,在众多领域有着广泛应用。以下将结合相关资料,对 OP2177 进行全…...
paddle ocr
paddle ocr paddle ocr笔记准备工作referenceto onnx文本检测文本检测文字识别 paddle ocr笔记 准备工作 下载字典ppocr_keys_v1.txt,下标从1开始模型转换 reference paddlepaddle to onnx 下载模型,或者直接使用python跑一下并且把本地模型拿过来…...
通过动态获取项目的上下文路径来确保请求的 URL 兼容两种启动方式(IDEA 启动和 Tomcat 部署)下都能正确解析
背景 因为在不同的启动环境下,获取上下文路径的方式需要有所调整。在 IDEA 中运行时,路径是基于当前页面的 URL(如 index.html),而在 Tomcat 部署时,它是基于项目上下文路径(如 ssm-project&am…...
Spring Boot 整合 ElasticJob 分布式任务调度教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 整合 ElasticJob 分布式任务调度教程 一、ElasticJob 简介 ElasticJob 是当当网开源的分布式任务调度解决方案,支持: …...
Django项目之订单管理part6(message组件和组合搜索组件)
一.前言 我们前面讲的差不多了,接着上节课讲,今天要来做一个撤单要求,我们可以用ajax请求,但是我这里介绍最后一个知识点,message组件,但是我会把两种方式都讲出来的,讲完这个就开始讲我们最重…...
[MySql] 多表关系, 多表查询
一. 多表关系 1.1 一对多 例如: 员工 - 部门表 (一个部门可以有多个员工) 并且在多的一方增加一个字段关联一的一方的主键. 外键约束: 物理外键 (使用 foreign key 定义外键关联另一张表的主键) 缺点: 影响增删改效率; 仅用于单节点, 不适用与集群; 易引发死锁, 性能低; …...
Open GL ES ->GLSurfaceView在正交投影下的图片旋转、缩放、位移
XML文件 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:o…...
一文详解QT环境搭建:Windows使用CLion配置QT开发环境
在当今的软件开发领域,跨平台应用的需求日益增长,Qt作为一款流行的C图形用户界面库,因其强大的功能和易用性而备受开发者青睐。与此同时,CLion作为一款专为C/C打造的强大IDE,提供了丰富的特性和高效的编码体验。本文将…...
MSTP和链路聚合
MSTP 802.1S --- MSTP --- 多生成树协议 --- 就是在RSTP基础上,再针对链路利用率低问题进行优化,可以和RSTP以及STP向下兼容。 实例 --- Instance --- 可以理解为一个V LAN或者多个VALN的集合。一个交换网络可以针对一个实例创建一棵树,起到…...
每天学一个 Linux 命令(8):ls
大家好,欢迎来到《每天掌握一个Linux命令》系列。在这个系列中,我们将逐步学习并熟练掌握Linux命令,今天,我们要学习的命令是ls。 01 什么是ls命令 在Linux系统中,ls命令是“list”的缩写,其英文全称为“list directory contents”,即“列出目录内容”。该命令非常实用…...
交换机、路由器、VLAN、单臂路由、三层交换、STP
华为模拟安装 1.依次安装wincap 2.wireshark 3.virtual box 4.ensp 一、设置 1.virtual box设置 2.计算机防火墙允许以上程序 3.eNSP设置 路由器:AR2240 交换机:S5700、CE12800 防火墙USG6000V 交换机 一、交换机工作原理 1、回顾 二层交换机…...
算法 | 2024最新算法:斑翠鸟优化算法原理,公式,应用,算法改进研究综述,matlab代码
基于斑翠鸟优化算法的原理、应用及改进研究综述 一、算法原理 斑翠鸟优化算法(Pied Kingfisher Optimizer, PKO)是2024年由Bouaouda等人提出的一种新型仿生智能优化算法,其灵感来源于斑翠鸟的捕食行为与共生关系。算法通过模拟斑翠鸟的栖息悬停、潜水捕鱼及与其他生物的共生…...
六十天Linux从0到项目搭建(第二十二天)(pipe、管道四种场景)
1 关于 pipe 系统调用的解析 int pipe(int pipefd[2]) 是 Unix/Linux 系统中用于创建匿名管道的系统调用。以下是关于管道特点的详细解释: 输出型参数 pipefd[2] 是输出型参数,调用成功后: pipefd[0] 存放管道的读取端文件描述符 pipefd[1…...
数据安全与网络安全——问答复习
目录 1、请简要分析勒索软件攻击的原理,并给出技术防护⽅案。 勒索软件攻击原理: 技术防护⽅案 2、举例数据安全问题 数据泄露 数据篡改 数据丢失 3、如何应对数据安全问题 技术层⾯ 管理层⾯ 4、软件漏洞 产⽣原因: 缓冲区溢出漏洞: 注⼊漏…...
ESP-01模块连接手机热点问题及解决方法
在使用ESP-01模块连接手机热点时,可能会遇到一些问题。本文将详细介绍如何解决这些问题,并分享最终通过将WiFi切换到2.4GHz成功解决问题的经验。 一、问题描述 在尝试使用ESP-01模块连接手机热点时,遇到了连接失败的问题。以下是操作过程中…...
go中锁的入门到进阶使用
Go 并发编程:从入门到精通的锁机制 引言:为什么需要锁? Go 语言以其天生支持并发的特性深受开发者喜爱,但并发带来的问题也不容小觑,比如数据竞争、并发安全等。如果多个 Goroutine 访问同一个变量,没有做…...