Google LLM prompt engineering(谷歌提示词工程指南)
文章目录
- 基本概念
- AI输出配置:调整AI的回答方式
- 输出长度
- 温度(Temperature)
- Top-K和Top-P
- 提示技术:让AI更好地理解你
- 零样本提示(Zero-shot)
- 少样本提示(Few-shot)
- 系统提示(System Prompting)
- 角色提示(Role Prompting)
- 上下文提示(Contextual Prompting)
- 后退提示(Step-back Prompting)
- 思维链提示(Chain of Thought)
- 思维树(Tree of Thoughts)
- ReAct(推理与行动)
- 代码提示(Code Prompting)
- 编写代码示例
- 解释代码示例
- 调试代码示例
- 提示工程最佳实践
- 提供示例
- 简洁设计
- 明确指定输出
- 使用指令而非约束
- 控制最大标记长度
- 在提示中使用变量
- 尝试不同的输入格式和写作风格
- 对于少样本分类任务,混合不同类别
- 适应模型更新
- 尝试不同的输出格式
- 记录提示尝试
基本概念
当你与大型语言模型(如Gemini)交流时,你输入的文字就是"提示",AI会根据这些提示生成回答。提示工程就是设计高质量提示的过程,引导AI产生准确的输出。
小贴士: 你不需要成为数据科学家或机器学习工程师 — 任何人都可以学习如何写好提示!
大型语言模型(LLM)是一个预测引擎。当你输入文字时,模型会根据它训练过的数据预测下一个词应该是什么。通过精心设计的提示,你可以引导模型生成更符合你期望的回答。
为什么提示工程很重要?
-
好的提示让AI给出准确、有用的回答
-
不好的提示可能导致模糊、不准确的回答
-
提示工程是一个反复尝试和改进的过程
提示工程的应用
-
文本摘要
-
信息提取
-
问答系统
-
文本分类
-
代码生成和翻译
-
推理任务
AI输出配置:调整AI的回答方式
除了提示本身,你还可以调整各种配置选项来控制AI的输出。这些设置会影响AI生成回答的方式。
输出长度
控制AI生成的文字数量。生成更多文字需要更多计算资源,可能导致响应时间变慢和成本增加。
注意: 仅设置输出长度限制不会让AI的回答变得更简洁,它只会在达到限制时停止生成。
温度(Temperature)
控制AI回答的随机性程度:
-
低温度(接近0):回答更确定、更可预测
-
高温度(接近1):回答更随机、更有创意
温度为0时,AI总是选择概率最高的词。
Top-K和Top-P
这些设置控制AI在选择下一个词时考虑的可能性范围:
-
Top-K:只考虑最可能的K个选项
-
Top-P(核采样):只考虑累积概率达到P的选项
👍推荐设置: 一般情况下,温度0.2、Top-P 0.95和Top-K 30会给你提供相对连贯但又不失创意的结果。如果需要更有创意的回答,可以尝试温度0.9、Top-P 0.99和Top-K 40。
‼️警告: 如果你看到AI回答的末尾出现大量重复文字,这可能是"重复循环错误"。这是由于温度和采样设置不当导致的。调整这些参数可以解决问题。
提示技术:让AI更好地理解你
以下是一些强大的提示技术,可以帮助你获得更好的AI回答:
零样本提示(Zero-shot)
最简单的提示方式,直接告诉AI你想要什么,不提供任何示例。
例子:电影评论分类
将电影评论分类为正面、中性或负面。
评论:"Her"是一项令人不安的研究,揭示了如果允许人工智能继续无限制地发展,人类将走向何方。我希望有更多像这样的杰作。
情感:
正面
少样本提示(Few-shot)
通过给AI提供一些例子,帮助它更好地理解你的需求。这种方法向模型展示了它需要遵循的模式。
例子:披萨订单解析
将客户的披萨订单解析为JSON:
示例:
我想要一个小号披萨,配奶酪、番茄酱和意大利辣香肠。
JSON响应:
{
“size”: “small”,
“type”: “normal”,
“ingredients”: [[“cheese”, “tomato sauce”, “pepperoni”]]
}
现在,我想要一个大号披萨,前半部分配奶酪和马苏里拉,另一半配番茄酱、火腿和菠萝。
JSON响应:
{
"size": "large",
"type": "half-half",
"ingredients": [["cheese", "mozzarella"], ["tomato sauce", "ham", "pineapple"]]
}
💡小贴士: 一般来说,少样本提示应该使用3-5个例子。例子应该多样化、高质量且书写良好。
系统提示(System Prompting)
为语言模型设置整体上下文和目的,定义模型应该做什么的"大局"。
例子:电影评论分类(JSON格式)
将电影评论分类为正面、中性或负面。返回有效JSON:
评论:"Her"是一项令人不安的研究,揭示了如果允许人工智能继续无限制地发展,人类将走向何方。它太令人不安了,我无法观看。
模式:
电影:
{
"sentiment": String "POSITIVE" | "NEGATIVE" | "NEUTRAL",
"name": String
}
电影评论:
{
"movie_reviews": [电影]
}
JSON响应:
```
{
"movie_reviews": [
{
"sentiment": "NEGATIVE",
"name": "Her"
}
]
}
```
角色提示(Role Prompting)
为AI模型分配特定角色或身份,帮助模型生成与指定角色一致的回答。
例子:旅游指南
我希望你扮演旅游指南。我会写给你我的位置,你将以幽默的风格建议我附近3个可以参观的地方。
我的位置:“我在曼哈顿。”
旅游建议:
仰望帝国心境:攀登帝国大厦的令人头晕的高度,沐浴在曼哈顿天际线的辉煌中。准备感受像金刚在大苹果上,除了没有巨大猿猴大小的香蕉。
在MoMA变得艺术范儿:在现代艺术博物馆释放你内心的艺术鉴赏家。凝视那些会让你的思维困惑,并让你质疑自己的棍子人画作是否有任何艺术价值的杰作。
在第五大道购物直到倒下:准备好在这些设计师精品店购物时遭受价格冲击。但嘿,你在曼哈顿,所以你不妨拥抱这华丽!
上下文提示(Contextual Prompting)
提供与当前对话或任务相关的特定细节或背景信息,帮助模型理解所问内容的细微差别。
例子:博客文章建议
上下文:你正在为一个关于80年代复古街机电子游戏的博客写作。
建议3个可以写文章的主题,并附上几行关于这篇文章应该包含什么的描述。
街机柜设计的演变:本文将探索街机柜设计的演变,从20世纪70年代早期的木材和金属柜到20世纪80年代及以后的时髦、霓虹灯照明设计。
回顾过去:80年代标志性街机游戏:本文将展示一些20世纪80年代最具标志性和影响力的街机游戏的历史、影响和遗产,突出它们的创新、流行机制和持久魅力。
像素艺术的兴起和复古复兴:本文将深入探讨像素艺术作为早期街机游戏的标志性视觉风格的演变,追溯其根源,探索其技术,并讨论像素艺术在现代游戏和数字艺术中的复兴。
后退提示(Step-back Prompting)
先要求AI考虑与特定任务相关的一般问题,然后将该问题的答案用于解决具体问题。这种"后退"允许AI在尝试解决特定问题前激活相关的背景知识。
例子:游戏关卡故事情节
基于流行的第一人称射击动作游戏,有哪5个虚构的关键设置可以为第一人称射击游戏中的挑战性和引人入胜的级别故事情节做出贡献?
废弃军事基地:一个广阔的、后世界末日的军事综合体,爬满了变异士兵和叛逃机器人,适合挑战性的火器战斗。
赛博朋克城市:一个霓虹灯照明的未来城市环境,有高耸的摩天大楼和密集的小巷,有增强型的敌人和黑客机制。
外星飞船:一艘滞留在地球上的巨大外星飞船,有诡异的走廊、零重力区域和外星生物。
僵尸感染的城镇:一个被侵略性僵尸群占领的荒凉城镇,有激烈的近战战斗和寻找安全通道的解谜元素。
水下研究设施:一个被水淹没的深海实验室,充满了变异的水生生物,需要潜行和水下探索技能才能生存。
然后,你可以将这些主题用作上下文,创建更具体的故事情节:
上下文:[上面的5个主题]
选择其中一个主题,为第一人称射击游戏的新级别写一段既具挑战性又有吸引力的故事情节。
在幽暗深渊的中心,矗立着一座破败的水下研究设施,作为人类野心及其灾难性后果的见证。笼罩在黑暗中,伴随着故障机械的嗡嗡声,以及被淹没灵魂的回声,这座设施如今成为了深海噩梦的温床。玩家,一名配备先进潜水装备和实验性武器的精英海军陆战队员,被派遣深入这个水生恐怖领域。肩负着韧性和智慧的使命,他们必须穿越危险的走廊,解决神秘的谜题,与在深处潜伏的可怕海怪对抗。从抵抗海水压力到智胜狡猾的水生掠食者,在这个未知的水下世界中,每一刻都考验着人类的耐力和勇气极限。
思维链提示(Chain of Thought)
通过生成中间推理步骤来提高AI的推理能力,特别适合解决需要逐步思考的复杂问题。
例子:数学问题
当我3岁的时候,我的伴侣是我年龄的3倍。现在,我20岁了。我的伴侣多大?让我们一步一步思考。
当我3岁时,我的伴侣是3 * 3 = 9岁。
这是6岁的年龄差,我的伴侣比较大。
现在我20岁了,所以我的伴侣是20 + 6 = 26岁。
答案是26岁。
小贴士: 使用思维链提示时,最好将温度设置为0,因为通常只有一个正确答案。
思维树(Tree of Thoughts)
允许AI同时探索多个不同的推理路径,而不是仅仅遵循单一的线性思维链。特别适合需要探索的复杂任务。
思维树通过维护一个思维树,每个思维代表一个连贯的语言序列,作为解决问题的中间步骤。模型可以通过从树的不同节点分支出来探索不同的推理路径。
ReAct(推理与行动)
结合自然语言推理和外部工具(如搜索、代码解释器等),使AI能够执行某些操作,如与外部API交互以检索信息。
ReAct通过将推理和行动结合到一个思考-行动循环中工作。AI首先推理问题并生成行动计划,然后执行计划中的行动并观察结果,最后使用观察结果更新推理并生成新的行动计划。
> 输入新的AgentExecutor链...
Metallica有4个成员。
行动: 搜索
行动输入: James Hetfield有多少个孩子?
观察: 三个孩子
思考: 1/4 Metallica乐队成员有3个孩子
行动: 搜索
行动输入: Lars Ulrich有多少个孩子?
观察: 3
思考: 2/4 Metallica乐队成员有6个孩子
行动: 搜索
行动输入: Kirk Hammett有多少个孩子?
观察: Hammett自1998年以来与他的第二任妻子Lani结婚。他们有两个儿子,Angel(2006年9月29日出生)和Vincenzo(2008年6月28日出生)。
思考: 3/4 Metallica乐队成员有8个孩子
行动: 搜索
行动输入: Robert Trujillo有多少个孩子?
观察: 2
思考: 4/4 Metallica乐队成员有10个孩子
最终答案: 10
代码提示(Code Prompting)
使用特定技巧让AI帮助你编写、解释或调试代码。
编写代码示例
例子:批量重命名文件
写一个Bash代码片段,询问文件夹名称。然后获取文件夹内容并通过在文件名前添加"draft"来重命名所有文件。
#!/bin/bash
# 询问文件夹名称
echo "输入文件夹名称: "
read folder_name
# 检查文件夹是否存在
if [ ! -d "$folder_name" ]; then
echo "文件夹不存在。"
exit 1
fi
# 获取文件夹中的文件列表
files=( "$folder_name"/* )
# 通过在文件名前添加"draft"来重命名每个文件
for file in "${files[@]}"; do
new_file_name="draft_$(basename "$file")"
mv "$file" "$folder_name/$new_file_name"
done
echo "文件重命名成功。"
解释代码示例
例子:解释Bash代码
解释以下Bash代码:
#!/bin/bash
echo "输入文件夹名称: "
read folder_name
if [ ! -d "$folder_name" ]; then
echo "文件夹不存在。"
exit 1
fi
files=( "$folder_name"/* )
for file in "${files[@]}"; do
new_file_name="draft_$(basename "$file")"
mv "$file" "$new_file_name"
done
echo "文件重命名成功。"
这个Bash脚本执行以下任务:
1. 用户输入:
- 使用`echo`和`read`命令提示用户输入文件夹名称。输入的文件夹名称存储在`folder_name`变量中。2. 文件夹存在检查:
- 使用`[ ! -d "$folder_name" ]`条件检查指定名称的文件夹是否存在。如果文件夹不存在,显示错误信息("文件夹不存在。")并以退出代码1退出脚本。3. 文件列表:
- 使用`files=( "$folder_name"/* )`命令列出指定文件夹内的所有文件。这创建了一个名为`files`的数组,包含文件夹中所有文件的路径。4. 文件重命名:
- 使用`for`循环遍历`files`数组中的每个文件。
- 对于每个文件,使用`new_file_name="draft_$(basename "$file")"`命令生成新文件名。这个新文件名是通过在原始文件名前加上"draft_"字符串创建的。
- 然后使用`mv "$file" "$new_file_name"`命令重命名文件,将文件移动到新文件名。5. 成功消息:
- 重命名所有文件后,显示成功消息("文件重命名成功。")表示重命名操作成功。
调试代码示例
例子:调试Python代码
以下Python代码出现错误:
Traceback (most recent call last):
File “/Users/leeboonstra/Documents/test_folder/rename_files.py”, line 7, in <module>
text = toUpperCase(prefix)
NameError: name ‘toUpperCase’ is not defined
调试错误并解释如何改进代码。
import os
import shutil
# 从用户获取文件夹名称
folder_name = input("输入文件夹名称: ")
prefix = input("输入要添加到文件名前的字符串: ")
text = toUpperCase(prefix)
# 检查文件夹是否存在
if not os.path.isdir(folder_name):
print("文件夹不存在。")
exit(1)
# 获取文件夹中的所有文件列表
files = os.listdir(folder_name)
# 遍历文件
for file in files:
# 创建带有前缀的新文件名
new_filename = f"{text}_{file}"
# 移动文件到新名称
shutil.move(os.path.join(folder_name, file),
os.path.join(folder_name, new_file_name))
# 打印成功消息
print("文件重命名成功。")
代码调用了toUpperCase
函数将prefix
转换为大写,但该函数未定义。要修复这个问题,你可以使用字符串类的upper()
方法,它可以将给定字符串转换为大写。修改后的代码如下:
import os
import shutil
# 从用户获取文件夹名称
folder_name = input("输入文件夹名称: ")
prefix = input("输入要添加到文件名前的字符串: ")
text = prefix.upper()
# 检查文件夹是否存在
if not os.path.isdir(folder_name):
print("文件夹不存在。")
exit(1)
# 获取文件夹中的所有文件列表
files = os.listdir(folder_name)
# 遍历文件
for file in files:
# 创建带有前缀的新文件名
new_filename = f"{text}_{file}"
# 移动文件到新名称
shutil.move(os.path.join(folder_name, file),
os.path.join(folder_name, new_filename))
# 打印成功消息
print("文件重命名成功。")
此外,代码还有几处其他问题:
-
变量名不一致:代码中使用了
new_filename
和new_file_name
两个变量名 -
没有处理可能在重命名过程中发生的错误
-
没有保留原始文件的扩展名
改进后的代码应该包含错误处理和更好的文件名处理。
提示工程最佳实践
以下是一些提示工程的最佳实践,帮助你获得更好的AI回答:
提供示例
在提示中提供示例是最有效的方法之一。示例可以帮助AI理解你期望的输出格式和风格。
简洁设计
提示应该简洁、清晰、易于理解。如果提示对你来说已经很混乱,那么对AI来说也可能很混乱。尽量不要使用复杂的语言,不要提供不必要的信息。
改进前后对比
-
改进前:
我现在正在纽约旅游,我想了解更多关于好地方的信息。我带着两个3岁的孩子。我们假期应该去哪里? -
改进后:
扮演旅游指南。描述纽约曼哈顿适合带3岁孩子参观的好地方。
明确指定输出
明确说明你期望的输出。简洁的指令可能不足以引导AI,或者太过笼统。在提示中提供具体细节可以帮助模型关注相关内容,提高整体准确性。
- 好的做法
生成一篇关于前5大视频游戏主机的3段博客文章。博客文章应该信息丰富且吸引人,并且应该以对话风格编写。
- 不好的做法
生成一篇关于视频游戏主机的博客文章。
使用指令而非约束
研究表明,在提示中专注于积极指令比严重依赖约束更有效。这与人类更喜欢积极指令而不是"不要做什么"的列表的方式一致。
- 好的做法
生成一段关于前5大视频游戏主机的博客文章。只讨论主机、制造公司、发布年份和总销量。
- 不好的做法
生成一段关于前5大视频游戏主机的博客文章。不要列出视频游戏名称。
控制最大标记长度
要控制AI回答的长度,你可以在配置中设置最大标记限制,或者在提示中明确要求特定长度。例如:“用推特长度的消息解释量子物理学。”
在提示中使用变量
使用变量可以让你的提示更加动态,避免重复。例如,不要在提示中硬编码城市名称,而是使用变量。
使用变量的提示
变量:
{city} = "阿姆斯特丹"
提示:
你是一名旅游指南。告诉我关于这个城市的一个事实:{city}
阿姆斯特丹是一个美丽的城市,到处都是运河、桥梁和狭窄的街道。它是一个很好的地方,可以参观其丰富的历史、文化和夜生活。
尝试不同的输入格式和写作风格
不同的模型、模型配置、提示格式、词汇选择和提交方式可能产生不同的结果。因此,尝试不同的提示属性很重要。
不同的提问方式
-
问题形式: 什么是世嘉梦幻游戏机,为什么它是如此革命性的游戏机?
-
陈述形式: 世嘉梦幻游戏机是世嘉于1999年发布的第六代视频游戏机。它…
-
指令形式: 写一段描述世嘉梦幻游戏机并解释为什么它如此革命性的段落。
对于少样本分类任务,混合不同类别
在进行分类任务时,确保在少样本示例中混合可能的响应类别。这可以确保模型学习识别每个类别的关键特征,而不是简单地记住示例的顺序。
适应模型更新
了解模型架构变化、添加的数据和功能很重要。尝试新的模型版本,并调整你的提示以更好地利用新的模型功能。
尝试不同的输出格式
除了提示输入格式外,考虑尝试不同的输出格式。对于非创意任务,如提取、选择、解析、排序或分类数据,尝试让输出以JSON或XML等结构化格式返回。
使用JSON输出的好处:
-
始终以相同的风格返回
-
专注于你想要接收的数据
-
减少幻觉的可能性
-
使其关系感知
-
获得数据类型
-
可以排序
记录提示尝试
详细记录你的提示尝试,这样你可以随着时间的推移了解哪些方法有效,哪些无效。
提示工程是一个迭代过程: 制作和测试不同的提示,分析并记录结果。根据模型的表现改进你的提示。继续实验,直到达到期望的输出。当你更改模型或模型配置时,回去继续尝试之前使用的提示。
相关文章:
Google LLM prompt engineering(谷歌提示词工程指南)
文章目录 基本概念AI输出配置:调整AI的回答方式输出长度温度(Temperature)Top-K和Top-P 提示技术:让AI更好地理解你零样本提示(Zero-shot)少样本提示(Few-shot)系统提示(…...
前端npm包发布流程:从准备到上线的完整指南
无论是使用第三方库还是创建和分享自己的工具,npm都为我们提供了一个强大而便捷的平台,然而很多开发者在将自己的代码发布到npm上时往往面临各种困惑和挑战,本篇文章将从准备工作到发布上线,探讨如何让npm包更易发布及避免常见的坑…...
【MySQL】表空间结构 - 从何为表空间到段页详解
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
OB Cloud 云数据库V4.3:SQL +AI全新体验
OB Cloud 云数据库V4.3:SQL AI全新体验 简介 OB Cloud云数据库全新升级至V4.3版本,为用户带来了SQLAI的最新技术体验,强化数据库的传统功能,深度融合了人工智能技术,引入先进的向量检索功能和优化的SQL引擎,…...
【Linux系统】第四节—详解yum+vim
hello 我是云边有个稻草人 Linux—本节课所属专栏—欢迎订阅—持续更新中~ 目录 画板—本节课知识点详解 一、软件包管理器 1.1 什么是软件包 1.2 Linux软件⽣态 1.3 yum具体操作 【查看软件包】 【安装软件】 【卸载软件】 【注意事项】 1.4 安装源 二、vim 2.1 …...
Git的核心作用详解
一、版本控制与历史追溯 Git作为分布式版本控制系统,其核心作用是记录代码的每一次修改,形成完整的历史记录。通过快照机制,Git会保存每次提交时所有文件的完整状态(而非仅记录差异),确保开发者可以随时回…...
Three.js + React 实战系列 - 职业经历区实现解析 Experience 组件✨(互动动作 + 3D 角色 + 点击切换动画)
对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦!!谢谢大家!!! 在这篇博客中,我们将分析一个极其有趣和互动性的组件 - Experience.jsx,该组件用于在主页中呈现个人的工作经历。 这个组件…...
3D虚拟工厂vue3+three.js
1、在线体验 3D虚拟工厂在线体验 2、功能介绍 1. 全屏显示功能2. 镜头重置功能3. 企业概况信息模块4. 标签隐藏/显示功能5. 模型自动旋转功能6. 办公楼分层分解展示7. 白天/夜晚 切换8. 场景资源预加载功能9. 晴天/雨天/雾天10. 无人机视角模式11. 行人漫游视角模式12. 键盘…...
[Java实战]Spring Boot 解决跨域问题(十四)
[Java实战]Spring Boot 解决跨域问题(十四) 一、CORS 问题背景 什么是跨域问题? 当浏览器通过 JavaScript 发起跨域请求(不同协议、域名、端口)时,会触发同源策略限制,导致请求被拦截。 示例场…...
嵌入式硬件篇---CAN
文章目录 前言1. CAN协议基础1.1 物理层特性差分信号线终端电阻通信速率总线拓扑 1.2 帧类型1.3 数据帧格式 2. STM32F103RCT6的CAN硬件配置2.1 硬件连接2.2 CubeMX配置启用CAN1模式波特率引脚分配过滤器配置(可选) 3. HAL库代码实现3.1 CAN初始化3.2 发…...
(2025)图文解锁RAG从原理到代码实操,代码保证可运行
什么是RAG RAG(检索增强生成)是一种将语言模型与可搜索知识库结合的方法,主要包含以下关键步骤: 数据预处理 加载:从不同格式(PDF、Markdown等)中提取文本分块:将长文本分割成短序列(通常100-500个标记),作为检索单元…...
TWAS、GWAS、FUSION
全基因组关联研究(GWAS,Genome-Wide Association Study)是一种统计学方法,用于在全基因组水平上识别与特定性状或疾病相关的遗传变异。虽然GWAS可以识别与性状相关的遗传信号,但它并不直接揭示这些遗传变异如何影响生物…...
大模型微调终极方案:LoRA、QLoRA原理详解与LLaMA-Factory、Xtuner实战对比
文章目录 一、微调概述1.1 微调步骤1.2 微调场景 二、微调方法2.1 三种方法2.2 方法对比2.3 关键结论 三、微调技术3.1 微调依据3.2 LoRA3.2.1 原理3.2.2 示例 3.3 QLoRA3.4 适用场景 四、微调框架4.1 LLaMA-Factory4.2 Xtuner4.3 对比 一、微调概述 微调(Fine-tun…...
FHE 之 面向小白的引导(Bootstrapping)
1. 引言 FHE初学者和工程师常会讨论的一个问题是; “什么是引导(bootstrapping)?” 从理论角度看,这个问题的答案很简单: 引导就是套用 Gentry 提出的思想——在加密状态下同态地执行解密操作ÿ…...
安装:Kali2025+Docker
安装:Kali2025Docker Kali2025安装 直接官网下载WMware版本 https://www.kali.org/get-kali/#kali-virtual-machines 直接打开运行 初始用户密码 kali/kali sudo -i 命令切换到root 更换镜像 切换到其他可用的 Kali Linux 镜像源可能会解决问题,可以使用国内的镜像源&…...
什么是深拷贝什么是浅拷贝,两者区别
什么是深拷贝什么是浅拷贝,两者区别 1.深拷贝 递归复制对象的所有层级,嵌套的引用类型属性,最后生成一个完全独立的新对象,与原对象无任何引用关联。 特点: 新对象和原对象的所有层级属性是独立的(修改…...
A2A大模型协议及Java示例
A2A大模型协议概述 1. 协议作用 A2A协议旨在解决以下问题: 数据交换:不同应用程序之间的数据格式可能不一致,A2A协议通过定义统一的接口和数据格式解决这一问题。模型调用:提供标准化的接口,使得外部应用可以轻松调…...
第七章 数据库编程
1 数据库编程基础 1.1 数据库系统概述 数据库系统是由数据库、数据库管理系统(DBMS)和应用程序组成的完整系统。其主要目的是高效地存储、管理和检索数据。现代数据库系统通常分为以下几类: 关系型数据库(RDBMS):如MySQL、PostgreSQL、Oracle等&#x…...
电影感户外哑光人像自拍摄影Lr调色预设,手机滤镜PS+Lightroom预设下载!
调色详情 电影感户外哑光人像自拍摄影 Lr 调色,是借助 Lightroom 软件,针对户外环境下拍摄的人像自拍进行后期处理。旨在模拟电影画面的氛围与质感,通过调色赋予照片独特的艺术气息。强调打造哑光效果,使画面色彩不过于浓烈刺眼&a…...
C++--类的构造函数与初始化列表差异
一,引言 在类中成员函数的构造函数担任其将对象初始化的作用,而初始化列表也有着相似的作用。大部分人建议都是初始化列表进行初始化,本文主要进行讲解二者的区别。 首先看一下构造函数的初始化方式: #define _CRT_SECURE_NO…...
深入浅出之STL源码分析4_类模版
1.引言 我在上面的文章中讲解了vector的基本操作,然后提出了几个问题。 STL之vector基本操作-CSDN博客 1.刚才我提到了我的编译器版本是g 11.4.0,而我们要讲解的是STL(标准模板库),那么二者之间的关系是什么&#x…...
Lambda表达式解读
本文通过具体案例演示函数式接口Function<T,R>的三种实现方式演变过程。 一、传统匿名内部类实现 Integer resInt1 t1(new Function<String, Integer>() {Overridepublic Integer apply(String s) {int i Integer.parseInt(s);return i;} });实现特点࿱…...
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMarginsF)
文章目录 类简介方法总览关键说明示例代码 类简介 QMarginsF 用于定义四个浮点型边距(左、上、右、下),描述围绕矩形的边框尺寸。所有边距接近零时 isNull() 返回 True,支持运算符重载和数学运算。 方法总览 方法名/运算符参数返…...
Android方法耗时监控插件开发
需求:自定义一个Gradle插件,这个Gradle插件可以统计方法的耗时,并当方法耗时超过阈值时,可以通过打印Log日志在控制台,然后可以通过Log定位到耗时方法的位置,帮助我们找出耗时方法和当前线程名,…...
TWAS / FUSION
FUSION 是一套用于执行转录组范围和调控组范围关联研究(TWAS 和 RWAS)的工具。它通过构建功能/分子表型的遗传成分的预测模型,并使用 GWAS 汇总统计数据预测和测试该成分与疾病的关联,目标是识别 GWAS 表型与仅在参考数据中测量的…...
C++中的static_cast:类型转换的安全卫士
C中的static_cast:类型转换的安全卫士 在C编程中,类型转换是不可避免的操作,而static_cast作为C四大强制类型转换运算符之一,是最常用且相对安全的一种转换方式。今天我们就来深入探讨一下这个重要的类型转换工具。 一、static_…...
uniapp-商城-51-后台 商家信息(logo处理)
前面对页面基本进行了梳理和说明,特别是对验证规则进行了阐述,并对自定义规则的兼容性进行了特别补充,应该说是干货满满。不知道有没有小伙伴已经消化了。 下面我们继续前进,说说页面上的logo上传组件,主要就是uni-fil…...
04 mysql 修改端口和重置root密码
当我们过了一段时间,忘了自己当初创建的数据库密码和端口,或者端口被占用了,要怎么处理呢 首先,我们先停止mysql。 一、修改端口 打开my.ini文件,搜索port,默认是3306,根据你的需要修改为其他…...
多线程 2 - 死锁问题
死锁 死锁,是多线程代码中的一类经典问题。加锁能够解决线程安全问题,但如果加锁方式不当,就很可能产生死锁。 出现死锁的三种场景 1、一个线程一把锁 就像上篇文章讲过的,如果对同一个线程上了两把锁,而且上的锁是…...
网络原理(Java)
注:此博文为本人学习过程中的笔记 在网络初始中谈到TCP/IP五层模型,接下来我们将介绍这里面涉及到的网络协议。 应用层是程序员接触最多的层次,程序员写的代码只要涉及到网络通信都可以视为是应用层的一部分。应用层里的东西和程序员直接相…...
HDFS 常用基础命令详解——快速上手分布式文件系统
简介: 本文面向刚接触 Hadoop HDFS(Hadoop 分布式文件系统)的读者,结合 CSDN 博客风格,系统梳理最常用的 HDFS 客户端命令,并配以示例和注意事项,帮助你在开发和运维中快速掌握 HDFS 的文件管理…...
Unity Shaders and Effets Cookbook
目录 作者简介 审稿人简介 前言 我是偏偏 Unity Shaders and Effets Cookbook 第一章:Diffuse Shading - 漫反射着色器 第二章:Using Textures for Effects - 着色器纹理特效的应用 第三章:Making Your Game Shine with Specular - 镜…...
Markdown—LaTeX 数学公式
目录 一、字母1. 希腊大写字母2. 希腊小写字母3. 花体字母 二、上标和下标1. 上标2. 下标3. 其他 三、括号四、数学符号1. 基本数学符号1)运算符2)常见函数3)分式、根号、累加/乘4)极限5)积分 2. 三角函数与几何符号1&…...
AI 驱动的开发工具
🔧 主流 AI 前端开发工具 1. GitHub Copilot 由 GitHub 与 OpenAI 联合开发,集成在 Visual Studio Code、JetBrains 等主流 IDE 中,提供智能代码补全、函数生成等功能,极大地提高了开发效率。 (CSDN博客) 2. Cursor 一款 AI 驱…...
【入门】数字走向I
描述 输入整数N,输出相应方阵。 输入描述 一个整数N。( 0 < n < 10 ) 输出描述 一个方阵,每个数字的场宽为3。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int i1;i<n*n;i){cout…...
Kubernetes生产实战(十三):灰度发布与蓝绿发布实战指南
在微服务架构中,如何安全高效地发布新版本是每个团队必须掌握的技能。本文将深入讲解Kubernetes中两种主流发布策略的落地实践,附带生产环境真实案例。 一、金丝雀发布(灰度发布):渐进式验证新版本 核心思想…...
数孪实战笔记(1)数字孪生的含义、应用及技术体系
一、含义 数字孪生(Digital Twin)是一种通过数字化模型在虚拟世界中实时映射和模拟物理实体、系统或过程的技术。它的核心目的是通过对现实对象的建模、感知、分析和预测,实现对物理世界的全面感知、智能控制和优化决策。数字孪生 实体对象 …...
深入浅出之STL源码分析5_类模版实例化与特化
在 C 中,类模板的实例化(Instantiation)和特化(Specialization) 是模板编程的核心概念,而 显式实例化(Explicit Instantiation)和隐式实例化(Implicit Insta…...
JDBC演进之路:从基础操作到高效连接池
文章目录 一、JDBC 1.0:手动管理的起点1.1 核心特点1.2 代码示例:1.3 痛点分析 二、JDBC 2.0:配置化的升级2.1 核心改进2.2 代码示例2.3 优势与不足 三、JDBC 3.0:连接池的革命3.1 核心改进3.2 代码示例3.3 核心优势 四、版本对比…...
远程调试---在电脑上devtools调试运行在手机上的应用
1、启动项目–以vite项目为例:先ipconfig查看ip地址 ,然后在vite中配置host为ip地址 2、手机上查看项目:保证手机和电脑在同一局域网, 在手机浏览器打开我们vite启动的项目地址, 3、使用chii进行远程调试 (1) 安装 npm install chii -g (2)启动 chii start -p 8080 (3)在…...
街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)27
目录 0、Emeditor软件1、Place Pluse 2.0数据集2、街景主观感知大框架2.1 街景主观感知:自建数据集2.2 街景主观感知:两两对比程序2.3 街景主观感知:Trueskill评分2.4 街景主观感知:训练模型,Resnet或EfficientNet或V…...
进阶二:基于HC-SR04和LCD1602的超声波测距
一、实验目的 掌握HC-SR04超声波测距模块的工作原理和使用方法。学会使用LCD1602液晶显示屏显示测量数据。熟悉89C51单片机与外设的接口电路设计和编程方法。二、实验原理 1. HC-SR04超声波测距模块原理 HC-SR04超声波测距模块可提供2cm - 400cm的非接触式距离感测功能,测距精…...
单因子实验 方差分析
本文是实验设计与分析(第6版,Montgomery著傅珏生译)第3章单因子实验 方差分析python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您可以从 下载实验设计与分析(第6版&a…...
《Python星球日记》 第53天:卷积神经网络(CNN)入门
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、图像表示与通道概念1. 数字图像的本质2. RGB颜色模型3. 图像预处理 二、卷积…...
基于人工智能的个性化 MySQL 学习路径推荐研究
基于人工智能的个性化 MySQL 学习路径推荐研究 摘要: 随着信息技术的飞速发展,数据库在各行业应用广泛,MySQL 作为主流数据库之一,学习需求庞大。然而,不同学习者在知识水平、学习进度和目标上存在差异,传统统一的学习路径难以满足个性化需求。本研究通过运用人工智能技…...
阿里云OSS-服务端加签直传说明/示例(SpringBoot)
目录 概述 OSS文件上传方式 1. OSS控制台上传 2. 客户端直传 3. 后端上传 4. 加签直传 服务端加签方式 1. 服务端生成PostObject所需的签名和Post Policy 2.服务端生成STS临时访问凭证 3. 服务端生成PutObject所需的签名URL 实现1:生成PostObject所需的签…...
《向上生长》读书笔记day5
哎,好像有点坚持不下去了,有点松懈了 不咋想继续写读书笔记😂,不过我不可能这么轻易放弃的,起码要做完这一本书,话不多说,开始进入的读书📒笔记 今天读了两个章节,穷人翻…...
优选算法——队列+BFS
目录 1. N叉树的层序遍历 2. 二叉树的锯齿层序遍历 3. 二叉树最大宽度 4. 在每个树行中找最大值 1. N叉树的层序遍历 题目链接:429. N 叉树的层序遍历 - 力扣(LeetCode) 题目展示: 题目分析: 层序遍历即可~仅…...
Java MCP 实战 --> AI玩转贪吃蛇
MCP 实战 --> AI玩转贪吃蛇 MCP 更加便捷的扩展了 LLM 的能力,使得 AI 发展更加迅猛。本篇主要为了学习MCP的应用,实现了让AI去玩贪吃蛇,使用 Java 实现了 MCP Server 和 MCP Client 的编码。其他文章如下: thinking 基础版…...
Day20打卡-奇异值SVD分解
今天学习非特征筛选的方法: 知识点回顾: 线性代数概念回顾(可不掌握)奇异值推导(可不掌握)奇异值的应用 特征降维:对高维数据减小计算量、可视化数据重构:比如重构信号、重构图像&am…...