提示词优化的自动化探索:Automated Prompt Engineering

编者按: 作者在尝试教授母亲使用 LLM 完成工作任务时,意识到提示词的优化并不像想象中简单。提示词的自动优化对于经验并不丰富的提示词撰写者很有价值,他们没有足够的经验去调整和改进提供给模型的提示词,这引发了对自动化提示词优化工具的进一步探索。

本文作者从两个角度分析了提示词工程的本质 —— 可将其视为超参数优化的一部分,也可将其视为一个需要不断尝试和调整的摸索、试错、修正过程。

作者认为,对于拥有比较明确的模型输入和输出的任务,比如解数学题、情感分类、生成SQL语句等。作者认为这种情况下的提示词工程更像是在优化一个"参数",就像机器学习里调节超参数一样。我们可以通过自动化的方法,不断尝试不同的提示词,看哪个效果最好。而对于相对比较主观和模糊的任务,比如写作邮件、诗歌、文章摘要等。因为没有非黑即白的标准来评判输出是否"正确",所以提示词的优化就不能简单机械地进行。

The original article link: https://towardsdatascience.com/automated-prompt-engineering-78678c6371b9

LinkedIn profile link: https://linkedin.com/in/ianhojy

Medium profile link for subscriptions: https://ianhojy.medium.com/

作者 | Ian Ho

编译 | 岳扬

在过去的几个月里,我一直都在尝试构建各种 LLM-powered apps。说实话,我有相当一部分时间都是在改进 Prompt ,以便从 LLM 那里获得我想要的输出结果。

有很多时候我都陷入于虚无和困惑中,问自己是否只是一名被美化的提示词工程师(glorified prompt engineer)。鉴于当前人类与 LLM(大语言模型)互动的现状,我仍倾向于给出“还没有”的结论,而且在大多数夜晚,我都能克服自己的 imposter syndrome。(译者注:是一种心理现象,指的是个体对自己的成就和能力持怀疑态度,常常觉得自己是一个骗子,认为自己并不配拥有或达到所取得的成就,担心被揭穿。)目前暂时不深入讨论这个问题。

但我还是经常在想,是否有一天,撰写 Prompt 的过程可以基本实现自动化。如何回答这个问题,关键在于能否搞清楚提示词工程(prompt engineering)的真正本质。

尽管浩瀚的互联网上有无数的提示词工程实践手册(prompt engineering playbooks),但我仍然无法确定提示词工程(prompt engineering)是一门艺术还是一门科学。

一方面,当我必须根据从模型输出中观察到的结果反复学习再润色我编写的 Prompt 时,感觉这像是一门艺术。随着时间的推移,我发现一些微小的细节也非常重要 —— 比如使用“must(必须)”而不是“should(应该)”,或者将 guidelines (译者注:提示词中的一些指导性的建议或规范)放在提示词的末尾而不是中间。根据任务的不同,人们可以有太多的方式来表达一系列 instructions (译者注:具体的操作指示)和 guidelines(译者注:一般性的规范建议),有时感觉就像是在不断地尝试和犯错。

另一方面,也有人可能会认为提示词只是一种超参数(hyper-parameters)。归根结底,LLM(大语言模型)其实只把我们编写的提示词看作是嵌入向量(embeddings),就像所有超参数一样。 如果我们有一组已经准备好并且被认可的用于训练和测试机器学习模型的数据集,就可以对提示词进行调整并客观地评估其性能。最近我看到了 HuggingFace 的 ML 工程师 Moritz Laurer[1] 的一篇帖子:

Every time you test a different prompt on your data, you become less sure if the LLM actually generalizes to unseen data… Using a separate validation split to tune the main hyperparameter of LLMs (the prompt) is just as important as train-val-test splitting for fine-tuning. The only difference is that you don’t have a training dataset anymore and it somehow feels different because there is no training / no parameter updates. Its easy to trick yourself into believing that an LLM performs well on your task, while you’ve actually overfit the prompt on your data. Every good “zeroshot” paper should clarify that they used a validation split for finding their prompt before final testing.

当我们在这些数据集上测试越来越多不同的提示词(Prompt)后,会越来越不确定 LLM 是否真的对未见过的数据具有泛化能力… 将数据集中的一部分单独设置为验证集来调整 LLM 的主要超参数(Prompt)和使用 train-val-test splitting(译者注:将可用数据集划分为三个部分:训练集、验证集和测试集。) 方法来进行微调一样重要。唯一不同的是,这种过程不涉及训练模型(no training)或更新模型参数(no parameter updates),而是仅仅是在验证集上评估不同提示词的性能。这很容易欺骗自己,让自己相信 LLM 在目标任务上表现出色,而实际上可能经过调整的提示词在目前这个数据集上表现得非常好,但在更广泛或未见过的数据集上可能不适用。每篇优秀的“零样本(zeroshot)”论文都应该说明清楚他们在最终测试之前使用了验证集来帮助寻找最优秀的Prompt。

经过一番思考,我认为答案介于两者之间。提示词工程(prompt engineering)到底是科学还是艺术,取决于我们想让 LLM 做什么。在过去的一年里,我们看到 LLM 做出了许多令人惊叹的事情,但我倾向于将大家使用大模型的意图归类为两大类:解决问题(solving)和完成创造性的任务(creating)。

在解决问题(solving)这方面,我们让 LLM 解决数学问题、对情感进行分类、生成 SQL 语句、翻译文本,等等,不一而足。一般来说,我认为这些任务都可以归为一类,因为它们可以具有相对明确的input-output pairs(译者注:输入数据与相应的模型输出数据之间的关联关系)(因此,我们可以看到许多案例仅使用少量 Prompt 即可很好地完成目标任务)。对于这类具有 well-defined training data(译者注:训练数据集中输入和输出之间的关系是清晰明确的) 的任务,提示词工程(prompt engineering)在我看来更像是一门科学。因此,本文的前半部分将从把 Prompt 看作超参数的角度进行探讨,专门探讨 automated prompt engineering(译者注:使用自动化方法或技术来设计、优化和调整提示词) 的研究进展。

在创造性任务(creating)方面,要求 LLM 完成的任务更加主观和模糊(subjective and ambiguous)。写邮件、报告、诗歌、摘要。也正是在这一领域,我们遇到了更多模糊不清的问题 —— ChatGPT 写作的内容是否缺乏人情味?(根据我让它写过的成千上万篇文章,我目前的看法是肯定的)而且,由于我们往往缺乏一个更客观的标准来说明我们希望 LLM 如何回应,因此创造性任务的性质和需求通常不太适合将提示词看作是可以像超参数一样进行调整和优化的参数。

说到这里,有些人可能会说,对于创造性任务,我们只需要运用常识就可以了。说实话,我曾经也是这样想的,直到我尝试着教我的母亲如何使用 ChatGPT 来帮助她生成工作邮件。在这些情况下,由于提示词工程(prompt engineering)仍然主要是通过不断的试验和调整来进行改进,而非一次性完成的,如何将自己的想法用于改进 Prompt ,并仍保留 Prompt 的通用性(如前文引述内容所说),并不总是一目了然的。

总之,我四处寻找能够根据用户对大模型生成示例的反馈自动改进提示词(Prompt)的工具,但一无所获。因此,我建立了一个这类工具的原型(prototype),探索是否存在可行的解决方案。在本文的后半部分,将与大家分享我试验的这款工具,它可以根据实时用户反馈自动改进提示词。

01 第一部分 —— LLMs as Solvers:将 Prompt Engineering 视为超参数优化的一部分

业内很多人都熟悉《Large Language Models are Zero-Shot Reasoners》[2]一文中著名的 “Zero-Shot-COT” 术语(译者注:模型在没有学习过针对特定任务的显式训练数据的情况下,通过组合已有的知识来解决新的问题)。Zhou 等人(2022 年)决定在《Large Language Models are Human-Level Prompt Engineers》[3] 一文中更进一步探讨其改进版本是什么? —— “Let’s work this out in a step by step way to be sure we have the right answer”。以下是他们提出的 Automatic Prompt Engineer 方法的相关内容概述:

Source: Large Language Models are Human-Level Prompt Engineers[3]

总结一下这篇论文:

  1. 使用 LLM 根据给定的 input-output pairs(译者注:输入数据与相应的模型输出数据之间的关联关系) 生成候选的指导性提示词。
  2. 使用 LLM 为每个指导性提示词评分,可以根据使用该指导性提示词(instruction)生成的答案与期望答案的匹配程度进行评估,也可以根据通过该指导性提示词(instruction)获得的模型响应的对数概率来进行评估。
  3. 根据高评分的候选指导性提示词(instruction)迭代生成新的候选指导性提示词。

发现了一些有趣的结论:

  • 除证明了(人类)提示词工程师(human prompt engineers)和之前提出的算法性能更优之外,作者指出:“与直觉相反,在上下文中添加示例会损害模型性能…因为所选的指导性提示词(instruction)过度拟合了零样本学习(zero-shot learning)场景,因此在小样本(few-shot)的情况下表现不佳”
  • 迭代的蒙特卡洛搜索算法(Monte Carlo Search)在大多数情况下其效果会逐渐减弱,但当 original proposal space (译者注:可能指的是在蒙特卡洛搜索算法中,最初用来生成候选解的初始范围或方案。)不够合适或不够有效时,却会表现良好。

随后在 2023 年, Google DeepMind 的一些研究人员推出了一种名为 “Optimisation by Prompting (OPRO) ” 的方法。与之前的例子相似,meta-prompt(译者注:用来帮助构建或生成用户需要的提示词的 Prompt )中包含一系列 input/output pairs (译者注:描述特定任务或问题的输入和期望输出组合)。这里的关键区别在于,meta-prompt 还包含了之前训练过的提示词样本及其正确的解答或解决方案和模型对这些提示词的解答准确率是多少,以及详细说明 meta-prompt 不同部分之间关系的指导性提示词。

正如作者解释的那样,研究工作中的每一次提示词优化步骤都会生成新的提示词,旨在参考之前的学习轨迹,让模型可以更好地理解当前任务,从而产生更准确的输出结果。

Source: Large Language Models as Optimizers[4]

针对 Zero-Shot-COT 这种场景,他们提出了 “Take a deep breath and work on this problem step-by-step” 这种提示词优化方法,并取得了很好的效果。

对此,我有几点想法:

  • “不同类型的语言模型生成的指导性提示词(instructions)风格差异很大。一些模型,如 PaLM 2-L-IT 和 text-bison 生成的指导性提示词非常简洁明了,而另一些如 GPT 的指令则冗长又相当详细。”这一点值得我们引起重视。目前市面上许多提示词工程(prompt engineering)的玩法都是以 OpenAI 的语言模型为参考对象编写的,但随着越来越多不同来源的模型开始被使用,我们应当注意,这些通用的提示词工程指南可能并不那么管用。论文 5.2.3 节中就给出了一个例子,展示了模型性能对指导性提示词(instructions)对微小变化的高度敏感性。我们需要更多关注这一点。

例如,在 GSM8K 测试集上使用 PaLM 2-L 评估模型时,“Let’s think step by step.” 的准确率达到了71.8%,“Let’s solve the problem together.”的准确率为60.5%,而前两个指导性提示词(instructions)的语义组合,“Let’s work together to solve this problem step by step.”的准确率仅为49.4%。

这种行为既增加了单步指导性提示词(single-step instructions)之间的差异,也增加了优化过程中出现的波动,促使我们在每个步骤生成多个指导性提示词(single-step instructions),以提高优化过程的稳定性。

论文的结语中还提到了另一个要点:“我们目前将算法应用于实际问题中的一个局限是,用于优化提示词的大语言模型,未能有效地利用训练集中的错误案例来推断有希望的提示词改进方向。在实验中,我们尝试在 meta-prompt 中加入模型在训练或测试时出现的错误案例,而非在每个优化步骤中从训练集中随机抽样,但结果大同小异,这表明仅凭这些错误案例的信息量不足以让 optimizer LLM(用于优化提示词的大语言模型) 了解产生错误预测的原因。” 这一点确实值得强调,因为尽管这些方法有力地证明了提示词的优化过程与传统 ML/AI 中的超参数优化过程类似,但我们往往会偏向于使用正面、积极的例子,无论是我们想要向 LLM 提供什么样的内容输入,还是我们如何指导 LLM 改进提示词。然而,在传统的 ML/AI 中,这种偏好通常没有这么明显,我们更注重如何利用错误的信息来优化模型,而非过多关注错误本身的方向或类型(即我们对 -5 和 +5 的误差大多一视同仁)。

如果你对 APE(Automated Prompt Engineering)感兴趣,可以前往https://github.com/keirp/automatic_prompt_engineer 下载使用。

Source: Screenshot from Example Notebook for APE[5]

在 APE 和 OPRO 这两种方法中都有一个关键要求,需要有训练数据来帮助优化,并且数据集需要足够大,以确保经过优化的提示词的通用性。

现在,我想谈谈另一类 LLM 任务,在这类任务中,我们可能没有现成的数据。

02 第 2 部分 —— LLMs as Creators:将 Prompt Engineering 视为不断尝试和调整逐步、改进的过程

假如我们现在要构思一些短篇小说。

而我们根本没有小说文本示例来训练模型,并且编写一些合格的小说文本示例需要的时间又太长。此外,我并不清楚让大模型输出一个“所谓正确”的回答是否有意义,因为可能有很多种模型输出都是可以接受的。因此,对于这类任务来说,使用 APE 等方法实现提示词工程的自动化几乎是不切实际的。

但是,有些读者可能会有疑问,为什么我们甚至需要将写提示词的过程自动化呢?可以从任意一个简单的提示词开始调整,比如 “provide me with 3 short story ideas about {{issue}} in {{country}}” ,将 {{issue}} 用 “inequality” 填充,将 {{country}} 替换为 “Singapore” ,观察模型响应结果,发现问题,调整提示词,再观察此次调整是否有效,反复执行这个流程。

但在这种情况下,谁能从提示词工程中获益最多呢?恰恰是那些经验并不丰富的提示词编写初学者,他们没有足够的经验去调整和改进提供给模型的提示词。我在教妈妈使用 ChatGPT 完成工作任务时,就亲身体会了这一点。

我妈可能不太擅长把她对 ChatGPT 输出内容的不满转化为对提示词的进一步改进,但我意识到,无论我们的提示词工程技术如何,我们真正擅长的是表达我们所看到的问题(即抱怨)的能力。因此,我尝试构建了一个工具来帮助用户表达他们的抱怨,并让 LLM 为我们改进提示词。对我来说,这似乎是一种更自然的交互方式,似乎让我们这些尝试使用 LLM 完成创造性任务的人能够更加轻松自如。

需要提前声明一下,这只是一个概念验证(proof-of-concept),所以如果读者有任何好主意,都可以随时与作者分享!

首先,编写带有 {{}} 变量的提示词。该工具将检测到这些占位符,供我们后续填写,在此还是使用上文的这个样例,要求大模型输出一些关于新加坡不平等现象的创意故事。

接下来,该工具会根据填写的提示词生成模型响应。

然后给出我们的反馈意见(想对模型输出表达的抱怨):

然后要求模型停止生成更多的故事创意示例,并输出第一次迭代改进的提示词。请注意,下文给出的提示词经过了改进并泛化了,要求 “描述克服或应对这些挑战的相关策略…(describe the strategies…to overcome or engage with these challenges)”。而我对第一次模型输出的反馈意见是 “谈谈故事主角是如何解决不平等现象的”。

然后,我们使用改进后的提示词,要求大模型再次构思短篇小说。

我们也可以选择点击““Generate Next Example”,可以让我们基于其他输入变量生成新的模型响应。下面是生成的一些关于中国裁员问题的创意故事:

然后对上述模型输出给出反馈:

然后,对提示词进行了进一步的优化:

这次的优化结果看起来还不错,毕竟最初这只是一句简单的提示词,经过不到两分钟(虽然有些随意)的反馈,经过三次迭代后得到了这个优化后的提示词。现在,我们只需坐下来对 LLM 的输出结果表达不满,就能持续对提示词进行优化。

这个功能的内部实现方式就是从 meta-prompt 开始,不断根据用户的动态反馈优化生成新的提示词。没有什么花里胡哨的东西,肯定还有进一步改进的空间,但已经是一个不错的开端了。

prompt_improvement_prompt = """# Context # You are given an original prompt.The original prompt was used to generate some example responses. For each response, feedback was provided on how to improve the desired response.Your task is to review all the feedback and then return an improved prompt that addresses the feedback, making it better at generating responses when prompted against the GPT language model.# Guidelines # - The original prompt will contain placeholders within double curly brackets. These are values for input that you will see in the examples.
- The improved prompt should not exceed 200 words
- Just return the improved prompt and nothing else before and after. Remember to include the same placeholders with double curly brackets.
- When generating the improved prompt, refrain from writing the entire prompt as one paragraph. Instead, you should use a combination of task descriptions, guidelines (in point form), and other sections to the prompt as appropriate.
- The guidelines should be in point form, and should not be a repetition of the task. The guidelines should also be distinct from one another.
- The improved prompt should be written in normal English that is best understood by the language model.
- Based on the feedback provided, you must rephrase the desired behavior of the response into `must`, imperative statements, instead of `should` suggestive statements.
- Improvements made to the prompt should not be overly specific to one single example.# Details # The original prompt is:
```
{original_prompt}
```These are the examples that were provided and the feedback for each:
```
{examples}
```The improved prompt is:
```
"""

使用该工具过程中得到的一些观察:

  • GPT4 在生成文本时倾向于使用大量词语(“多言”特性)。因为这个原因,可能存在两点影响。首先,这种"多言"特性可能会助长对特定示例的过拟合。** 如果给 LLM 提供过多词汇,它就会利用这些词汇来修正用户做出的具体反馈。其次,这种"多言"特性可能会损害提示词的有效性,特别是在冗长的提示词中,一些重要的指导性信息可能会被掩盖。 我认为第一个问题可以通过写好 meta-prompts 来解决,以促使模型根据用户反馈实现泛化。但是第二个问题比较棘手,在其他使用案例中,当提示词过长时指导性 Prompt 往往会被忽略。我们可以在 meta-prompt 中添加一些限制条件(例如上文提供的 prompt 样例那样对字数进行限制) ,但这确实比较随意,而且提示词中的某些限制或规则可能会受到底层大模型的特定属性或行为的影响。
  • 改进后的提示词有时会忘记之前对提示词所进行的优化。 解决这一问题的一种方法是向系统提供更长的改进历史记录,但这样做会导致改进的提示词变得过于冗长。
  • 这种方法在初次迭代中的一个优势是,LLM 可能会提供不属于用户反馈内容的改进指南。 例如,在上文的第一词优化时,该工具添加了“对所讨论的问题提供更广阔的视角…(Provide a broader perspective on the discussed issue…)”,即使我提供的反馈只是要求提供拥有可靠来源的相关统计数据。

我还没有部署这个工具,因为我仍在研究 meta-prompt ,看看哪种方法效果最好,并解决一些 streamlit 框架存在的问题,然后处理程序中可能出现的其他错误或异常。但该工具应该很快就会上线了!

03 In Conclusion

整个提示词工程(prompt engineering)领域都专注于为解决任务提供最佳的提示词。APE 和 OPRO 是该领域中最为重要、最为优秀的例子,但并不代表全部,对未来我们能够在该领域取得多大进步感到兴奋和期待。评估这些技术在不同模型上的效果,可以揭示这些模型的工作倾向或工作特点,也能帮助我们了解哪种 meta-prompt 技术是有效的,因此我认为这些都是非常重要的工作,有助于我们在生活生产实践中使用 LLM。

但是,对于希望将 LLM 用于完成创造性任务的其他人来说,这些方法可能并不适用。就目前而言,现有的很多学习手册都可以可以带领我们入门,但没有什么能胜过反复不断地尝试和试验。因此,在短期内,我认为最有价值的是我们如何高效地完成这个符合我们人类优势的实验过程(给予反馈),并让 LLM 完成剩下的工作(改进提示词)。

我也会在我的 POC(Proof of Concept) 上多下功夫,如果你对此感兴趣,欢迎联系我(https://www.linkedin.com/in/ianhojy/) !

Thanks for reading!

END

参考资料

[1]https://www.linkedin.com/in/moritz-laurer/?originalSubdomain=de

[2]https://arxiv.org/pdf/2205.11916.pdf

[3]https://arxiv.org/pdf/2211.01910.pdf

[4]https://arxiv.org/pdf/2309.03409.pdf

[5]https://github.com/keirp/automatic_prompt_engineer

[6]https://arxiv.org/abs/2104.08691

[7]https://medium.com/mantisnlp/automatic-prompt-engineering-part-i-main-concepts-73f94846cacb

[8]https://www.promptingguide.ai/techniques/ape

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://towardsdatascience.com/automated-prompt-engineering-78678c6371b9

相关文章推荐:

如何写好大模型提示词?来自大赛冠军的经验分享(进阶篇)

如何写好大模型提示词?来自大赛冠军的经验分享(基础篇)

Prompt Engineering 可能会是 2024 年最热门的“编程语言”?

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

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

相关文章

C++学习之指针和引用

指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为: type *var-name; 在这里…

kotlin 编写一个简单的天气预报app (七)使用material design

一、优化思路 对之前的天气预报的app进行了优化,原先的天气预报程序逻辑是这样的。 使用text和button组合了一个输入城市,并请求openweathermap对应数据,并显示的功能。 但是搜索城市的时候,可能会有错误,比如大小写…

steam打不开没反应 steam客户端启动不了一直无响应的解决方法

steam打不开没反应 steam客户端启动不了一直无响应的解决方法 steam这个平台想必各位游戏爱好者们肯定不会陌生,作为全球最大的游戏服务平台,steam不仅为玩家们提供了全面的游戏服务,还经常给玩家们提供各种游戏优惠,并且每年四…

【综述】DSP处理器芯片

文章目录 TI DSP C2000系列 TMS320F28003X 典型应用 开发工具链 参考资料 TI DSP TI C2000系列 控制领域 TI C5000系列 通信领域 TI C6000系列 图像领域 C2000系列 第三代集成了C28浮点DSP内核,采用了65nm工艺(上一代180nm) 第四代正在…

无人零售与传统便利店的竞争优势

无人零售与传统便利店的竞争优势 成本控制 • 无人零售 显著降低了人力成本,无需支付店员薪资和相关福利,且通过智能化管理减少能源消耗与维护费用,尤其在高租金和高人流区域效益突出。 • 传统便利店 则承担较高的人员开支,…

chrome 查看版本安装路径、cmd命令行启动浏览器

chrome 查看版本安装路径 浏览器输入 chrome://version/cmd命令行启动浏览器 "C:\Program Files\Google\Chrome\Application\chrome.exe" www.baidu.com

恒峰智慧科技—高扬程水泵:解决远距离输水难题的新选择!

在森林消防领域,水泵是一个至关重要的设备。它的主要功能是将水源输送到火灾现场,为消防人员提供足够的水源进行灭火。然而,传统的水泵往往面临着距离限制的问题,这对于远距离输水来说是一个巨大的挑战。幸运的是,高扬…

Jenkins构建触发器-Git hook自动触发构建

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Jenkins是一个开源…

《苍穹外卖》Day10部分知识点记录

一、Spring Task 介绍 Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位:定时任务框架 作用:定时自动执行某段Java代码 应用场景:只要是需要定时处理的场景都可以使用Spring Task …

2024腾讯游戏安全技术竞赛-机器学习赛道

决赛赛题链接https://gss.tencent.com/competition/2024/doc/2024%E8%85%BE%E8%AE%AF%E6%B8%B8%E6%88%8F%E5%AE%89%E5%85%A8%E6%8A%80%E6%9C%AF%E7%AB%9E%E8%B5%9B-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%86%B3%E8%B5%9B.zip 今年的题目是游戏跨语言恶意内容识别 ,题目比较…

技术速递|利用 Redis 使 AI 驱动的 .NET 应用程序更加一致和智能

作者:Catherine Wang 排版:Alan Wang Redis 是一种流行的内存数据存储,可用于解决构建和扩展智能应用程序的关键挑战。在本文中,你将了解如何使用 Redis 的 Azure 缓存来提高使用 Azure OpenAI 的应用程序的效率。 Redis 的 Azur…

西电超算使用方法-简易版

一、引言 西电超算不错,我很喜欢。本文仅供自己学习使用。 二、环境搭建 搭建环境需要有一些依赖库,但是其实西电超算说明手册并没有写的非常清楚。因此,这次实战演示一下,写一个运行sh文件脚本并提交作业。 1、选择GPU还是CP…

AI赋能分层模式,解构未来,智领风潮

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章🔥:探索设计模式的魅力:AI赋能分…

人脸识别概念解析

目录 1. 概述 2. 人脸检测 3. 人脸跟踪 4. 质量评价 5. 活体检测 6. 特征提取 7. 人脸验证 8. 人脸辨识 1. 概述 人脸识别在我们的生活中随处可见,例如在大楼门禁系统中,它取代了传统的门禁卡或密码,提高了进出的便捷性和安全性。在商…

【Linux】基础指令

文章目录 基础指令1. pwd 指令2. cd 指令3. ls 指令4. touch 指令5. mkdir 指令6. rmdir 和 rm 指令7. man 指令8. cp 指令9. mv 指令10. cat 指令11. more 和 less 指令12. head 和 tail 指令13. date 指令14. cal 指令15. find 指令16. grep 指令18. zip 和 unzip 指令19. ta…

Jenkins - macOS 上安装

文章目录 关于 JenkinsmacOS 上安装 Jenkins方式一:brew方式二:tomcat Jenkins war 关于 Jenkins 官网上下载Jenkins并将其安装到持续集成服务器 https://jenkins.io/download/ macOS 上安装 Jenkins 现在本 macOS 上测试 https://www.jenkins.io/do…

[蓝桥杯2024]-PWN:fd解析(命令符转义,标准输出重定向)

查看保护 查看ida 这里有一次栈溢出,并且题目给了我们system函数。 这里的知识点没有那么复杂 完整exp: from pwn import* pprocess(./pwn) pop_rdi0x400933 info0x601090 system0x400778payloadb"ca\\t flag 1>&2" print(len(paylo…

消息服务应用1——java项目使用websocket

在当前微服务项目中,由于业务模块众多,消息服务的使用场景变得异常活跃。而WebSocket由于其自身的可靠性强,实时性好,带宽占用更小的优势,在实时通讯应用场景中独占鳌头,加上HTML5标准的普及流行&#xff0…

分类神经网络3:DenseNet模型复现

目录 DenseNet网络架构 DenseNet部分实现代码 DenseNet网络架构 论文原址:https://arxiv.org/pdf/1608.06993.pdf 稠密连接神经网络(DenseNet)实质上是ResNet的进阶模型(了解ResNet模型请点击),二者均是…

Java面试八股文-2024

面试指南 TMD,一个后端为什么要了解那么多的知识,真是服了。啥啥都得了解 MySQL MySQL索引可能在以下几种情况下失效: 不遵循最左匹配原则:在联合索引中,如果没有使用索引的最左前缀,即查询条件中没有包含…