大模型-提示词调优
什么是提示词
提示词(Prompt)在大模型应用中扮演着关键角色,它是用户输入给模型的一段文本指令 。简单来说,就是我们向大模型提出问题、请求或描述任务时所使用的文字内容。例如,当我们想让模型写一篇关于春天的散文,输入的 “请创作一篇描绘春天景色的优美散文” 就是提示词。提示词的质量直接影响模型输出结果的质量和相关性,精准、清晰且富有引导性的提示词能够让模型更准确地理解我们的意图,从而生成符合期望的回答 。
什么是提示工程
提示工程(Prompt Engineering)是一门新兴的技术领域,专注于研究如何设计、构建和优化提示词,以充分发挥大模型的潜力 。它涉及到对语言结构、任务需求、模型特性等多方面因素的综合考量。提示工程的目标是通过精心构造提示词,引导模型生成高质量、准确且有用的输出。例如,在信息检索任务中,通过设计特定结构和内容的提示词,让模型能够从海量知识中筛选出最相关的信息;在文本生成任务里,利用提示工程使模型生成逻辑连贯、风格统一的文本。它不仅仅是简单地输入问题,而是运用各种技巧和策略对提示词进行精细雕琢,以实现与大模型的高效交互 。
提示词策略
获得更好结果的六种策略:
-
write clear instructions 编写清晰的说明
-
provide reference text 提供参考文本
-
split complex tasks into simpler substasks将复杂任务拆分为更简单的子任务
-
give the model time to think 给模型时间思考
-
use external tools 使用外部工具
-
test changes systematically 系统地测试更改
推理模型
-
提示语更简洁,只需明确任务⽬标和需求(因其已内化推理逻辑)
-
⽆需逐步指导,模型⾃动⽣成结构化推理过程(若强⾏拆解步骤,反⽽可能限制其能⼒)
推理模型在处理提示词时,侧重于根据给定的信息进行逻辑推导和分析 。例如,当提示词为 “已知三角形的两条边分别为 3 和 4,且这两条边夹角为 90 度,求第三条边的长度”,推理模型会运用勾股定理等数学知识进行推理计算,给出答案。这类模型能够理解问题中的逻辑关系,按照既定的推理规则得出结论,常用于解决数学问题、逻辑谜题、代码编写等需要理性分析和推导的任务 。
通用模型
-
需显式引导推理步骤(如通过CoT提示),否则可能跳过关键逻辑
-
依赖提示语补偿能⼒短板(如要求分步思考、提供示例)
通用模型具有更广泛的适用性,能处理多种类型的提示词并生成多样化的输出 。比如输入 “介绍一下中国的传统文化”,通用模型可以从多个角度,如传统节日、民间艺术、哲学思想等方面进行阐述。它不局限于特定领域的规则或逻辑,而是凭借对大量文本数据的学习,具备对各种一般性问题进行理解和回答的能力,适用于日常对话、知识科普、创意写作等场景 。
选择原则
-
优先根据需求类型选择模型(如数学任务选择推理模型,创意任务选择通用模型)
-
提示语设计
-
推理模型:简洁,聚焦目标,信任内化能力
-
通用模型:结构化、补偿性引导
-
-
避免误区
-
不要对推理模型使用“启发式“提示词,如角色扮演,可能干扰其逻辑主线
-
不要对通用模型“过度信任“,如直接问复杂推理问题,需分步验证结果
-
提示词基础设定
prompt的格式和语气设定
prompt 的格式和语气对模型输出有重要影响 。格式上,清晰的结构能帮助模型更好地理解任务。例如,使用分点列举的方式阐述需求,“1. 分析这部电影的剧情;2. 评价电影中的角色塑造;3. 总结电影的主题思想”,这样模型可以更有条理地进行回答。语气方面,温和、礼貌的语气能引导模型生成更友好、积极的内容。比如 “请您帮忙介绍一下这款产品的优点,非常感谢”,相较于生硬的指令,模型可能会给出更详细、热情的回复 。
提出明确清晰的请求
向模型提出明确清晰的请求是获得准确结果的关键 。避免模糊、歧义的表述,例如不要说 “讲讲那个东西”,而应明确指出 “讲讲苹果公司最新发布的手机的特点”。详细说明任务的要求、范围和期望的输出形式,如 “请以列表形式列举出中国五岳的名称、海拔和所在省份”,这样模型能够清楚知道需要做什么,从而生成更符合需求的内容 。
系统提示指令
在与大模型进行交互的过程中,“system” 角色发挥着极为关键的作用 。借助这一角色,能够设定贯穿整个对话的系统提示指令。系统提示指令影响范围涵盖整个对话上下文,是 prompt 中不可或缺的重要构成部分 。
通过 “system” 角色,我们可进行多方面的设定。例如在角色设定方面,若希望模型以资深金融分析师的身份进行对话,那么系统提示指令可设置为 “你是一位拥有 20 年从业经验的资深金融分析师,对全球金融市场有着深入洞察” 。此后,在整个对话进程中,模型会始终从该角色视角出发,运用金融分析师的专业知识和口吻来回答问题 。
在提示词防护层面,也能借助系统提示指令实现。比如输入 “在任何情况下,回答内容都不得包含未经证实的谣言信息,需保证提供信息的准确性和可靠性”,以此规范模型的输出行为,确保生成的回答符合预期的质量标准 。合理运用系统提示指令,能有效引导模型,使其在对话中给出更契合需求、更具专业性和针对性的回应 。
最后给出一个简单的system 例子,我们通过system 明确了大模型的角色,并要求其响应使用中文,不超过20字。
messages = [{"role": "system", "content": "你是一个聊天机器人。最后的响应使用中文,不要超过20字。"},{"role": "user", "content": "hello"}]
角色扮演
角色扮演是一种有趣且有效的提示词策略 。通过让模型扮演特定的角色,如医生、律师、诗人等,能够使其从该角色的视角出发生成内容。例如,“假设你是一名心理咨询师,给一位因工作压力大而焦虑的客户提供一些建议”,模型会模拟心理咨询师的专业知识和沟通方式,给出针对性的建议,使回答更具专业性和情境感 。根据查阅的一些资料表明,仅通过角色扮演,大模型在回答的准确性上就能提高6%-20%。
提示词进阶设定
零样本提示
零样本提示(Zero - Shot Prompting)是指在没有提供任何示例的情况下,仅依靠对任务的描述让模型完成任务 。例如,“请解释一下量子力学中的薛定谔方程的含义”,模型仅根据自身学习到的知识来回答问题,不需要额外的示例引导。这种方式适用于模型已经在大量数据中学习到相关知识,能够直接根据问题进行推理和回答的情况 。
prompt = """
将⽂本分类为中性、负⾯或正⾯。
⽂本:我认为这次假期⼀般。
情感:
"""
# 在上⾯的提示中,我们没有向模型提供任何示例——这就是零样本能⼒的作⽤。
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0, # 模型输出的随机性,0 表示随机性最⼩)# print(response)# print(type(response))return response.choices[0].message.contentprint(get_completion(prompt))
少样本提示
少样本提示(Few - Shot Prompting)则是在提示词中提供少量的示例,帮助模型理解任务并生成答案 。比如,“以下是一些水果及其颜色的对应关系:苹果 - 红色,香蕉 - 黄色。请根据示例,说出葡萄的颜色”,通过提供几个简单的示例,模型可以更快地掌握任务模式,从而更准确地回答关于葡萄颜色的问题。少样本提示在模型对某些特定任务或领域不太熟悉时,能够有效引导其生成正确的结果 。
prompt = """
1. ⽣成⽂本:ChatGPT可以⽣成与给定主题相关的⽂章、新闻、博客、推⽂等等。您可以提供⼀些
关键词或主题,然后ChatGPT将为您⽣成相关的⽂本。
2. 语⾔翻译:ChatGPT可以将⼀种语⾔的⽂本翻译成另⼀种语⾔。
3. 问答系统:ChatGPT可以回答您提出的问题,⽆论是事实性的问题、主观性的问题还是开放性的
问题。
4. 对话系统:ChatGPT可以进⾏对话,您可以与ChatGPT聊天,让它回答您的问题或就某个话题进
⾏讨论。
5. 摘要⽣成:ChatGPT可以从较⻓的⽂本中⽣成摘要,帮助您快速了解⽂章的主要内容。
6. ⽂本分类:ChatGPT可以将⼀些给定的⽂本分类到不同的类别中,例如新闻、体育、科技等等。
7. ⽂本纠错:ChatGPT可以⾃动纠正⽂本中的拼写错误和语法错误,提⾼⽂本的准确性。
请把上⾯7段话各⾃的开头⼏个词,翻译成英⽂,并按序号输出。例如,第1段话的开头是"⽣成⽂
本",那么就输出"generate text"
"""
#
prompt = """
"whatpu"是坦桑尼亚的⼀种⼩型⽑茸茸的动物。⼀个使⽤whatpu这个词的句⼦的例⼦是:
我们在⾮洲旅⾏时看到了这些⾮常可爱的whatpus。
"farduddle"是指快速跳上跳下。⼀个使⽤farduddle这个词的句⼦的例⼦是:
"""
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0, # 模型输出的随机性,0 表示随机性最⼩)return response.choices[0].message.content
print(get_completion(prompt))
思维链(COT)
思维链(Chain of Thought,COT)提示是让模型在回答问题时展示其推理过程 。例如,对于问题 “小明有 5 个苹果,小红又给了他 3 个,然后他吃掉了 2 个,请问小明现在有几个苹果?”,使用思维链提示后,模型的回答可能是 “首先,小明原本有 5 个苹果,小红给了他 3 个,那么此时他有 5 + 3 = 8 个苹果。接着,他吃掉了 2 个,所以现在他有 8 - 2 = 6 个苹果”。这种方式有助于提高模型回答的可解释性和准确性,让用户更好地理解模型的决策过程 。
-
标准的prompt
Q:罗杰有5个⽹球。他⼜买了2罐⽹球。每个罐⼦有3个⽹球。有多少他现在有多少个⽹球?
A:答案是11个
Q:⾃助餐厅有23个苹果。如果他们⽤20做午餐,⼜买了6个,他们有多少个苹果?
A:答案是27个
-
链式思考的prompt
Q:罗杰有5个⽹球。他⼜买了2罐⽹球。每个罐⼦有3个⽹球。他现在有多少个⽹球?
A:罗杰⼀开始有5个球。2罐3个⽹球,等于6个⽹球。5 + 6 = 11。答案是11。
Q:⾃助餐厅有23个苹果。如果他们⽤20做午餐,⼜买了6个,他们有多少个苹果?
A:⾃助餐厅最初有23个苹果。他们使⽤20美元做午饭。23 - 20 = 3。他们⼜买了6个苹果,得到3
+ 6= 9。答案是9个。
-
零样本COT
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI()
# prompt = """
# 我去市场买了10个苹果。我给了邻居2个苹果和修理⼯2个苹果。
# 然后我去买了5个苹果并吃了1个。我还剩下多少苹果?
# """
prompt = """
我去市场买了10个苹果。我给了邻居2个苹果和修理⼯2个苹果。
然后我吃了1个⼜去买了5个苹果。我还剩下多少苹果?
让我们逐步思考。
"""
# 在上⾯的提示中,我们没有向模型提供任何示例——这就是零样本能⼒的作⽤。
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0, # 模型输出的随机性,0 表示随机性最⼩)return response.choices[0].message.content
print(get_completion(prompt))
-
少样本COT
prompt = """
这组数中的奇数加起来是偶数: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:
"""
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0, # 模型输出的随机性,0 表示随机性最⼩)return response.choices[0].message.content
print(get_completion(prompt))
思维树(TOT)
思维树(Tree of Thought,TOT)是一种更复杂的提示策略,它将问题解决过程视为一个树形结构 。模型会在不同的分支上探索多种可能的解决方案,然后综合评估选择最优解。例如,在解决一个复杂的数学证明题时,模型可以从不同的定理和思路出发,在思维树的各个分支上进行推导,最终找到最合理的证明路径。思维树能够让模型更全面地考虑问题,适用于解决需要多种尝试和探索的复杂任务 。
-
在思维链的每⼀步,采样多个分⽀
-
拓扑展开成⼀棵思维树
-
判断每个分⽀的任务完成度,以便进⾏启发式搜索
-
设计搜索算法
-
判断叶⼦节点的任务完成的正确性
思维树实战
-
题目:⼩明 100 ⽶跑成绩:10.5 秒,1500 ⽶跑成绩:3 分 20 秒,铅球成绩:12 ⽶。他适合参加哪些搏击运动训练。
import jsondef get_completion(prompt, model="gpt-4o", temperature=0):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=temperature # 模型输出的随机性,0 表示随机性最小)return response.choices[0].message.contentprompt = """
小明100米跑成绩:10.5秒,1500米跑成绩:3分20秒,铅球成绩:12米。他适合参加哪些搏击运动训练?请根据以上成绩,分析候选人在速度、耐力、力量三方面素质的分档。分档包括:强(3),中(2),弱(1)三档需要速度强的运动有哪些。给出10个例子,需要耐力强的运动有哪些。给出10个例子,需要力量强的运动有哪些。给出10个例子分别分析上面给的10个运动对速度、耐力、力量方面素质的要求: 强(3),中(2),弱(1)根据上面的分析:生成一篇小明适合那种运动训练的分析报告
"""print(get_completion(prompt))
自洽性
-
一种对抗大模型幻觉的手段。就像我们做数学题一样,在回答的基础上进行多次验算。
-
实现方式
-
同样的prompt 跑多次
-
通过投票选出最终结果
-
CO-STAR 框架
-
Context(语境):这是创作的起点,也是引导AI生成内容的基础。在构建提示词时,需要为大型语言模型(LLM)描绘一个清晰的背景环境或场景,以便AI能够理解并生成与语境相符的内容。
-
Objective(目标):明确的目标设定是确保AI生成内容符合用户期望的关键。在构建提示词时,应简单直白地告诉LLM期望它创作出什么样的输出,以便AI能够准确地满足用户需求。
-
Style(风格):作品的基调与格调对于传达信息和吸引受众至关重要。在构建提示词时,需要指导LLM采用什么样的风格,如正式、幽默、亲切等,以确保生成的内容符合用户期望的风格。
-
Tone(语气):语气是作品情感色彩的体现,能够增强内容的吸引力和感染力。在构建提示词时,可以引导LLM采用特定的语气,如热情、冷静、讽刺等,以丰富内容的情感表达。
-
Audience(受众):了解并描述目标受众是确保内容有效传达的关键。在构建提示词时,需要为LLM勾勒出预期的受众人群,包括他们的年龄、性别、兴趣爱好等特征,以便AI能够生成更符合受众需求的内容。
-
Response Format(回应格式):指明想要的回应格式是确保AI生成内容符合用户期望的最后一步。在构建提示词时,应明确告知LLM期望的回应格式,如文本、图片、视频等,以便AI能够按照用户要求生成相应的内容。
CO-STAR框架因其强大的实用性和灵活性而被广泛应用于各种场景,如社交媒体文案撰写、商业报告生成等。通过运用CO-STAR框架,用户可以更加轻松地创建清晰、精确且有效的提示词,从而指导AI生成符合期望的内容。此外,CO-STAR框架还在新加坡首届GPT-4提示工程大赛中获得冠军,进一步证明了其在即时工程领域的重要地位和价值。
提示词逆向工程
提示词逆向工程是指通过分析模型的输出结果,反推其背后使用的提示词或模型的训练方式 。例如,当我们看到模型生成了一段高质量的关于某产品的营销文案时,尝试分析它是基于怎样的提示词生成的,是强调了产品的哪些特点,采用了何种语言风格等。这有助于我们学习优秀的提示词设计方法,同时也能深入了解模型的行为模式和偏好,从而更好地优化自己的提示词,提高与模型交互的效果 。
请对下列{{⽂本}}进⾏逆向提示词⼯程,⽣成⼀个可以仿写这段⽂章的提示词。
要求:
1.需提炼⽂章的语⽓,写作⻛格,⽤词,句式等各种写作⽅⾯的要素,你可以根据写作领域的专业知
识,进⾏更多写作要素的分析。
2.逆向提示词⼯程⽣成的提示词,是要发送给ChatGPT,让它能以任意主题,写出与{{{⽂本}}}⻛
格类似的⽂章。
⽂本 =
{{{your text}}}
大模型自生成提示词
提示词模板
-
模板设计:构建基础提示词模板,例如 “请围绕 [主题],从 [角度 1]、[角度 2] 方面生成用于 [具体任务,如创作故事、撰写报告等] 的提示词”。比如,“请围绕‘人工智能在医疗领域的应用’,从临床诊断、药物研发两个角度生成用于撰写科普文章的提示词”。
-
模型输入:将设计好的模板输入大模型,模型基于对各类任务和语言结构的学习,依据模板要求生成相关提示词。例如,模型可能生成 “简述人工智能如何助力临床诊断流程优化,以撰写科普文章”“阐述药物研发中人工智能的关键作用,创作科普内容” 等提示词。
详细描述
-
详细任务说明:向大模型清晰阐述任务的目标、期望输出的内容类型、目标受众等信息。如 “我需要为小学生群体创作一系列关于太空探索的趣味科普短视频脚本,帮我生成用于引导创作这些脚本的提示词”。
-
模型响应:大模型根据任务描述,从适合小学生理解的角度出发,生成提示词,如 “设计一个有趣的太空飞船角色,创作关于它带领小朋友探索太空的短视频脚本提示词”“以太阳系八大行星为主题,生成引导制作科普短视频脚本的提示词,突出每个行星的独特之处”。
少样本描述
-
提供示例:给大模型展示一些已有的优质提示词及其对应的任务成果,例如提供几个关于美食推荐的提示词 “列举本地最具特色的街头小吃,写一篇美食推荐文章”“从食材搭配角度,为一道经典菜肴创作美食推荐文案的提示词”,以及相应生成的美食推荐内容。
-
要求仿写:接着让大模型参考这些示例,针对新的主题生成提示词。如 “请参考上述示例,为旅游景点推荐生成提示词,主题是‘海边度假胜地’”,模型可能生成 “描述海边度假胜地的独特景观,创作旅游景点推荐文案的提示词”“结合海边活动,生成用于推荐海边度假胜地的提示词”。
利用思维链
-
引导思考过程:使用类似思维链的提示方式,让模型逐步推导提示词。例如 “我要举办一场户外音乐节,目标是吸引不同年龄段的人群。首先思考不同年龄段人群对音乐节的兴趣点,然后基于这些兴趣点生成用于宣传文案创作的提示词”。
-
模型推导生成:模型先分析不同年龄段兴趣点,如年轻人喜欢潮流音乐、互动环节,老年人可能偏好经典音乐等,进而生成提示词,像 “突出音乐节上潮流音乐表演,为吸引年轻人创作宣传文案的提示词”“结合经典音乐元素,生成吸引老年人群体参加户外音乐节宣传文案的提示词”。
代码示例
question_prompt_system ="""你是一位大模型提示词生成专家,请根据用户的需求编写一个智能助手的提示词,来指导大模型进行内容生成,要求:
1. 以 Markdown 格式输出
2. 贴合用户需求,描述智能助手的定位、能力、知识储备
3. 提示词应清晰、精确、易于理解,在保持质量的同时,尽可能简洁
4. 只输出提示词,不要输出多余解释"""
question_prompt_user ="""请帮我生成一个“英语教学老师”的提示词"""
prompt 调优策略
-
找到好的 prompt 是个持续迭代的过程,需要不断调优。
-
⾼质量 prompt 核⼼要点:具体、丰富、少歧义
-
简洁:尽量⽤最简短的⽅式表达问题。过于冗⻓的问题可能包含多余的信息,导致模型理解错误或答⾮所问。
-
具体:避免抽象的问题,确保问题是具体的,不含糊。
-
详细上下⽂:如果问题涉及特定上下⽂或背景信息,要提供⾜够的详情以帮助模型理解,即使是直接提问也不例外。
-
避免歧义:如果⼀个词或短语可能有多重含义,要么明确其含义,要么重新表述以消除歧义。
-
逻辑清晰:问题应逻辑连贯,避免出现逻辑上的混淆或⽭盾,这样才能促使模型提供有意义的回答。
-
参考文献
https://github.com/PartnerDAO/Prompt-Engineering-Guide-zh?tab=readme-ov-file
大模型面试实战!Prompt 调优
大模型 prompt 提示词如何调优?
相关文章:
大模型-提示词调优
什么是提示词 提示词(Prompt)在大模型应用中扮演着关键角色,它是用户输入给模型的一段文本指令 。简单来说,就是我们向大模型提出问题、请求或描述任务时所使用的文字内容。例如,当我们想让模型写一篇关于春天的散文&a…...
[RN 实践有效]Expo+cross-env配置项目环境变量
首先,从中可以看出,cross-env的主要作用是跨平台设置环境变量,而Expo项目通常通过app.config.js或.env文件来管理这些变量。需要强调安装cross-env的必要性,以及如何在package.json中正确配置脚本命令。 接下来,用户的问题是关于Expo中cross-env的详细配置,因此需要分步骤…...
【C语言】编译和链接详解
hi,各位,让我们开启今日份博客~ 小编个人主页点这里~ 目录 一、翻译环境和运行环境1、翻译环境1.1预处理(预编译)1.2编译1.2.1词法分析1.2.2语法分析1.2.3语义分析 1.3汇编1.4链接 2.运行环境 一、翻译环境和运行环境 在ANSI C…...
CSS引入方式、字体与文本
目录 前言 一、CSS引入方式 1.内联样式(Inline Style) 2.内部样式表(Internal Style Sheet) 3.外部样式表(External Style Sheet) 4.导入样式表(import) 5.引入方式对比 6.总…...
2.机器学习-回归模型-非线性模型
一.决策树回归 1.决策树的核心参数: (1)树的生长与分裂 参数名默认值作用criterion"squared_error"分裂节点的评估标准: - "squared_error":均方误差(MSE)。 - "friedman_mse":改进的…...
Git提交前时间检查
为了防止在本地看日志的时候,由于本地时间被修改,导致日志的时间存在非正确时间。通过以下脚本在提交前进行时间验证,只有是正确的时间才可以提交。 使用方法如下: 复制如下脚本,命名为 pre-commit ,放到 …...
浅述WinForm 和 WPF 的前景
在.NET 开发领域,WinForm 和 WPF 都是用于创建桌面应用程序的技术框架,但它们在很多方面存在差异,对于开发者来说,也常常会思考哪个更有前途。 一、WinForm 1. 成熟/稳定度: WinForms 是较早的桌面应用程序框架&am…...
【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式
【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式 工厂模式主要特点类型适用场景抽象工厂模式主要特点工作原理适用场景举例优点缺点总结单例模式主要特点工作原理适用场景优点缺点总结建造者模式主要特点工作原理适用场景优点…...
超精密工件小孔几何尺寸测量:自动化解决方案
下载链接:(最新版本)超精密工件小孔几何尺寸测量:自动化解决方案python脚本代码,可直接运行,内包含测试数据,亲测好用资源-CSDN文库 在现代制造业中,超精密工件的质量控制至关重要&a…...
Mastering SAP Analytics Cloud - Empower Your Business Users
Mastering SAP Analytics Cloud - Empower Your Business Users...
Hadoop、Spark、Flink Shuffle对比
一、Hadoop的shuffle 前置知识: Map任务的数量由Hadoop框架自动计算,等于分片数量,等于输入文件总大小 / 分片大小,分片大小为HDFS默认值128M,可调 Reduce任务数由用户在作业提交时通过Job.setNumReduceTasks(int)设…...
Sublime Text 2.0.2 安装与汉化指南:从下载到中文包配置的完整教程
Sublime Text 是一款轻量级、高性能的代码编辑器,深受开发者喜爱。Sublime Text 2.0.2 是一个较旧的版本,但仍然可以满足基本的代码编辑需求。以下是关于 Sublime Text 2.0.2 的安装、中文包配置以及使用方法的详细指南。 1. 下载 Sublime Text 2.0.2 提…...
【双指针】移动零
题目描述: 算法分析: 观察输入输出: 输出中一共分为两个区域,0区和非零区。 但是在处理未完成之前,必然存在着一个零和非零数共存的区域,所以在处理的过程当中一共有三个区域,0区,…...
CMake简单入门
简介 CMake 是一个开源的跨平台构建系统生成工具,旨在简化和自动化项目的构建过程。它主要用于管理和控制软件构建的过程,特别是在处理复杂的项目结构和多个平台时。CMake 并不直接进行编译或链接,而是生成本地构建系统所需的文件࿰…...
【AIGC】OpenAI 集成 Langchain 操作实战使用详解
目录 一、前言 二、前置准备 2.1 安装 Langchain必须的依赖 2.1.1 python环境 2.1.2 langchain openai 环境 2.1.3 准备一个apikey 2.1.4 langchain 核心组件 三、Langchain 各组件使用 3.1 Chat models组件 3.1.1 Invocation 使用 3.1.1.1 结果解析 3.2 提示词模板…...
热key探测技术架构设计与实践
参考: 得物热点探测技术架构设计与实践 Redis数据倾斜与JD开源hotkey源码分析揭秘 京东热点检测 HotKey 学习笔记 hotkey: 京东App后台中间件,毫秒级探测热点数据,毫秒级推送至服务器集群内存,大幅降低热key对数据层查询压力 …...
【最新】 ubuntu24安装 1panel 保姆级教程
系统:ubuntu24.04.1 安装软件 :1panel 第一步:更新系统 sudo apt update sudo apt upgrade 如下图 第二步:安装1panel,运行如下命令 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o …...
微信小程序threejs三维开发
微信小程序threejs开发 import * as THREE from three; const { performance, document, window, HTMLCanvasElement, requestAnimationFrame, cancelAnimationFrame, core, Event, Event0 } THREE .DHTML import Stats from three/examples/jsm/libs/stats.module.js; im…...
Starship:快速且高度可定制的命令行框架!!
Starship 是一款专为开发者设计的现代、快速且高度可定制的命令行框架。它通过简洁的界面提供丰富的环境信息,帮助用户更高效地进行日常开发工作。 软件介绍: Starship 是用 Rust 编写的开源项目,以其轻量级和极速启动而著称。它能够跨平台运…...
流水线(Pipeline)
在现代 CPU 设计中,流水线(Pipeline) 是将指令处理拆分为多个阶段以提高执行效率的关键技术。为了更精细地分析性能,流水线通常被分为 前端流水线(Frontend Pipeline) 和 后端流水线(Backend Pi…...
Symbian(塞班)操作系统
Symbian(塞班)是由多家通信巨头联合开发的专为移动设备设计的操作系统,曾是全球智能手机市场的早期主导者。以下是其核心定义与技术特点的整合分析: 一、定义与起源 系统定位 Symbian是由英国Psion公司的EPOC操作系统演变而来…...
CSS -属性值的计算过程
目录 一、抛出两个问题1.如果我们学过优先级关系,那么请思考如下样式为何会生效2.如果我们学习过继承,那么可以知道color是可以被子元素继承使用的,那么请思考下述情景为何不生效 二、属性值计算过程1.确定声明值2.层叠冲突3.使用继承4.使用默…...
施磊老师c++(七)
STL组件 文章目录 STL组件1.整体学习内容2.vector容器3.deque和listdeque--双端队列容器list--链表容器 4.vector,deque,list对比主要内容面经问题 5.详解容器适配器--stack, queue, priority_queue容器适配器stack-栈queue-队列priority_queue-优先级队列总结 6.无序关联容器关…...
Codeforces 158B. Taxi
题目 题目链接:https://codeforces.com/problemset/problem/158/B time limit per test:3 seconds;memory limit per test:256 megabytes After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to celebrate his birthda…...
hadoop伪分布式搭建--启动过程中如果发现某个datanode出现问题,如何处理?
一、问题定位: (1)检查DataNode日志: DataNode日志通常位于$HADOOP_HOME/logs/或/var/log/hadoop-hdfs/目录下,文件名为hadoop-hdfs-datanode-<hostname>.log。重点关注以下错误类型: ——Incompa…...
MySQL(事物上)
目录 示例: 一 引入事物 1. 概念 2. 事物的4大特性 3. 为什么要有事物? 二 事物操作 1. 查看存储引擎支持的事物 2. 事物的提交方式 2.1 查看事物的默认提交方式 2.2 设置事物的默认提交方式 2.3 查看事物的全局隔离级别 2.4 验证事物的回滚…...
人工智能 Day06 pandas库进阶
1.处理缺失数据 总体流程是这样的, 归根在于如何处理NAN,接下来详细赘述 1.1. 处理缺失值的相关函数 判断缺失值 pd.isnull(df):用于判断 DataFrame df 中的元素是否为缺失值(NaN ),返回一个与df 形状相同…...
C# --- LINQ
C# --- LINQ 什么是LINQFluent Syntax 和 SQL-Like QueryLINQ Operations 什么是LINQ LINQ的全称为Language Integrated Query, 为各种查询(包括对象查询,数据库查询,XML查询) 提供了统一模型.LINQ源于SQL,但比SQL更加强大,更加灵…...
C语言之 条件编译和预处理指令
条件编译 在编译⼀个程序的时候我们如果要将⼀条语句(⼀组语句)编译或者放弃是很⽅便的。因为我们有条件编译指令。 ⽐如说: 调试性的代码删除可惜,保留⼜碍事,所以我们可以选择性的编译。 #define M 1 int main() …...
JVM常用概念之锁省略
问题 synchronized(同步-重量级锁)会解除所有编译器优化吗? 基础知识 使用当前的 Java 内存模型,未观察到的锁不一定会产生任何内存效应。除其他情况外,这意味着对非共享对象进行同步是徒劳的,因此运行时不必在那里做任何事情。这给编译优…...
[网络][tcp协议]:tcp报头
tcp(传输控制协议)是一种面向字节流的传输层协议,相较于udp协议,tcp能保证传输数据的可靠性与准确性,tcp也是目前最常见的传输层协议 本文主要介绍tcp报头各个字段的含义与用途 注:保留6位和6位标记位是目前最普遍的写法,在我查资料时,发现有一些拓展情况,会在后文细说 最简单的…...
传输层自学
传输实体:完成传输层任务的硬件或软件 可能位于: 操作系统内核独立的用户进程绑定在网络应用中的链接库网络接口卡 1.功能: 网络层与传输层作用范围比较? 网络层负责把数据从源机送达到目的机 传输层负责把数据送达到具体的应…...
FFmpeg —— 各系统下ffmpeg硬件加速和API支持情况(文内表格形式详细阐述)
介绍 FFmpeg 作为一款功能强大的多媒体处理工具,支持多种硬件加速技术,能够显著提升视频编解码的效率,尤其是在处理高分辨率、高码率视频时表现尤为突出。不同操作系统下,FFmpeg 的硬件加速实现方式和支持的 API 各有特点。 在 Windows 系统上,FFmpeg 主要依赖 DirectX Vi…...
RUOYI框架在实际项目中的应用二:Ruoyi前后端分离版本
如需观看Ruoyi框架的整体介绍,请移步:RUOYI框架在实际项目中的应用一:ruoyi简介 一、Ruoyi前后端分离版本-RuoYi-Vue 1、官方资料 1:代码地址:https://gitee.com/y_project/RuoYi-Vue.git 2:文档介绍地址…...
2.12[A]distribute sys
在分布式训练中,特别是使用3D并行(数据并行、流水线并行和模型并行)时,不同阶段的GPU可能因为通信或数据依赖而出现空闲时间,这些空闲时间就是所谓的“气泡”。这些气泡会降低整体的训练效率,导致GPU资源的…...
R语言的移动应用开发
R语言的移动应用开发 在数据科学和统计分析的大潮中,R语言因其强大的数据处理和可视化能力而备受青睐。然而,R语言对移动应用开发的适用性并未得到广泛关注。本文将探讨R语言在移动应用开发中的潜力及其工具,并提供一些实践示例,…...
解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败
文章目录 解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败问题背景与成因解决方案修改内核参数 vm.overcommit_memory增加系统内存或 Swap 空间调整 Redis 配置 stop-writes-on-bgsave-error 在 Docker 环境中的注意事项总结 解决 Redis 后台持久化失败的问…...
交换机控制软件的实现步骤猜测
一、主要目的 提出对交换机软件控制逻辑的猜测。 二、交换机控制软件的组成 (一)背景 1、交换机有很多的RJ45水晶头端口。 2、每个端口支持同时发送和接收字节数据。 3、每个端口接收的数据需要查表后才能转发给目标端口。 (二)端口状态扫描线程 负责扫描每个端口的状态&#x…...
100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例 文章目录 HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例1. 跑马灯组…...
【计算机网络】2物理层
物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…...
2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)
1. 题目链接 1004. 最大连续1的个数 III - 力扣(LeetCode)https://leetcode.cn/problems/max-consecutive-ones-iii/ 2. 题目描述 给定一个二进制数组 nums 和一个整数 k,允许将最多 k 个 0 翻转为 1,求翻转后最长的连续 1 …...
怎么解决在Mac上每次打开文件夹都会弹出一个新窗口的问题
在Mac上每次打开文件夹都会弹出一个新窗口的问题,可以通过以下方法解决 调整Finder设置: 打开Finder,点击“Finder”菜单,选择“偏好设置”。在偏好设置中,选择“通用”标签。取消勾选“在标签页中打开文件夹”或…...
Python异常处理
异常处理 概述 在Python中,在处理可能会引发异常的代码块时,使用try和except语句。可以帮助我们捕获并处理异常, 而不是让程序因为一个未处理的异常而完全崩溃。 try-except try-except-finally try-finally try-except-else try-except-…...
VSTO(C#)Excel开发8:打包发布安装卸载
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
ImportError: cannot import name ‘genai‘ from ‘google‘ (unknown location) 问题如何处理
这个错误通常发生在没有正确安装Google的生成式AI库。需要安装官方的google-generativeai库: pip install google-generativeai如果代码中使用的导入方式与新版SDK不兼容,可能需要调整导入语句。根据当前代码上下文,正确的导入方式应该是&am…...
Advanced Intelligent Systems 软体机器手助力截肢者玩转鼠标
随着科技的不断进步,假肢技术在改善截肢者生活质量方面取得了显著成就。然而,截肢群体在就业方面仍面临巨大困难,适龄截肢群体的就业率仅为健全群体的一半。现有的肌电控制假肢手在与计算机交互时存在诸多挑战,特别是截肢者在使用…...
kubernetes对于一个nginx服务的增删改查
1、创建 Nginx 服务 1.1、创建 Deployment Deployment 用于管理 Pod 副本和更新策略。 方式一:命令式创建 kubectl create deployment nginx-deployment --imagenginx:latest --replicas3 --port80--replicas3:指定副本数为 3 --port80:容…...
我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成
生物生成 生物生成Alexmob介绍:**1. 核心功能与技术实现****2. 项目结构与代码质量****3. 社区协作与维护****4. 扩展性与开发挑战****5. 开发者学习价值**食蚁兽一、实体属性与行为控制(`EntityAnteater`类)二、实体注册与生成规则(`AMEntityRegistry`类)三、全局生成逻辑…...
1.5 Spring Boot项目打包和运行
本文介绍了如何使用Spring Boot进行项目打包和运行。首先,讲解了如何将Spring Boot项目打包为可执行的JAR包,并直接运行,无需部署到外部Web服务器。接着,介绍了如何将项目打包为WAR包,以便部署到Web容器中,…...
287. 寻找重复数
由于题目规定数组中的数的范围是1-n,因此可以构造出下标n和值nums[n]的映射f(n),然后构成一个链表,当有重复数字时,链表存在环,找到重复数字即找到链表环的入口,参考142. 环形链表II。 class Solution {pu…...