ICLR24大模型提示(3/11) | PromptAgent:利用语言模型进行战略规划,实现专家级提示优化

【摘要】高效的、针对特定任务的提示通常由专家精心设计,以整合详细的说明和领域见解,这些见解基于对大型语言模型 (LLM) 的本能和目标任务的复杂性的深刻理解。然而,自动生成这种专家级提示仍然难以实现。现有的提示优化方法往往忽视领域知识的深度,难以有效探索专家级提示的广阔空间。为了解决这个问题,我们提出了 PromptAgent,这是一种优化方法,可以自主制作质量与专家手工制作的提示相当的提示。从本质上讲,PromptAgent 将提示优化视为一个战略规划问题,并采用基于蒙特卡洛树搜索的原则性规划算法来战略性地导航专家级提示空间。受到类似人类的反复试验探索的启发,PromptAgent 通过反思模型错误并生成建设性的错误反馈来引出精确的专家级见解和深入的指导。这种新颖的框架允许代理迭代检查中间提示(状态),根据错误反馈(操作)对其进行改进,模拟未来的奖励,并搜索通向专家提示的高奖励路径。我们将 PromptAgent 应用于三个实际领域的 12 个任务:BIG-Bench Hard (BBH),以及特定领域和一般 NLP 任务,结果表明它的表现明显优于强大的 Chain-of-Thought 和最近的提示优化基线。广泛的分析强调了它能够以极高的效率和通用性制作专家级、详细且具有领域洞察力的提示。

原文:PROMPTAGENT: STRATEGIC PLANNING WITH LANGUAGE MODELS ENABLES EXPERT-LEVEL PROMPT OPTIMIZATION
地址:https://arxiv.org/abs/2310.16427
代码:https://github.com/XinyuanWangCS/PromptAgent
出版:ICLR 24
机构: UC San Diego, Mohamed bin Zayed University of Artificial Intelligence

写的这么辛苦,麻烦关注微信公众号“码农的科研笔记”!

1 研究问题

本文研究的核心问题是: 如何自动化地生成等同于专家手工设计的高质量任务提示。

假设一家医疗健康公司想训练一个大语言模型来回答医学相关的问题。为了使模型的回答足够专业和准确,工程师需要精心设计输入给模型的任务提示,融入大量医学领域知识。这通常需要领域专家投入大量的时间和精力。本文旨在探索如何用算法自动生成这种专家级别的提示,从而大大降低人工成本。

本文研究问题的特点和现有方法面临的挑战主要体现在以下几个方面:

  • 专家级提示往往包含非常丰富和深入的领域知识,现有方法缺乏对此的考虑。

  • 专家级提示空间十分广阔,现有方法难以高效探索这个空间。

  • 现有方法倾向于生成与普通用户提示局部相似的变体,很难达到专家提示的深度和广度。 针对这些挑战,本文提出了一种基于蒙特卡洛树搜索的"PromptAgent"方法:

PromptAgent巧妙地将提示优化问题转化为一个策略规划问题。它将生成专家级提示的过程比喻为人类专家设计提示时的反复试错和迭代。每一轮迭代相当于PromptAgent在提示空间中走一步,通过对模型错误进行反思来选择探索方向并对当前提示进行修正。这种人性化的试错过程使PromptAgent能够像人类专家一样在失败中不断学习和进化,最终抵达最优的提示形式。同时,蒙特卡洛树搜索赋予了PromptAgent前瞻性和回溯性,它可以估计未来的回报,调整当前的探索策略,避免陷入局部最优。整个搜索过程在提示空间上形成了一棵树,PromptAgent总是选择最有希望的分支向下探索。最终,经过多轮博弈,它可以在广阔的专家提示空间中找到最优解。

2 研究方法

2.1 问题定义

论文将提示优化问题定义为一个马尔可夫决策过程(MDP),用元组表示。其中,表示状态空间,每个状态对应一个提示的版本;为动作空间,每个动作是基于模型错误反馈生成的修改;定义状态转移函数;是回报函数,用于评估新生成的提示在验证集上的性能。

给定当前状态,PromptAgent迭代地基于生成动作,其中是一个优化器语言模型,是用于辅助动作生成的元提示。接着,PromptAgent根据状态转移函数得到新的状态,是帮助状态转移更新提示的另一个元提示。最后,新生成状态应用动作后的质量由回报函数决定。

2.2 PromptAgent框架

如图3(a)所示,PromptAgent的核心是将MCTS规划算法引入提示优化,通过构建树状结构来策略性地探索提示空间。每个节点表示一个状态(提示),每条边表示状态间的转移动作。PromptAgent通过错误反馈生成有洞察力的动作,并利用MCTS来优先探索那些有希望获得高回报的路径。

图3(b)展示了PromptAgent的工作流程。给定一个当前状态(提示),(1)基础模型先在任务数据集上收集预测错误;(2)优化器模型根据错误总结得到错误反馈作为动作;(3)优化器模型再根据错误反馈更新提示,过渡到下一状态。通过这种基于错误反馈的试错迭代,PromptAgent可以有效地将领域知识引入到提示生成中。

2.3 基于MCTS的提示优化

MCTS通过迭代执行选择、扩展、仿真和回溯四个操作,逐步构建搜索树,更新状态-动作值函数来估计从当前状态-动作对出发的未来累积回报,指导树的扩展方向。

  • 选择:从根节点出发,使用UCT算法平衡利用和探索,递归地选择最优子节点,直到到达一个可扩展的叶子节点。

  • 扩展:对选择到的叶子节点,基于采样得到的多批次错误生成多个动作(错误反馈),将其应用到当前状态,得到多个新的子节点(新提示),加入到搜索树中。

  • 仿真:对新扩展出的节点,通过不断迭代扩展步骤,模拟未来轨迹的累积回报,直到达到最大深度或满足早停条件。

  • 回溯:当到达终止状态时,将累积回报从叶子节点传播回根节点,更新路径上每个状态-动作对的值,调整树的扩展方向。

通过预设的迭代次数,PromptAgent最终输出具有最高平均累积回报的路径作为优化的提示。MCTS的前瞻性仿真和回溯传播机制使其能高效地在庞大的提示空间中找到优质解。

2.4 算法实现细节

算法1详细展示了PromptAgent-MCTS的流程。元提示和的设计对PromptAgent至关重要,分别指导了动作生成和状态转移。论文通过held-out验证集上的任务性能来定义回报函数,并设置最大搜索深度和早停阈值来控制计算开销。此外,论文在多个不同难度的超参数设置下分析了PromptAgent的收敛性和泛化性能。总之,PromptAgent创新性地将提示优化问题建模为MDP,并应用MCTS算法进行策略规划,通过错误反馈的试错机制来纳入领域知识,以解决专家级提示工程面临的知识差距和搜索效率问题,为自动化提示优化开辟了新的思路。

2.5 举例&总结

结合论文原文,我们可以用一个简单的例子(完整方法见详细原文)来说明这个方法。

整体目的: 假设我们要为一个医疗问答系统设计输入提示,希望模型能根据提示生成专业、准确、全面的医学建议。我们希望提示能涵盖疾病定义、治疗方法、注意事项等多方面内容,并符合医学专业人士的表述习惯。传统的人工撰写提示费时费力,需要大量领域专业知识。PromptAgent旨在通过自动化方法生成高质量的"专家级"提示,大幅降低人力成本。下面我们用一个简化的例子,结合PromptAgent的核心步骤,详细说明其工作原理。

给定:

  • 初始提示:"请根据病情描述,给出诊断建议。"

  • 训练集:100个(病情描述,诊断建议)数据对

  • 验证集:20个数据对

步骤:

步骤1:将提示优化建模为马尔可夫决策过程(MDP)
定义MDP的四个要素:

  • 状态:第轮优化的提示

  • 动作:根据错误反馈对的修改

  • 转移:将动作应用到状态,得到新提示

  • 奖励:新提示在验证集的表现提升

假设当前状态为,即初始提示。

解释:MDP建模的核心思想是将一个序贯决策过程表示为在状态空间中搜索最优路径。提示优化可以看作一个多轮对话:PromptAgent根据当前提示的错误反馈,不断生成修改建议(动作),得到新的提示(新状态),并根据新提示的效果(奖励)调整之后的优化方向。每一轮对话对应MDP中的一步决策,目标是在有限的轮数内搜索到最优提示。

步骤2:基于错误反馈生成动作
(1)用当前提示在训练集上测试,得到预测错误样本:

  • 输入:小儿反复咳嗽、流涕3天,鼻塞,无发热。

  • 输出:建议口服布洛芬退烧止痛,必要时请医生处方抗生素。

  • 标准答案:考虑普通感冒引起上呼吸道感染,建议对症治疗,多饮水休息。必要时可使用儿童感冒冲剂缓解症状,但应避免抗生素滥用。若持续高热或症状加重,应及时就医。

(2)总结错误并生成反馈:

  • 诊断不够准确,应基于具体症状给出初步判断

  • 未提及一般治疗措施,如多休息多饮水

  • 未提及常用药物如感冒冲剂,也未警示抗生素滥用

  • 对于可能加重的情况缺乏说明

(3)基于反馈生成修改建议(动作):

  • 根据症状先给出初步诊断判断

  • 补充一般治疗建议,如多休息多饮水

  • 提及常用对症治疗药物,警示抗生素滥用问题

  • 说明可能加重的情形,建议必要时就医

解释:错误反馈是优化的关键。通过比较模型输出与参考答案,可以发现当前提示的局限性,例如缺少必要的分步指导,或遗漏了重要的注意事项。这些反馈信息可以指导PromptAgent去修正提示,添加缺失的说明,使其更加全面、合理。值得注意的是,这里的反馈总结和修改建议都是由另一个强大的语言模型(如GPT-4)自动生成的。这体现了PromptAgent的核心思路:利用LLM自身的语言理解和生成能力去优化提示。

步骤3:状态转移,生成新提示 将动作应用到状态(即)中,生成新提示(即新状态):

"针对儿童反复咳嗽、流涕、鼻塞等症状,首先请给出你的初步诊断判断。在治疗建议中,应提及一般措施如多休息、多饮水等。可以列举常用的对症药物如感冒冲剂,但要提醒避免抗生素滥用。最后还需说明若持续高热或症状加重应及时就医。"

解释:状态转移是通过语言模型实现的,给定当前提示和修改建议,由模型生成完整的新提示。可以看到,新提示较好地纳入了反馈中提到的内容,步骤更清晰,覆盖面也更全。同时新提示也保持了语言的连贯性和逻辑性。这一步的关键在于语言模型要准确理解反馈的意图,并将其自然地融入到原有提示中,生成符合人类表达习惯的内容。

步骤4:评估新提示并计算奖励 将新提示在验证集上测试,评估其性能提升:

  • 提升点1:90%的样本生成了准确的诊断

  • 提升点2:85%的样本提到了至少两条一般治疗建议

  • 提升点3:75%的样本涉及了常用药品使用和抗生素滥用问题

  • 提升点4:80%的样本对可能加重的情况提出了合理建议

假设性能提升为,则状态-动作值函数更新为:

解释:PromptAgent通过新提示在验证集上的表现来评判动作的效果。在医疗问答这个例子中,我们主要考察新提示在四个方面(诊断、治疗建议、药品使用、预后说明)的改进情况。这些维度覆盖了医疗问答的核心要素,对应问题开始时提到的"专家级"提示的特征。奖励值quantify了提示优化前后的性能差异,奖励越大,说明动作的效果越好,状态从转移到也就越有价值。PromptAgent中的函数可以看作在估计未来累积奖励的期望,它记录并更新每一个尝试过的状态-动作对的价值,指导接下来的探索方向。

PromptAgent通过上述四个步骤形成一个完整的探索迭代。在实际使用中,它会重复这个过程多轮(如12轮),通过广度优先搜索、启发式评估、回溯更新等机制不断拓展搜索树,最终输出搜索路径中性能最佳的提示作为优化结果。

3 实验

3.1 实验场景介绍

该论文提出了一个基于策略规划的prompt优化框架PromptAgent,通过蒙特卡洛树搜索(MCTS)在庞大的prompt空间进行高效探索,并利用LLM的自我反思能力引入领域知识,生成expert-level的prompts。实验旨在全面评估PromptAgent在不同任务上的优化性能,与基线方法进行比较,并分析其优化的prompts的泛化能力和质量。

3.2 实验设置

  • Datasets:12个任务,跨越BIG-Bench Hard(6个)、特定领域(3个生物医学任务)和常规NLP(文本分类、自然语言推理等3个)三大领域

  • Baseline:
    • Human Prompts:普通人工设计的指令,通常来自原始数据集

    • Chain-of-Thought (CoT) Prompts:在prompt中引入中间推理步骤,在BBH任务上效果显著

    • GPT Agent:类似Auto-GPT的自主代理,使用GPT-4的插件进行prompt优化

    • APE:最新的基于Monte Carlo搜索的迭代式prompt优化方法

  • Implementation details:
    • 默认base LLM为GPT-3.5,优化器LLM为GPT-4

    • MCTS迭代次数设为12,exploration weight c设为2.5

    • 三种超参设置:Standard(depth limit=8)、Wide(expand width=3,num samples=2)和Lite(depth limit=4)

  • metric:各任务的默认评估指标,如准确率、F1等

3.3 实验结果

3.3.1 实验一、PromptAgent与基线方法的性能对比

目的:评估PromptAgent生成的expert-level prompts相比human prompts、CoT prompts和现有优化方法在不同类型任务上的优势

涉及图表:表1,表2

实验细节概述: 在12个跨三大领域的任务上,将PromptAgent生成的prompts与human prompts、CoT prompts、GPT Agent和APE的结果进行对比。

结果:

  • BBH任务:PromptAgent显著优于所有基线,平均超出human prompts(ZS)、CoT和APE 28.9%、9.5%和11.2%

  • 特定领域任务:PromptAgent在注入领域知识上比APE有7.3%的优势,缩小了普通工程师与领域专家之间的差距

  • 常规NLP任务:PromptAgent分别超出CoT 16.9%和APE 9%,表明即使是常规任务也存在专家级别的prompt优化空间

3.3.2 实验二、PromptAgent优化prompts的泛化能力

目的:探究在GPT-3.5上优化的prompts是否可直接应用于其他base LLMs(GPT-4和PaLM 2)

涉及图表:表3

实验细节概述: 将GPT-3.5上的优化prompts直接用于GPT-4和PaLM 2,并与Human prompts和APE prompts在12个任务上进行比较。

结果:

  • 在更强的GPT-4上,PromptAgent的prompts在11/12个任务上达到或超过基线,进一步放大了expert prompts的潜力

  • 在较弱的PaLM 2上,尽管性能有所下降,但在7/12任务上仍超过基线,特别是在特定领域任务上,表明expert prompts中的领域知识是有效的

3.3.3 实验三、搜索策略的消融实验

目的:系统研究PromptAgent中策略规划的作用,比较MCTS与其他搜索变体的性能差异

涉及图表:表4

实验细节概述: 选取三个领域的5个任务子集,将MCTS与Monte Carlo搜索、Greedy搜索和Beam搜索进行比较,除搜索算法外,其他设置与PromptAgent相同。

结果:

  • Greedy和Beam搜索显著优于无方向的Monte Carlo搜索,表明结构化迭代探索的必要性

  • 在探索效率相当的情况下,Beam和Greedy性能相当,但两者都缺乏对未来结果的预见和对过去决策的回溯能力

  • PromptAgent的MCTS在所有任务上明显超过其他搜索变体,平均相对提升5.6%,凸显了策略规划在复杂prompt空间中的重要性

3.3.4 实验四、探索效率分析

目的:比较PromptAgent与基线方法的探索效率(即搜索空间大小)与性能的关系

涉及图表:图4(a)

实验细节概述: 选取5个任务,比较PromptAgent与Greedy搜索(两个变体)和APE在探索的prompts数量和任务性能上的差异。

结果:

  • PromptAgent的点聚集在左上角,即以更少的探索实现了更高的性能,展现了探索效率的优势

  • Greedy搜索增加探索数量可提升性能,但探索成本更高,且仍不及PromptAgent

  • APE缺乏原则性指导,即使大规模探索也难以有效提升性能

3.3.5 实验五、收敛性分析

目的:研究PromptAgent在搜索树不同深度上reward的变化,分析其学习动态

涉及图表:图4(b)

实验细节概述: 以Epistemic任务为例,分析PromptAgent在不同深度上训练和测试性能的演变。

结果:

  • 训练和测试曲线最初都呈上升趋势,在深度3之后趋于稳定,超过了所有基线方法

  • 其他任务和超参设置下也观察到类似的上升和收敛模式,表明PromptAgent具有稳健的学习动态,可迭代优化和提升expert prompts

3.3.6 实验六、PromptAgent优化prompts的定性分析

目的:定性分析PromptAgent生成的expert-level prompts的质量

涉及图表:图5,表15

实验细节概述: 以NCBI任务为例,检查PromptAgent搜索轨迹中最优路径的前4个状态和对应的3个状态转移。不同颜色突出了相似的领域见解。

结果:

  • 从人工prompt出发,PromptAgent发现多个深刻的错误反馈(action),并有效地将其合并为改进的prompt(state),提高了测试性能

  • 在连续的转移中,疾病实体的定义越来越精确,无缝整合了特定于生物医学的细节

  • 最后一个状态s3集合了之前路径的见解,表现为expert-level prompt,带来卓越的性能提升

  • 与人工prompts和APE prompts相比,PromptAgent prompts在任务指令、术语澄清、解决方案指导、异常处理等方面提供了更全面的内容,展现了expert prompts应对复杂任务理解的优势

4 总结后记

本论文针对构建专家级提示优化系统的问题,提出了一种名为PromptAgent的策略规划方法。通过将提示优化视作一个基于MCTS的策略规划问题,结合LLM的反思能力生成错误反馈指导搜索,PromptAgent能够高效探索庞大的提示空间,自主生成富含领域知识和详尽指令的专家级提示。在BIG-Bench Hard、生物医学和通用NLP任务上的实验表明,PromptAgent生成的提示显著优于人工提示和最新的提示优化基线,展现出其在提升LLM理解和推理能力上的巨大潜力。

疑惑和想法:

  1. 除了MCTS,是否可以尝试其他形式的策略规划算法,如Alpha-Beta剪枝、启发式搜索等?它们在提示优化上的表现如何?

  2. PromptAgent生成反馈时主要依赖于先验的元提示,能否设计一种自适应或递进式的元提示生成机制,随着搜索的进行动态更新元提示?

  3. 在面向新领域任务时,如何高效地为PromptAgent引入该领域的专家知识,加速strategizing过程?是否可以利用知识图谱等外部知识源?

可借鉴的方法点:

  1. 将提示工程建模为序贯决策问题,利用强化学习和策略规划优化提示的思路可以推广到更多LLM应用场景。

  2. 利用LLM的反思和自我纠错能力生成反馈信息指导优化的方法可以借鉴到其他NLP任务,如对话、问答、校对等。

  3. 在搜索过程中权衡exploration和exploitation的策略对于避免局部最优、发现更优解具有重要启发意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/21480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20240603每日AI------------项目引入Spring Cloud Alibaba AI (二)

项目源码解析 前端代码&#xff1a; <div class"container"><h1>Spring Cloud Alibaba AI Example</h1><form id"form"><label for"message">User Message&#xff1a;</label><input type"text&q…

大模型PEFT(一)之推理实践学习记录

1. 简介 多种模型: LLaMA、Mistral、Mixtral-MoE、Qwen、Yi、Gemmha、Baichuan、ChatGLM、Phi等等。集成方法:(增量)预训练、指令监督微调、奖励模型训练、PPO训练和DPO训练。多种精度:32比特全参数微调、16比特冻结微调、16比特LORA微调和基于AQLM/AWQ/GPTQ/LLM.int8 的2/4/8…

操作字符串获取文件名字(包含类型)

记录一种操作字符串获取文件名字的操作方式&#xff0c;方便后期的使用。示例&#xff1a; 输入&#xff1a;"D:/code/Test/Test.txt" 输出&#xff1a;"Test.txt" 设计思路&#xff1a; 首先查找路径中最后一个”/“&#xff0c;然后再通过字符串截取的…

湖南源点调研 为什么中小企业产品上市前一定要做市场调研?

本文由湖南长沙&#xff08;产品前测&#xff09;源点调研咨询编辑发布 可能有很多企业主会表示&#xff0c;市场调研&#xff0c;产品调研&#xff0c;不都是大公司、大品牌、上市公司才会有的流程吗&#xff0c;像我们这种小企业、小品牌、小厂家没有必要去那么做&#xff0…

开源VS闭源:大模型发展路径之争,你站哪一派?

文章目录 引言一、数据隐私1.1开源大模型的数据隐私1.2 闭源大模型的数据隐私1.3 综合考量 二、商业应用2.1 开源大模型的商业应用2.2 闭源大模型的商业应用2.3 商业应用的综合考量 三、社区参与3.1 开源大模型的社区参与3.2 闭源大模型的社区参与3.3 综合考量 结论 引言 在人…

解析“分层引流”在颅内感染治疗中的价值意义

临床中&#xff0c;化脓性颅内感染的治疗一直是界内关注的重点。近年来&#xff0c;得益于医疗技术的持续革新与提升&#xff0c;颅内感染的治疗方法也获得了不断的更新与优化。在此背景下&#xff0c;北京精诚博爱医院所倡导的“分层引流”理念&#xff0c;作为一种新兴的治疗…

什么牌子的开放式耳机质量好?2024超强实力派品牌推荐!

耳机对于一个音乐人有重要这个不必多说&#xff0c;我朋友是个音乐编辑&#xff0c;他经常需要长时间佩戴耳机进行音频编辑和混音工作。在尝试过多款开放式耳机后&#xff0c;都没找到合适的。今天&#xff0c;我将从专业角度为大家带来几款热门开放式耳机的测评报告&#xff0…

第二证券炒股知识:股票内盘外盘代表什么意思?

股票内盘是主动性卖盘&#xff0c;表明以买入价成交的股数&#xff0c;持股的投资者主动以等于或是低于买一、买二、买三、买四、买五的价格卖出手中持有的股份&#xff0c;买入成交数量核算参加内盘。 股票外盘是主动性买盘&#xff0c;表明以卖出价成交的股数&#xff0c;场…

跟着大佬学RE(一)

学了一个 map&#xff08;&#xff09;函数的使用 import base64rawData "e3nifIH9b_CndH" target list(map(ord, rawData)) # map 函数将 rawData 中的每个字符传递给 ord 函数。ord 函数返回给定字符的 Unicode 码点 print(target) # 打印 map 对象的内存地址&…

电脑中病毒了怎么办?7招教你保护电脑安全!

“不知道怎么回事&#xff0c;我的电脑莫名其妙就中病毒了&#xff0c;实在不知道应该怎么操作了&#xff0c;希望大家可以帮我&#xff01;” 在数字化时代的浪潮中&#xff0c;电脑已成为我们生活与工作中不可或缺的一部分。然而&#xff0c;就像任何事物都有其阴暗面一样&am…

ip地址快速切换软件有哪些好处

ip地址快速切换软件有哪些好处&#xff1f;IP地址快速切换软件具有诸多显著的好处&#xff0c;以下是对其主要优势的详细阐述&#xff1a; 首先&#xff0c;IP地址快速切换软件极大地提升了网络活动的灵活性和便捷性。对于需要经常切换网络环境或进行多账号管理的用户而言&…

AI大模型在穿戴设备健康中的心率深度融合与案例分析

文章目录 1. 架构设计2. 应用场景3. 实现步骤3.1 步骤1&#xff1a;数据预处理3.2 步骤2&#xff1a;边缘计算初步分析3.3 步骤3&#xff1a;数据上传到云端3.4 步骤4&#xff1a;云端复杂分析3.5 步骤5&#xff1a;深度学习模型训练与部署 4. 云端API设计4.1 安装Flask4.2 API…

美国前总统特朗普竟然入驻TikTok,粉丝破24万

大家好&#xff01; 我是老洪&#xff01; 刚看到一则关于美国前总统特朗普的新闻&#xff0c; 特朗普竟然入驻TikTok了&#xff0c;太令人惊讶了。&#xff08;为什么惊讶&#xff0c;后面再说&#xff09; 更为惊人的是&#xff0c;他的到来竟然引来了众多粉丝的热烈追捧&…

如何从清空的回收站中恢复已删除的Word文档?

“嗨&#xff0c;我将 10 个 Word 文档移动到回收站&#xff0c;然后用清洁软件清理回收站。现在我意识到我犯了一个大错误——我删除了错误的文件。我想知道是否可以从清空的回收站中恢复已删除的Word文档。我没有数据恢复的经验&#xff0c;也不精通计算机技术。有没有简单的…

三.一布局和布局切换的实践与探索

在前端开发中&#xff0c;灵活的布局切换是一项非常实用的功能。今天&#xff0c;我想和大家分享一下如何在主组件中通过更换 Layout 目录下的组件来实现布局切换。 首先&#xff0c;我们有一个主组件 index.vue&#xff0c;它承担着整个页面的主要逻辑和展示。 而在 Layout …

SG90舵机(Arduino)/XY轴摇杆使用(Arduino)

XY轴摇杆使用 需要注意&#xff0c;必须是 ADC 引脚才可以接收模拟信号输入 /** 接线* PS2摇杆 Arduino* x A0* y A1* sw 7 */const int yg_x_pin A0; const int yg_y_pin A1; const int yg_btn_pin 7; // 摇杆按下的输入引脚 void…

旋转编码器、DS1302 实时时钟、红外遥控模块、雨滴探测传感器 | 配合Arduino使用案例

旋转编码器 旋转编码器是一种用作检测自动化领域中的角度、速度、长度、位置和加速度的传感器。 有绝对式和增量式&#xff0c;这里使用增量式&#xff08;相对&#xff09;。 绝对输出只是周的当前位置&#xff0c;是他们成为角度传感器。增量输出关于轴的运动信息&#xff0…

Python中degrees怎么用

degrees() 函数可以将弧度转换为角度。 语法 以下是 degrees() 方法的语法&#xff1a; import math math.degrees(x) 注意&#xff1a;degrees() 是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;然后通过 math 静态对象调用该方法。 参数 x -- 一个数值。 返…

视频SK配置教程

视频SK配置教程 提供的pika接口服务&#xff08;国外的&#xff0c;所以要反代&#xff09;&#xff0c;创建一个pika账号并开通pika套餐 反向配置教程 https://blog.csdn.net/u012241616/article/details/139391954?spm1001.2014.3001.5502 1、进入站点后台->功能->…

.Net Core Console 项目如何使用 HttpClient 与 Web 服务通信

前言 HttpClient 类是在 .NET Framework 4.5 和 .NET Core 中引入的新的 HTTP 客户端类&#xff0c;是 .NET 用于发送和接收 HTTP 请求的类&#xff0c;相比之前的 WebRequest 和 HttpWebRequest&#xff0c; 它提供了现代的、易用的 API&#xff0c;并且具有更好的性能和扩展…