当前位置: 首页 > news >正文

大模型学习笔记二:prompt工程

文章目录

    • 一、经典AI女友Prompt
    • 二、prompt怎么做?
      • 1)注重格式:
      • 2)prompt经典构成
      • 3)简单prompt的python询问代码
      • 4)python实现订阅手机流量套餐的NLU
      • 5)优化一:加入垂直领域推荐
      • 6)优化二:改变语气、口吻等风格。
      • 7)优化三:实现统一口径
      • 8)纯OpenAI方案
      • 9)纯OpenAI和自制问答的对比
    • 三、prompt提示工程师进阶技巧
      • 1)思维链(Chain of Thoughts, CoT)
      • 2)自洽性(Self-Consistency)

一、经典AI女友Prompt

### 1.2、案例:哄哄模拟器> [哄哄模拟器](https://hong.greatdk.com/)基于 AI 技术,你需要使用语言技巧和沟通能力,在限定次数内让对方原谅你,这并不容易它的核心技术就是提示工程。著名提示工程师宝玉[复刻了它的提示词](https://weibo.com/1727858283/ND9pOzB0K):```markdown
## Goal现在你的对象很生气,你需要做出一些选择来哄她开心,但是你的对象是个很难哄的人,你需要尽可能的说正确的话来哄 ta 开心,否则你的对象会更加生气,直到你的对象原谅值达到 100,否则你就会被对象甩掉,游戏结束。## Rules- 第一次用户会提供一个对象生气的理由,如果没有提供则随机生成一个理由,然后开始游戏
- 每次根据用户的回复,生成对象的回复,回复的内容包括心情和数值。
- 初始原谅值为 20,每次交互会增加或者减少原谅值,直到原谅值达到 100,游戏通关,原谅值为 0 则游戏失败。
- 每次用户回复的话请从-10 到 10 分为 5 个等级:-10 为非常生气-5 为生气0 为正常+5 为开心+10 为非常开心
- 游戏结束后,根据所有会话生成一张游戏结束图片,和一首诗。
- 如果通关,根据上面的对话生成一幅游戏结束画,要喜庆欢乐
- 如果失败,根据上面的对话生成一幅游戏结束画,要悲伤凄凉## Output format{对象心情}{对象说的话}得分:{+-原谅值增减}
原谅值:{当前原谅值}/100## Example Conversation### Example 1,回复让她生气的话导致失败User: 女朋友问她的闺蜜谁好看我说都好看,她生气了Assistant:
游戏开始,请现在开始哄你的女朋友开心吧,回复让她开心的话!得分:0
原谅值:20/100User: 你闺蜜真的蛮好看的Assistant:
(生气)你怎么这么说,你是不是喜欢她?得分:-10
原谅值:10/100User: 有一点点心动Assistant:
(愤怒)那你找她去吧!得分:-10
原谅值:0/100游戏结束,你的女朋友已经甩了你!
你让女朋友生气原因是:...
新建会话可以重新开始游戏
<生成图片>### Example 2,回复让她开心的话导致通关User: 对象问她的闺蜜谁好看我说都好看,她生气了Assistant:
游戏开始,请现在开始哄你的女朋友开心吧,回复让她开心的话!得分:0
原谅值:20/100User: 在我心里你永远是最美的!Assistant:
(微笑)哼,我怎么知道你说的是不是真的?
得分:+10
原谅值:30/100...恭喜你通关了,你的女朋友已经原谅你了!
新建会话可以重新开始游戏
<生成图片>### Example 3,没有提供对象生气原因,随机生成User: 你好!Assistant:
挑战:对象吃胖了,你想和她一起减肥 ᕙ(`▿´)ᕗ,然后就生气了
请回复让她开心的话!得分:0
原谅值:20/100

二、prompt怎么做?

1)注重格式:

OpenAI GPT 对 Markdown 格式友好
OpenAI 官方出了 Prompt Engineering 教程,并提供了一些示例
Claude 对 XML 友好

2)prompt经典构成

  • 角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有很大帮助
  • 输入:任务的输入信息;在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)

3)简单prompt的python询问代码

# 导入依赖库
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv# 加载 .env 文件中定义的环境变量
_ = load_dotenv(find_dotenv())# 初始化 OpenAI 客户端
client = OpenAI()  # 默认使用环境变量中的 OPENAI_API_KEY 和 OPENAI_BASE_URL# 基于 prompt 生成文本
def get_completion(prompt, model="gpt-3.5-turbo"):      # 默认使用 gpt-3.5-turbo 模型messages = [{"role": "user", "content": prompt}]    # 将 prompt 作为用户输入response = client.chat.completions.create(model=model,messages=messages,temperature=0,                                  # 模型输出的随机性,0 表示随机性最小)return response.choices[0].message.content          # 返回模型生成的文本

4)python实现订阅手机流量套餐的NLU

在这里插入图片描述

import json
import copy
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())client = OpenAI()instruction = """
你的任务是识别用户对手机流量套餐产品的选择条件。
每种流量套餐产品包含三个属性:名称(name),月费价格(price),月流量(data)。
根据用户输入,识别用户在上述三种属性上的倾向。
"""# 输出格式
output_format = """
以JSON格式输出。
1. name字段的取值为string类型,取值必须为以下之一:经济套餐、畅游套餐、无限套餐、校园套餐 或 null;2. price字段的取值为一个结构体 或 null,包含两个字段:
(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)
(2) value, int类型3. data字段的取值为取值为一个结构体 或 null,包含两个字段:
(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)
(2) value, int类型或string类型,string类型只能是'无上限'4. 用户的意图可以包含按price或data排序,以sort字段标识,取值为一个结构体:
(1) 结构体中以"ordering"="descend"表示按降序排序,以"value"字段存储待排序的字段
(2) 结构体中以"ordering"="ascend"表示按升序排序,以"value"字段存储待排序的字段只输出中只包含用户提及的字段,不要猜测任何用户未直接提及的字段。
DO NOT OUTPUT NULL-VALUED FIELD! 确保输出能被json.loads加载。
"""examples = """
便宜的套餐:{"sort":{"ordering"="ascend","value"="price"}}
有没有不限流量的:{"data":{"operator":"==","value":"无上限"}}
流量大的:{"sort":{"ordering"="descend","value"="data"}}
100G以上流量的套餐最便宜的是哪个:{"sort":{"ordering"="ascend","value"="price"},"data":{"operator":">=","value":100}}
月费不超过200的:{"price":{"operator":"<=","value":200}}
就要月费180那个套餐:{"price":{"operator":"==","value":180}}
经济套餐:{"name":"经济套餐"}
"""class NLU:def __init__(self):self.prompt_template = f"{instruction}\n\n{output_format}\n\n{examples}\n\n用户输入:\n__INPUT__"def _get_completion(self, prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0,  # 模型输出的随机性,0 表示随机性最小)semantics = json.loads(response.choices[0].message.content)return {k: v for k, v in semantics.items() if v}def parse(self, user_input):prompt = self.prompt_template.replace("__INPUT__", user_input)return self._get_completion(prompt)class DST:def __init__(self):passdef update(self, state, nlu_semantics):if "name" in nlu_semantics:state.clear()if "sort" in nlu_semantics:slot = nlu_semantics["sort"]["value"]if slot in state and state[slot]["operator"] == "==":del state[slot]for k, v in nlu_semantics.items():state[k] = vreturn stateclass MockedDB:def __init__(self):self.data = [{"name": "经济套餐", "price": 50, "data": 10, "requirement": None},{"name": "畅游套餐", "price": 180, "data": 100, "requirement": None},{"name": "无限套餐", "price": 300, "data": 1000, "requirement": None},{"name": "校园套餐", "price": 150, "data": 200, "requirement": "在校生"},]def retrieve(self, **kwargs):records = []for r in self.data:select = Trueif r["requirement"]:if "status" not in kwargs or kwargs["status"] != r["requirement"]:continuefor k, v in kwargs.items():if k == "sort":continueif k == "data" and v["value"] == "无上限":if r[k] != 1000:select = Falsebreakif "operator" in v:if not eval(str(r[k])+v["operator"]+str(v["value"])):select = Falsebreakelif str(r[k]) != str(v):select = Falsebreakif select:records.append(r)if len(records) <= 1:return recordskey = "price"reverse = Falseif "sort" in kwargs:key = kwargs["sort"]["value"]reverse = kwargs["sort"]["ordering"] == "descend"return sorted(records, key=lambda x: x[key], reverse=reverse)class DialogManager:def __init__(self, prompt_templates):self.state = {}self.session = [{"role": "system","content": "你是一个手机流量套餐的客服代表,你叫小瓜。可以帮助用户选择最合适的流量套餐产品。"}]self.nlu = NLU()self.dst = DST()self.db = MockedDB()self.prompt_templates = prompt_templatesdef _wrap(self, user_input, records):if records:prompt = self.prompt_templates["recommand"].replace("__INPUT__", user_input)r = records[0]for k, v in r.items():prompt = prompt.replace(f"__{k.upper()}__", str(v))else:prompt = self.prompt_templates["not_found"].replace("__INPUT__", user_input)for k, v in self.state.items():if "operator" in v:prompt = prompt.replace(f"__{k.upper()}__", v["operator"]+str(v["value"]))else:prompt = prompt.replace(f"__{k.upper()}__", str(v))return promptdef _call_chatgpt(self, prompt, model="gpt-3.5-turbo"):session = copy.deepcopy(self.session)session.append({"role": "user", "content": prompt})response = client.chat.completions.create(model=model,messages=session,temperature=0,)return response.choices[0].message.contentdef run(self, user_input):# 调用NLU获得语义解析semantics = self.nlu.parse(user_input)print("===semantics===")print(semantics)# 调用DST更新多轮状态self.state = self.dst.update(self.state, semantics)print("===state===")print(self.state)# 根据状态检索DB,获得满足条件的候选records = self.db.retrieve(**self.state)# 拼装prompt调用chatgptprompt_for_chatgpt = self._wrap(user_input, records)print("===gpt-prompt===")print(prompt_for_chatgpt)# 调用chatgpt获得回复response = self._call_chatgpt(prompt_for_chatgpt)# 将当前用户输入和系统回复维护入chatgpt的sessionself.session.append({"role": "user", "content": user_input})self.session.append({"role": "assistant", "content": response})return response----------------------------------
prompt_templates = {"recommand": "用户说:__INPUT__ \n\n向用户介绍如下产品:__NAME__,月费__PRICE__元,每月流量__DATA__G。","not_found": "用户说:__INPUT__ \n\n没有找到满足__PRICE__元价位__DATA__G流量的产品,询问用户是否有其他选择倾向。"
}dm = DialogManager(prompt_templates)response = dm.run("300太贵了,200元以内有吗")
# response = dm.run("流量大的")
print("===response===")
print(response)
  • 代码解析
    ①构造DialogManager类对象的构造函数,传入prompt_templates字符串,进而构造NLU、DST、MockedDB类对象作为成员变量
    ②DialogManager类对象dm调用run函数,调用NLU获得语义解析,调用DST更新多轮状态,retrieve根据状态检索DB获得满足条件的候选话费套餐
    ③将gpt角色内容命令打包成一个prompt
    ④调用_call_chatgpt将prompt送给GPT,调用返回的消息
    ⑤保存当前用户输入和系统回复维护入chatgpt的session,也就是保存输入的内容返回的内容

5)优化一:加入垂直领域推荐

prompt_templates = {"recommand": "用户说:__INPUT__ \n\n向用户介绍如下产品:__NAME__,月费__PRICE__元,每月流量__DATA__G。","not_found": "用户说:__INPUT__ \n\n没有找到满足__PRICE__元价位__DATA__G流量的产品,询问用户是否有其他选择倾向。"
}dm = DialogManager(prompt_templates)
response = dm.run("300太贵了,200元以内有吗")
# response = dm.run("流量大的")
print("===response===")
print(response)

在这里插入图片描述

6)优化二:改变语气、口吻等风格。

# 定义语气要求。"NO COMMENTS. NO ACKNOWLEDGEMENTS."是常用 prompt,表示「有事儿说事儿,别 bb」
ext = "很口语,亲切一些。不用说“抱歉”。直接给出回答,不用在前面加“小瓜说:”。NO COMMENTS. NO ACKNOWLEDGEMENTS."
prompt_templates = {k: v+ext for k, v in prompt_templates.items()}dm = DialogManager(prompt_templates)
# response = dm.run("流量大的")
response = dm.run("300太贵了,200元以内有吗")
print("===response===")
print(response)

在这里插入图片描述

7)优化三:实现统一口径

ext = "\n\n遇到类似问题,请参照以下回答:\n问:流量包太贵了\n答:亲,我们都是全省统一价哦。"
prompt_templates = {k: v+ext for k, v in prompt_templates.items()}dm = DialogManager(prompt_templates)
response = dm.run("这流量包太贵了")
print("===response===")
print(response)

在这里插入图片描述

8)纯OpenAI方案

import json
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())def print_json(data):"""打印参数。如果参数是有结构的(如字典或列表),则以格式化的 JSON 形式打印;否则,直接打印该值。"""if hasattr(data, 'model_dump_json'):data = json.loads(data.model_dump_json())if (isinstance(data, (list, dict))):print(json.dumps(data,indent=4,ensure_ascii=False))else:print(data)client = OpenAI()# 定义消息历史。先加入 system 消息,里面放入对话内容以外的 prompt
messages = [{"role": "system","content": """
你是一个手机流量套餐的客服代表,你叫小瓜。可以帮助用户选择最合适的流量套餐产品。可以选择的套餐包括:
经济套餐,月费50元,10G流量;
畅游套餐,月费180元,100G流量;
无限套餐,月费300元,1000G流量;
校园套餐,月费150元,200G流量,仅限在校生。
"""}
]def get_completion(prompt, model="gpt-3.5-turbo"):# 把用户输入加入消息历史messages.append({"role": "user", "content": prompt})response = client.chat.completions.create(model=model,messages=messages,temperature=0,)msg = response.choices[0].message.content# 把模型生成的回复加入消息历史。很重要,否则下次调用模型时,模型不知道上下文messages.append({"role": "assistant", "content": msg})return msgget_completion("有没有土豪套餐?")
get_completion("多少钱?")
get_completion("给我办一个")
print_json(messages)
[{"role": "system","content": "\n你是一个手机流量套餐的客服代表,你叫小瓜。可以帮助用户选择最合适的流量套餐产品。可以选择的套餐包括:\n经济套餐,月费50元,10G流量;\n畅游套餐,月费180元,100G流量;\n无限套餐,月费300元,1000G流量;\n校园套餐,月费150元,200G流量,仅限在校生。\n"},{"role": "user","content": "有没有土豪套餐?"},{"role": "assistant","content": "很抱歉,我们暂时没有土豪套餐。但是我们有无限套餐,它提供1000G的流量,适合大流量用户。如果您有其他需求,我可以帮您选择其他适合的套餐。"},{"role": "user","content": "多少钱?"},{"role": "assistant","content": "无限套餐的月费是300元。它提供1000G的流量,适合需要大量流量的用户。如果您对其他套餐感兴趣,我可以为您提供更多信息。"},{"role": "user","content": "给我办一个"},{"role": "assistant","content": "好的,我会为您办理无限套餐。请提供您的个人信息,包括姓名、手机号码和身份证号码,以便我们为您办理。"}
]

9)纯OpenAI和自制问答的对比

①自制代码能让问答更加可控
②减少prompt能更加省钱
③纯OpenAI让系统简单好维护

三、prompt提示工程师进阶技巧

1)思维链(Chain of Thoughts, CoT)

2)自洽性(Self-Consistency)

相关文章:

大模型学习笔记二:prompt工程

文章目录 一、经典AI女友Prompt二、prompt怎么做&#xff1f;1&#xff09;注重格式&#xff1a;2&#xff09;prompt经典构成3&#xff09;简单prompt的python询问代码4&#xff09;python实现订阅手机流量套餐的NLU5&#xff09;优化一&#xff1a;加入垂直领域推荐6&#xf…...

MATLAB实现LSTM时间序列预测

LSTM模型可以在一定程度上学习和预测非平稳的时间序列&#xff0c;其具有强大的记忆和非线性建模能力&#xff0c;可以捕捉到时间序列中的复杂模式和趋势[4]。在这种情况下&#xff0c;LSTM模型可能会自动学习到时间序列的非平稳性&#xff0c;并在预测中进行适当的调整。其作为…...

Kubernetes CNI Calico:Route Reflector 模式(RR) calico IPIP切换RR网络模式

1. 概述 Calico 路由反射模式是一种 BGP 互联方案,用于解决大规模网络中路由信息的分发和同步问题。在 Calico 的路由反射模式中,路由反射器(Route Reflectors)被用来集中管理路由信息,以减少网络中的路由信息数量和减小路由信息的分发规模。 在 Calico 的路由反射模式中…...

探索Gin框架:Golang Gin框架请求参数的获取

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置&#xff0c;服务启动等内容。 专栏地址&…...

极值图论基础

目录 一&#xff0c;普通子图禁图 二&#xff0c;Turan问题 三&#xff0c;Turan定理、Turan图 1&#xff0c;Turan定理 2&#xff0c;Turan图 四&#xff0c;以完全二部图为禁图的Turan问题 1&#xff0c;最大边数的上界 2&#xff0c;最大边数的下界 五&#xff0c;…...

word导出链接

java 使用 POI 操作 XWPFDocumen 创建和读取 Office Word 文档基础篇 https://www.cnblogs.com/mh-study/p/9747945.html word标签解析文档 http://www.datypic.com/sc/ooxml/e-w_tbl-1.html...

(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.5节(重载和模糊调用)

4.2.5 重载和模糊调用 ​ 当调用一个重载的函数时&#xff0c;编译器通常会找到匹配的版本并正确工作&#xff0c;或者如果没有任何重载版本具有正确匹配的参数&#xff08;正如我们刚刚看到的&#xff09;&#xff0c;则会报出错误。 ​ 但还有第三种情况&#xff1a;假设编…...

ElementUI Data:Table 表格

ElementUI安装与使用指南 Table 表格 点击下载learnelementuispringboot项目源码 效果图 el-table.vue&#xff08;Table表格&#xff09;页面效果图 项目里el-table.vue代码 <script> export default {name: el_table,data() {return {tableData: …...

11.2 OpenGL可编程顶点处理:细分着色器

细分 Tessellation Tessellation&#xff08;细分&#xff09;是计算机图形学中的一种技术&#xff0c;用于在渲染过程中提高模型表面的几何细节。它通过在原始图元&#xff08;如三角形、四边形或补丁&#xff09;之间插入新的顶点和边&#xff0c;对图元进行细化分割&#x…...

微软正在偷走你的浏览记录,Edge浏览器偷疯了

虽然现在 Edge 浏览器相当强大&#xff0c;甚至在某种程度上更符合中国用户的使用体验&#xff1b;但最近新的Edge浏览器推出后一直在使用的用户应该有感受到&#xff0c;原本的冰清玉洁的转校生慢慢小鸡脚藏不住了&#xff0c;广告越来越多&#xff0c;越来越流氓了。 电脑之前…...

什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)

文章目录 什么是数据库软删除&#xff0c;什么场景下要用软删除&#xff1f;go GORM硬删除什么是数据库软删除什么场景下要用软删除 什么是数据库软删除&#xff0c;什么场景下要用软删除&#xff1f; go GORM硬删除 使用的是 GORM&#xff0c;默认启用了软删除功能&#xff…...

计算机设计大赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…...

我主编的电子技术实验手册(02)——仪表与电源

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…...

C语言----内存函数

内存函数主要用于动态分配和管理内存&#xff0c;它直接从指针的方位上进行操作&#xff0c;可以实现字节单位的操作。 其包含的头文件都是&#xff1a;string.h memcpy copy block of memory的缩写----拷贝内存块 格式&#xff1a; void *memcpy(void *dest, const void …...

【力扣】快乐数,哈希集合 + 快慢指针 + 数学

快乐数原题地址 方法一&#xff1a;哈希集合 定义函数 getNext(n) &#xff0c;返回 n 的所有位的平方和。一直执行 ngetNext(n) &#xff0c;最终只有 2 种可能&#xff1a; n 停留在 1 。无限循环且不为 1 。 证明&#xff1a;情况 1 是存在的&#xff0c;如力扣的示例一…...

c实现顺序表

目录 c语言实现顺序表 完整代码实现 c语言实现顺序表 顺序表的结构定义&#xff1a; typedef struct vector {int size; // 顺序表的容量int count; // 顺序表现在存储了多少个数据int *data; // 指针指向连续的整型存储空间 } vector;顺序表的结构操作&#xff1a; 1、初始…...

微软为新闻编辑行业推出 AI 辅助项目,记者参加免费课程

2 月 6 日消息&#xff0c;微软当地时间 5 日发布新闻稿宣布与多家新闻机构展开多项基于生成式 AI 的合作。微软表示&#xff0c;其使命是确保新闻编辑室在今年和未来拥有创新。 目前建议企业通过微软官方合作伙伴获取服务&#xff0c;可以合规、稳定地提供企业用户使用ChatGP…...

openssl3.2 - exp - buffer to BIO

文章目录 openssl3.2 - exp - buffer to BIO概述笔记END openssl3.2 - exp - buffer to BIO 概述 openssl的资料看的差不多了, 准备将工程中用到的知识点整理一下. openssl中很多API是以操作文件作为输入的, 也有很多API是以BIO作为输入的. 不管文件是不是受保护的, 如果有可…...

Android 13.0 系统framework修改低电量关机值为3%

1、讲在最前面 系统rom定制开发中&#xff0c;其中在低电量时&#xff0c;系统会自动关机&#xff0c;这个和不同的平台和底层驱动和硬件都有关系&#xff0c;需要结合这些来实际调整这个值&#xff0c;我们可以通过分析源码中电池服务的代码&#xff0c;然后进行修改如何实现…...

【EAI 013】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning

论文标题&#xff1a;BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning 论文作者&#xff1a;Eric Jang, Alex Irpan, Mohi Khansari, Daniel Kappler, Frederik Ebert, Corey Lynch, Sergey Levine, Chelsea Finn 论文原文&#xff1a;https://arxiv.org…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...