【AI大模型】LangChain框架:示例选择器与输出解析器携手,编织NLP高效精准之网
文章目录
- 前言
- 一、示例选择器
- 1.介绍及应用
- 2.自定义示例选择器
- 案例:AI点评姓名
- 3.基于长度的示例选择器
- 案例:对输入内容取反
- 4.基于最大边际相关性(MMR)的示例选择器
- 案例:得到输入的反义词
- 5.基于n-gram重叠的示例选择器
- 6.综合案例
- 二、输出解析器
- 1.介绍
- 2.列表解析器
- 3.日期时间解析器
- 4.枚举解析器
- 5.Pydantic 解析器
- 案例:讲个笑话
- 案例:订单案例
前言
本文将聚焦于LangChain框架中的两大璀璨明珠——示例选择器和输出解析器,深入探讨它们如何与Prompt精妙结合,共同编织出提升NLP任务效率与准确性的精密网络。示例选择器通过提供精心挑选的示例来增强Prompt,有效引导大型语言模型(LLM)生成更加符合预期的高质量输出。而输出解析器则负责将LLM产生的非结构化文本输出转换为结构化数据,为后续处理和分析提供便利。文章将详细介绍多种类型的示例选择器和输出解析器,并通过实际案例展示它们如何与Prompt协同工作,共同提升NLP任务的效率和准确性。
一、示例选择器
1.介绍及应用
LangChain
的示例选择器是一个用于从一组示例中动态选择部分示例以构建提示(prompt)的重要组件。在LangChain
中,有多种不同类型的示例选择器,包括自定义样例选择器、长度样例选择器、MMR样例选择器、n-gram重叠度样例选择器和相似度样例选择器。以下是这些示例选择器的简要介绍和格式清晰的回答:
1. 自定义样例选择器
- 允许用户根据自己的业务逻辑和需求来定义样例的选择方式。
- 至少需要实现两个方法:
add_example
(用于添加新示例)和select_examples
(基于输入变量返回一个样例列表)。- 用户可以通过继承
BaseExampleSelector
类并实现所需的方法来创建自定义样例选择器。
2. 长度样例选择器
- 根据输入的长度来选择要使用的示例。对于较长的输入,它会选择较少的示例,而对于较短的输入,则会选择更多示例。
- 这在构建提示时需要控制上下文窗口长度时特别有用。
- 使用时,可以导入
LengthBasedExampleSelector
类,并传入示例列表来创建长度样例选择器。
3. MMR样例选择器
MMR(Maximum Marginal Relevance)
是一种常用于信息检索和推荐系统的排序算法,也适用于样例选择。- MMR样例选择器通过计算示例与输入之间的相关性以及示例之间的不相似性来选择样例。
- 具体的实现细节可能因库或框架而异,但通常用户需要指定计算相关性和不相似性的方法。
4. n-gram重叠度样例选择器
- 基于输入和示例之间的n-gram重叠度来选择样例。
- n-gram是一种用于表示文本中连续n个词或字符的序列的模型。
- 通过计算输入和示例之间的n-gram重叠度,可以选择与输入内容最相关的样例。
5.相似度样例选择器
- 基于输入和示例之间的相似度来选择样例。
- 相似度可以使用各种方法来计算,如余弦相似度、Jaccard相似度等。
- 选择与输入内容最相似的样例可以帮助语言模型更好地理解prompt,并给出更准确的回答。
2.自定义示例选择器
示例选择器是一个接口或抽象类,定义了选择示例的通用方法。根据输入或上下文选择最合适的示例,以提高模型的性能或适应特定的应用场景。
ExampleSelector
必须实现两个方法:
add_example
方法,接受一个示例并将其添加到ExampleSelector
中select_examples
方法,接受输入变量(用于用户输入)并返回要在few shot prompt
中使用的示例列表。
案例:AI点评姓名
from langchain.prompts import PromptTemplate
from langchain_community.llms import Tongyifrom langchain.prompts.example_selector.base import BaseExampleSelector
import numpy as npnames = ["张伟", "张静", "张磊", "张敏", "张涛","王强", "王芳", "王刚", "王艳", "王超","李娜", "李明", "李静", "李杰", "李浩","刘波", "刘洋", "刘婷", "刘伟", "刘芳"
]
# 示例选择器
class ExampleSelector(BaseExampleSelector):def __init__(self, example):self.examples = exampledef add_example(self, example):self.examples.append(example)def select_examples(self, input_v):return list(filter(lambda e: e.startswith(input_v), names))# return np.random.choice(self.examples,size=5)selector = ExampleSelector(names)
temp = "你是一个玄学大师,我给你一些姓名,你帮我做一些点评,这些姓名如下:{names}"
pt = PromptTemplate.from_template(temp)
prompt = pt.format(names=selector.select_examples("李"))
llm = Tongyi()
ret = llm.invoke(prompt)
print(ret)
3.基于长度的示例选择器
这个示例选择器基于长度来选择要使用的示例,特别适用于当构建的提示可能超出上下文窗口长度的情况。它能智能调整:对于较长的输入,会选择较少的示例以避免超出长度限制;而对于较短的输入,则会选择更多的示例以提供更丰富的信息。
案例:对输入内容取反
from langchain.prompts import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.example_selector import LengthBasedExampleSelector
from langchain_community.llms import Tongyi# 这是一个虚构任务的许多示例,用于创建反义词。
examples = [{"input": "面包", "output": "馒头"},{"input": "冰棍", "output": "雪糕"},{"input": "面条", "output": "粉丝"},{"input": "粥", "output": "汤"},{"input": "可口可乐", "output": "百事可乐"},
]example_prompt = PromptTemplate(input_variables=["input", "output"],template="Input: {input}\nOutput: {output}",
)
example_selector = LengthBasedExampleSelector(# 这些是可供选择的示例。examples=examples,# 这是用于格式化示例的PromptTemplate。example_prompt=example_prompt,# 这是格式化示例的最大长度。# 长度由下面的get_text_length函数测量。max_length=25,# 这是用于获取字符串长度的函数,用于确定要包含的示例。# 如果未指定,则提供一个默认值。# get_text_length: Callable[[str], int] = lambda x: len(re.split("\n| ", x))
)
dynamic_prompt = FewShotPromptTemplate(# 我们提供一个ExampleSelector而不是示例。example_selector=example_selector,example_prompt=example_prompt,prefix="给出每个输入的反义词",suffix="输入: {adjective}\n输出:",input_variables=["adjective"],
)# 一个输入较小的示例,因此它选择所有示例。
# print(dynamic_prompt.format(adjective="big"))
prompt1 = dynamic_prompt.format(adjective="big")# 一个输入较长的示例,因此它只选择一个示例。
long_string = "big and huge and massive and large and gigantic and tall and much much much much much bigger than everything else"
# print(dynamic_prompt.format(adjective=long_string))
prompt2 = dynamic_prompt.format(adjective=long_string)# 您还可以将示例添加到示例选择器中。
new_example = {"input": "big", "output": "small"}
dynamic_prompt.example_selector.add_example(new_example)
# print(dynamic_prompt.format(adjective="enthusiastic"))
prompt3 = dynamic_prompt.format(adjective="enthusiastic")llm = Tongyi()
# ret = llm.invoke(prompt1)
print('输入:big')
print(llm.invoke(prompt1))
print('---'*20)
print("输入:",long_string)
print(llm.invoke(prompt2))
print('---'*20)
print("输入:enthusiastic")
print(llm.invoke(prompt3))
4.基于最大边际相关性(MMR)的示例选择器
MaxMarginalRelevanceExampleSelector
根据示例与输入之间的相似性以及多样性进行选择。 它通过找到与输入具有最大余弦相似度的嵌入示例,并在迭代中添加它们,同时对已选择示例的接近程度进行惩罚来实现这一目标。
MMR
是一种在信息检索中常用的方法,它的目标是在相关性和多样性之间找到一个平衡MMR
会首先找出与输入最相似(即余弦相似度最大)的样本- 然后在迭代添加样本的过程中,对于与已选择样本过于接近(即相似度过高)的样本进行惩罚
MMR
既能确保选出的样本与输入高度相关,又能保证选出的样本之间有足够的多样性- 关注如何在相关性和多样性之间找到一个平衡
案例:得到输入的反义词
from langchain.prompts import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.example_selector import MaxMarginalRelevanceExampleSelector
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.llms import Tongyi# 假设已经有这么多的提示词示例组:
examples = [{"input": "高兴", "output": "悲伤"},{"input": "乐观", "output": "悲观"},{"input": "光明", "output": "黑暗"},{"input": "干燥", "output": "湿润"},{"input": "善良", "output": "邪恶"},{"input": "复杂", "output": "简单"},{"input": "安静", "output": "喧闹"}
]# 构造提示词模板
example_prompt = PromptTemplate(input_variables=["input", "output"],template="原词:{input}\n反义:{output}"
)# 调用MMR
example_selector = MaxMarginalRelevanceExampleSelector.from_examples(# 传入示例组examples,# 使用阿里云的dashscope的嵌入来做相似性搜索DashScopeEmbeddings(),# 设置使用的向量数据库是什么FAISS,# 结果条数k=2,
)# 使用小样本提示词模版来实现动态示例的调用
dynamic_prompt = FewShotPromptTemplate(example_selector=example_selector,example_prompt=example_prompt,prefix="给出每个输入词的反义词",suffix="原词:{word}\n反义:",input_variables=["word"]
)
prompt = dynamic_prompt.format(word="快乐")
# print(dynamic_prompt.format(word="快乐"))llm = Tongyi()
ret = llm.invoke(prompt)
print(ret)
5.基于n-gram重叠的示例选择器
NGramOverlapExampleSelector
是一个根据ngram
重叠得分选择和排序示例的工具。这个得分是一个介于0.0和1.0之间的浮点数(包含0.0和1.0)。此选择器允许用户设置一个阈值得分,得分小于或等于此阈值的示例将被排除。默认阈值设为-1.0,意味着不会排除任何示例,只会对它们进行重新排序。若将阈值设为0.0,则会排除与输入没有ngram重叠的示例。
6.综合案例
假设我们正在构建一个基于LangChain
的文本生成系统,该系统需要根据用户输入的关键词生成相关的故事或描述。 为了提高生成的准确性和相关性,我们决定使用示例选择器来动态选择最佳的示例,这些示例将被包含在Prompt中以引导模型进行生成。
- 1>示例选择器选择
在LangChain
中,有多种示例选择器可供选择,每种都有其特定的用途和优势。在这个案例中,我们假设选择了以下两种示例选择器:
- LengthBasedExampleSelector:基于输入的长度来选择示例。当输入较长时,选择较少的示例以避免Prompt过长;当输入较短时,选择更多的示例以提供更多的上下文。
- SemanticSimilarityExampleSelector:基于输入与示例之间的语义相似性来选择示例。这种方法能够确保选择的示例与输入高度相关,从而提高生成的准确性。
- 2>案例步骤
- 定义示例列表:
首先,我们需要定义一个包含多个示例的列表。每个示例都应该是一个包含输入和输出的字典 - 创建PromptTemplate:
接下来,我们创建一个PromptTemplate
,该模板将用于格式化输入和输出示例,以构建最终的Prompt - 创建示例选择器:
然后,我们创建之前提到的两种示例选择器。这里,为了简化案例,此处仅展示如何使用LengthBasedExampleSelector
,还可以根据需要添加SemanticSimilarityExampleSelector
。 - 动态选择示例并构建Prompt:
最后,当用户输入关键词时,使用示例选择器动态选择示例,并使用PromptTemplate
构建最终的Prompt。
通过结合使用PromptTemplate
和示例选择器(如LengthBasedExampleSelector
和SemanticSimilarityExampleSelector
),我们能够根据输入动态选择最佳的示例,并将它们包含在Prompt中以引导模型进行生成。这种方法能够提高生成的准确性和相关性,使生成的文本更加符合用户的期望。
- 3>代码实现
from langchain_core.prompts import PromptTemplate
from langchain.prompts.example_selector import LengthBasedExampleSelector
from langchain_community.llms import Tongyi# 示例
examples = [{"input": "好天气", "output": "与好天气相关的故事或描述"},{"input": "坏天气", "output": "与坏天气相关的故事或描述"},
]# 模板
prompt_template = PromptTemplate(input_variables=["input", "output"],template="Input: {input}\nOutput: {output}",
)#
length_based_selector =LengthBasedExampleSelector(# 这些是可供选择的示例。examples=examples,# 这是用于格式化示例的PromptTemplate。example_prompt=prompt_template,# 这是格式化示例的最大长度。# 长度由下面的get_text_length函数测量。max_length=25,# 这是用于获取字符串长度的函数,用于确定要包含的示例。# 如果未指定,则提供一个默认值。# get_text_length: Callable[[str], int] = lambda x: len(re.split("\n| ", x))
)user_input = "春天的天气特别好,我特别喜欢,写一个关于春天的文章" # 假设用户输入的关键词
selected_examples = length_based_selector.select_examples(input_variables={"key":user_input})prompt = prompt_template.format(input=user_input,output="\n".join([example["output"] for example in selected_examples])
)# 将prompt传递给模型进行生成
print(prompt)
tongyi = Tongyi()
ret = tongyi.invoke(prompt)
print(ret)
二、输出解析器
1.介绍
输出解析器是一种专门用于结构化语言模型响应的类。其核心功能通过两个主要方法实现:
- 获取格式指令(
get_format_instructions
): 此方法返回一个字符串,详细说明了语言模型输出的期望格式。 - 解析(
parse
): 此方法接受一个字符串作为输入(该字符串假设为语言模型的响应),并将其解析成某种结构化形式。
此外,输出解析器还可以选择实现一个额外的方法:
- 带提示解析(
parse_with_prompt
): 此方法除了接受语言模型的响应字符串外,还接受一个提示字符串。提示字符串主要用于在解析过程中提供额外信息,帮助解析器更好地结构化输出,尤其是在需要利用提示中的信息来修复或完善输出时。
综上所述,输出解析器的主要作用是帮助将语言模型的响应转换为更加结构化和易于处理的形式。
2.列表解析器
列表解析器是输出解析器的一种,专门用于处理大型语言模型生成的列表数据。它能够将逗号或其他分隔符分隔的文本字符串解析为Python列表或其他数据结构,便于后续的程序处理和分析。通过简单的接口,用户可以轻松地将语言模型的输出转换为所需的数据结构。
from langchain_core.output_parsers import CommaSeparatedListOutputParser,NumberedListOutputParser
from langchain.prompts import PromptTemplate, ChatPromptTemplate, HumanMessagePromptTemplate
from langchain_community.llms import Tongyi# 1.定义输出解析器:列表解析器
output_parser = CommaSeparatedListOutputParser()
# 2.获取格式指令
format_instructions = output_parser.get_format_instructions()# 3.创建并格式化提示
promptTemplate = PromptTemplate(template="列出五种{subject}。\n{format_instructions}",input_variables=["subject"],partial_variables={"format_instructions": format_instructions},
)prompt=promptTemplate.format(subject="水果")
print(prompt)# 4.调用模型并获取响应
tongyi = Tongyi()
ret = tongyi.invoke(prompt)
print(ret)
print(type(ret))# 5.使用输出解析器解析模型响应
parsed_list = output_parser.parse(ret)
print(parsed_list) # eg:输出: ['苹果', '香蕉', '橙子', '葡萄', '梨']
3.日期时间解析器
输出解析器中的日期时间解析器是一种专门用于处理大型语言模型(LLMs)生成的日期和时间数据的工具。它的主要作用是将LLMs输出的文本字符串(如日期和时间的自然语言表达) 解析为 Python中的datetime对象或其他日期时间格式,以便于程序进行进一步的日期时间计算、比较或格式化等操作。
from langchain_community.llms import Tongyi
from langchain.prompts import PromptTemplate
from langchain.output_parsers.datetime import DatetimeOutputParser# 1、定义输出解析器:日期时间解析器
output_parser = DatetimeOutputParser()
# 2、获取格式指令
format_instructions = output_parser.get_format_instructions()
print("获取格式指令:\n",format_instructions)template = """请按下面要求回答问题:
{question}
{format_instructions}"""# 3、定义模板
promptTemplate = PromptTemplate.from_template(template,partial_variables={"format_instructions": output_parser.get_format_instructions()},
)# 4、生成prompt
prompt = promptTemplate.format(question="新中国成立的日期是什么?")
print(prompt)# 5、调用大模型并获取响应
llm= Tongyi()
output = llm.invoke(prompt)
print(output)# 6、使用输出解析器解析模型响应
# output_parser.parse(output)
print("使用输出解析器解析模型响应 ",output_parser.parse(output))
4.枚举解析器
输出解析器中的枚举解析器是一种专门用于处理大型语言模型(LLMs
)输出中预定义值集合的工具。枚举(Enum
)是一种数据类型,它包含了一组命名的常量值,这些值在程序中是固定的,不能改变。 在LLMs的应用场景中,有时模型的输出应该是这组预定义值之一,以确保数据的准确性和一致性。这时,枚举解析器就派上了用场。
from langchain.output_parsers.enum import EnumOutputParser
from enum import Enum# 定义一个枚举类Colors,用于列举颜色选项
class Colors(Enum):RED = "red"GREEN = "green"BLUE = "blue"# 创建EnumOutputParser实例,指定Colors枚举作为解析目标
parser = EnumOutputParser(enum=Colors)# 示例:解析字符串"red",预期输出Colors枚举中对应的RED成员
print(parser.parse("red"))
# -> <Colors.RED: 'red'># 包括空格也可以
print(parser.parse(" green"))
# -> <Colors.GREEN: 'green'># 包括\n\t也可以
print(parser.parse("blue\n\t"))
# -> <Colors.BLUE: 'blue'># 其他字符不可以
# print(parser.parse("blue?"))
# -> <Colors.BLUE: 'blue'>
5.Pydantic 解析器
输出解析器中的 Pydantic
解析器 是一种专门用于处理大型语言模型(LLMs
)或其他数据源输出的工具,它利用Pydantic库的数据验证和解析能力来确保输出数据符合预期的数据模型。
Pydantic
是一个基于Python类型注解的数据验证和设置管理工具,特别适合于构建复杂的数据模型并自动验证数据的有效性和完整性。
案例:讲个笑话
from typing import Listfrom langchain.output_parsers import PydanticOutputParser
from langchain.prompts import PromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field, validatorfrom langchain_community.llms import Tongyi# 定义一个笑话模型,用于规范和解析语言模型生成的笑话
class Joke(BaseModel):joke: str = Field(description="设置笑话的问题部分",title="笑话")answer: str = Field(description="解答笑话的答案部分")# 设置一个解析器 + 将指令注入到提示模板中。
# 初始化PydanticOutputParser解析器,用于将语言模型的输出解析为Joke模型
parser = PydanticOutputParser(pydantic_object=Joke)
# 打印解析器的格式化指令,用于指导语言模型生成符合格式的输出
print(parser.get_format_instructions())
print("="*50)# 创建一个提示模板,用于格式化输入的问题,并注入解析器的格式化指令
promptTemplate = PromptTemplate(template="回答用户的问题:\n{format_instructions}\n{query}\n",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)# 使用提示模板格式化一个关于笑话的问题
prompt = promptTemplate.format(query="讲一个中文的笑话。")
print(prompt)
print("="*50)# 使用通义大模型生成符合提示要求的笑话
llm = Tongyi()
ret = llm.invoke(prompt)
print(ret)
案例:订单案例
如下代码中,order_data
验证Order
模型失败时触发 ValidationError
from pydantic import BaseModel,Field,ValidationError
class Order(BaseModel):product_id: int = Field(...,gt=0)quantity: int = Field(...,gt=0,le=100)payment_method: str = Field(...,pattern=r'^(cash|credit_card|bank_transfer)$')# 订单数据示例,用于验证Order模型
order_data = {"product_id": -123, #不符合规则,必须大于0"quantity": 50,"payment_method": "cash"
}try:order = Order(**order_data)print(order)
except ValidationError as e:print(e.errors())
相关文章:

【AI大模型】LangChain框架:示例选择器与输出解析器携手,编织NLP高效精准之网
文章目录 前言一、示例选择器1.介绍及应用2.自定义示例选择器案例:AI点评姓名 3.基于长度的示例选择器案例:对输入内容取反 4.基于最大边际相关性(MMR)的示例选择器案例:得到输入的反义词 5.基于n-gram重叠的示例选择器6.综合案例 二、输出解…...

苹果电脑玩的游戏有哪些 Mac电脑怎么玩Windows游戏 苹果电脑可以装模拟器玩游戏吗
苹果电脑虽然在游戏生态上可能不及Windows平台那么广泛,但其强大的硬件和macOS系统的优化,足以支持一系列高质量游戏的流畅运行。从策略游戏《文明VI》到动作冒险游戏《黑暗之魂III》,再到解谜游戏《传送门2》和角色扮演游戏《神界࿱…...

【mathtype】word中如何输入4×4的矩阵,甚至阶数更多
在写论文或者使用word操作的时候,我们可能会使用矩阵插入我们所写的word中,今天小编就分享一下如何在word中输入矩阵。首先,我们word中需要安装mathtype的插件。 ①打开word,鼠标点击mathtype,再点击内联 ② 出现以下…...
ByteArrayOutputStream
ByteArrayOutputStream 是 Java 中的一个类,它属于 java.io 包。这个类实现了一个字节输出流,其中数据被写入到一个字节数组中。这个缓冲区在数据写入时会自动增长,以适应需要存储的数据量。下面是对 ByteArrayOutputStream 的详细解释: 构造函数 ByteArrayOutputStream…...

使用CLIP模型进行零样本图像分类的分步指南
零样本学习允许AI系统对未明确训练过的类别进行图像分类,标志着计算机视觉和机器学习的重大进步。本文将介绍使用CLIP实现零样本图像分类的详细分步指南,从环境设置到最终的图像处理和分类。我们首先介绍零样本学习的概念及其在现代AI应用中的重要性。然后深入探讨CLIP模型的概…...

Llama 3.1用了1.6万个英伟达H100 GPU,耗费......
目录 Llama 3.1发布简介 Llama 3.1模型规模与训练 大模型企业发展面临的问题与困境 算力和能耗算力方面 数据和资金方面 技术和人才方面 Llama 3.1发布简介 当地时间 2024年 7月 23号,Meta 公司发布了迄今为止最强大的开源 AI 模型 Llama 3.1。该模型不仅规模…...

学习c语言第24天(练习)
编程题 第一题 最大公约数最小公倍数求和 //求最大公约数和最小公倍数之和 //暴力求解 //int main() //{ // int n 0; // int m 0; // while (scanf("%d %d", &n, &m)2) // { // int min n < m ? n : m; // int max n > m ? n : m; //…...

【微信小程序开发】——奶茶点餐小程序的制作(一)
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...
鱼眼相机去畸变和矫正
基于smart3D计算完空三进行导出opt文件 xx.opt文件,类似于xml文件 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OpticalProperties version="1.0"><Id>0</Id><Name>201空三任务_1_…...

Llama 3.1论文中文对照翻译
The Llama 3 Herd of Models 模型群 Llama 3 Llama Team, Al Meta 1 {}^{1} 1 Llama 团队,Meta Al 1 {}^{1} 1 1 {}^{1} 1 A detailed contributor list can be found in the appendix of this paper. 1 {}^{1} 1 详细的贡献者名单可在本文附录中找到。 Mod…...
Vue js-cookie的使用存储token操作
在Vue项目中使用js-cookie库存储token可以按照下面的步骤进行操作: 首先,安装js-cookie库,可以使用npm安装,命令为: npm install js-cookie 然后,在需要存储token的组件中引入js-cookie库: imp…...

C到C++——C++基础
C是一种通用的、静态类型的、跨平台的编程语言。它是在1979年由Bjarne Stroustrup创建的,最初是作为C语言的扩展来支持面向对象编程。 C在保留C语言的特性的同时,添加了许多其他的功能,包括类、对象、继承、多态、模板等。这使得C成为了一种…...

trie算法
1、定义 高效的存储和查找字符串集合的数据结构 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高 2、构建 我们可以使用数组来模拟实现Trie树。 我们设计一个二维数组 son[N] [26] 来…...
Kubernetes之pod的基本概念
目录 什么是pod 启动一个pod 说明 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 Pod 联网 Pod 安全设置 什么是pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod(就像豌豆荚中)是一组&#…...

PostgreSQL的学习心得和知识总结(一百五十)|[performance]更好地处理冗余 IS [NOT] NULL 限定符
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...

sqllabs游戏
文章目录 总体思路:less-1:less-2:less-3:less-4:less-5:less-6:less-7:less-8:布尔盲注less-9:时间盲注less-21:less-24: 总体思路: 1、第一件事情 逃脱出单引号的控制 闭合单引号 2、单双引号需要成对出现 在python php Java中 3、2个办法 继续把多出…...
React Native Firebase:移动应用后端集成
React Native Firebase 是一个强大的库,它允许你在 React Native 应用中集成 Firebase 后端服务。Firebase 提供了一系列的服务,包括实时数据库、身份验证、云存储、云消息推送等,这些服务可以帮助你构建功能丰富、可扩展的移动应用。 安装和…...
趣味算法------开灯问题
题目描述 有 n 盏灯,编号为 1~n,第 1 个人把所有灯打开,第 2 个人按下所有编号为 2 的倍数的开关(这些灯将被关掉),第 3 个人按下所有编号为 3 的倍数的开关(其中关掉的灯将被打开,…...
如何长生?重要的是对内求索!
文章目录 1. 世界上没有仙丹2. 长生只能对内求索 1. 世界上没有仙丹 小说中的九转大还丹,修仙中的仙丹,蟠桃是不存在的。这是理所当然的废话。但是世界上总有很多广告词,用老山参、野生、纯天然,补肾、补肝等词来形容自己的产品&…...
SD-WAN解决方案
联通国际公司企业SD-WAN解决方案 产品介绍 随着数字化转型的加速推进,企业对网络连接的需求也在不断提高。联通国际公司推出的SD-WAN(Software-Defined Wide Area Network,软件定义广域网)解决方案,旨在为企业提供更…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀” 在JavaScript中,我们经常需要处理文本、数组、对象等数据类型。但当我们需要处理文件上传、图像处理、网络通信等场景时,单纯依赖字符串或数组就显得力不从心了。这时ÿ…...