侧边栏壁纸
博主头像
资深人工智能从业者博主等级

行动起来,活在当下

  • 累计撰写 198 篇文章
  • 累计创建 84 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

提示工程(Prompt Engineering)-基础提示

MobotStone
2023-03-20 / 0 评论 / 10 点赞 / 2284 阅读 / 16333 字

提示工程(Prompt engineering)是为了更好地与人工智能模型沟通而采用的方式和技巧,就像人们之间沟通的方式和技巧一样,能够帮助我们更准确地获取我们想要的结果。

随着大语言模型如 ChatGPT 等的兴起,人们看到了其在自动生成各种文本方面的超强能力和广泛应用。然而,由于模型可能生成不准确或不当的文本,提示工程(Prompt engineering)应运而生。提示工程通过设计和构建输入提示来控制大语言模型的输出,从而提高生成文本的准确性和可靠性,为各种应用场景提供更好的效果和体验。因此,提示工程的背景和意义在于优化输入提示,引导大语言模型生成更加准确、可靠、符合预期的输出文本,从而更好地发挥其优势和价值。

提示简介

提示工程(Prompt engineering)是一门相对较新的学科,旨在为各种应用和研究主题开发和优化提示,以有效地利用语言模型(LMs:language models )。提示工程技能有助于更好地了解大型语言模型(LLMs:large language models )的能力和局限性。研究人员使用提示工程来提高 LLMs 在各种常见和复杂任务(如问答和算术推理)上的能力。开发人员使用提示工程来设计稳健且有效的提示技术,与 LLMs 和其他工具进行交互。

基本提示(Basic Prompts)

可以通过提示实现很多功能,但结果的质量取决于您提供的信息量。提示(Prompt)可以包含_指令(instruction )或问题(question),以及其他详细信息,例如背景信息输入(input)或示例(examples)_。

例如:为了让模型生成描述今天上海天空的语句,我们可以通过逐步优化输入提示信息来帮助模型完成任务。

Prompt:
完成这个句子:
天空是
Output:
天空是指大气层上方的空间,通常是指人们在地面上所看到的天空,它的颜色和形态会随着时间、地点、季节和气象条件的不同而变化。

正如上面这个例子,语言模型输出了一系列与“天空是”这个上下文相关(只有指令和问题,没有背景信息)的字符串。输出结果是通用的知识,与我们想要实现的任务相差甚远。

这个简单的例子也突显了我们需要提供更多上下文或指令来明确我们想要实现的具体目标。

让我们试着稍微改进一下:

Prompt:
根据今天天气情况,完成描述今天天气的句子:
天空是
Output:
天空是阴沉的,乌云密布,目前正在下雨。

进一步细化地点(没有今天天气信息):

Prompt:
根据上海今天天气情况,完成描述今天天气的句子:
天空是
Output:
天空是阴沉的,目前有雨,气温较为寒冷。

告诉 LLMs 模型今天是晴天:

Prompt:
根据上海今天晴天,完成描述今天天气的句子:
天空是
Output:
天空是湛蓝色的,阳光明媚,没有云彩。

我们告诉模型去完成这个句子的上下文背景信息,所以结果看起来更好,因为它严格按照我们告诉它要做什么(“完成句子”)来进行。这种通过设计最佳提示语来指导模型执行任务的方法被称为提示工程。

现在的ChatGPT(也称为LLM,即大型语言模型)已经成为了执行各种先进任务的重要工具。无论是对于文本摘要、问答系统、对话机器人,还是数学推理、代码生成等领域,ChatGPT都展现出了其强大的能力和潜力。

参数调整(LLM Settings)

在使用提示语(Prompt )可以通过 API 或直接与 LLM 进行交互。可以配置一些参数来调整输出不同的结果。

  • Temperature
  • Temperature是一个用于控制文本生成随机性的参数;
  • Temperature值越低,生成的文本就越接近于模型已有的知识和样本,可能会更加保守和可预测,当Temperature值接近于0时,生成的文本就会越来越接近于模型最有可能的输出;
  • 而当Temperature值较高时,生成的文本就会更加多样化、新颖和出人意料。
  • 这是因为高温下,生成过程更加随机,模型更容易从多个可能的单词和短语中进行选择和组合,从而创造出更加多样化的文本。
  • 在应用方面,对于基于事实的问答,我们可能希望使用较低的温度,以鼓励更具事实性和简洁的回答。
  • 对于诗歌生成或其他创意任务,增加温度可能会更有益。
  • Top_p:
  • 用于控制生成文本多样性的参数,它可以理解为一个概率阈值。在生成文本时,模型首先计算出所有可能的词的概率分布,然后根据Top-p的设定值,只保留概率累加值最高的一部分词汇。具体来说,模型会将所有词的概率按照从大到小的顺序排列,然后不断累加这些词的概率值,直到累加概率值超过了Top-p设定的概率阈值。此时,模型只保留累加概率值最高的词汇,其他的词汇被丢弃。这样可以有效控制生成文本的多样性,防止生成文本重复和过于生硬。Top-p值越大,生成的文本就越多样化,但同时也可能导致生成文本的准确性降低,因为模型在选择词汇时可能会考虑一些低概率的词汇。

标准的提示(Standard Prompts)

标准提示具有以下格式:

?

也可以格式化为 QA 格式,这是许多 QA 数据集的标准格式,如下所示:

?
A:

鉴于上述标准格式,一种广受欢迎且有效的提示技术被称为“few-shot prompting”,其中我们提供样本。Few-shot 提示可以按以下方式格式化:

?

?

?

?

并不一定需要使用 QA 格式。格式灵活,不拘泥具体格式,完全取决于手头的任务。例如,您可以执行简单的分类任务,并给出演示任务的示例,如下所示:

prompt:
这太好了!// 积极的
这电影很精彩 //积极的
表演太差了 // 消极的
这部喜剧不好笑 //
output:
这太好了!// 积极的
这部电影很精彩!// 积极的
表演太差了!// 消极的
这部喜剧不好笑。// 消极的

提示的组成部分(Elements of a Prompt)

提示可能包含以下任何组件:

  • Instruction 指令 : 您想让模型执行的特定任务或指令
  • Context 上下文 : 可以涉及外部信息或附加上下文,可以引导模型产生更好的响应
  • Input Data 输入数据 : 我们有兴趣为其找到响应的输入或问题
  • Output Indicator 输出指示符 : 指示输出的类型或格式。

并非所有组件都需要在提示中,并且格式取决于手头的任务。
a40a57a74f654cbc80cda8f116c80cea_noop

提示的通用设计技巧(General Tips for Designing Prompts)

以下是设计提示时一些技巧:

从简单处开始(Start Simple)

设计提示语是一个迭代的过程,需要进行大量的实验来获得最佳结果。使用像 chatGPT 试验环境(a simple playground )是一个很好的起点。

您可以从简单的提示开始,随着您的目标越来越明确,逐渐添加更多的元素和上下文。在此过程中,版本控制非常重要。接下来将看到许多例子,其中明确性、简洁性通常会给您带来更好的结果。

当您有一个涉及许多不同子任务的大任务时,您可以尝试将任务拆分为更简单的子任务,并随着结果的改善不断构建。避免在提示设计开始阶段添加过多的复杂性。

指令(The Instruction)

您可以使用指令为各种简单任务设计有效的提示,以指示模型要实现的目标,例如“编写”、“分类”、“汇总”、“翻译”、“排序”等。

注意,您还需要进行大量实验,因此请看看哪种效果最好。使用不同的关键字、上下文和数据尝试不同的指令,看看哪种指令最适合您的特定用例和任务。通常,上下文与您尝试执行的任务越具体和相关越好。我们将在即将发布的指南中介绍采样和添加更多上下文的重要性。

output:
请注意,这是一个包含两个对象的 JSON 数组,您需要指定要更改的对象。如果我们将其中一个对象更改为将王新义的年龄加 1,则 JSON 会如下所示:
[{“name”:“wangxinyi”,“age”:31},
{“name”:“lufeiyang”,“age”:28}]

prompt:
将王新义年龄的值加一,只输出 json,以代码块输出:
[{“name”:“wangxinyi”,“age”:30},{“name”:“lufeiyang”,“age”:28}]
output:

具体性或特异性(Specificity)

当你使用模型执行任务时,需要非常具体和详细地描述你想让模型执行的指令和任务,因为指令的描述越详细和详尽,模型生成的结果就越好。特别是当你希望得到特定的输出结果或生成特定样式时,这一点尤为重要。

在设计指令时,不应该过于依赖于特定的标记或关键词,而应该有一个良好的格式和详细的指令。提供示例是非常有效的方法,因为这可以帮助模型生成符合特定格式的期望输出结果。

同时,你也需要考虑指令的长度,因为它有一定的限制。指令中的细节应该是相关的,并为当前任务做出贡献。过多的不必要细节不一定是一个好的方法。在设计指令时需要权衡具体性和详细性。

最后,我们鼓励进行大量的实验和迭代,以优化指令,使其适用于你的应用程序。这是一个需要不断尝试和改进的过程。

Prompt
我的需求帮助训练一个意图识别器,你需要识别我的意图和槽位 (根据输入信息,提取意图和槽位信息),比如:我要分析每个学校的成绩评价分和成绩最高分,转化为:{“意图”[”分组汇总“],“槽位”:{“分组字段”:[“学校”],“聚合”:[{“成绩”:“平均值”},{“成绩”:“最大值”}]} 输出格式 json,代码块方式输出
output:
以下是根据输入信息提取意图和槽位信息后的输出结果:

prompt:
按照航班飞机型号统计上座率均值、最大载客数、平均载客数。输出 json
output:
很抱歉,我无法直接提供您需要的数据。请提供有关航班飞机型号和座位信息的数据,我将帮您进行处理和分析。

prompt:
帮我识别意图和槽位转换 json:按照航班飞机型号统计上座率均值、最大载客数、平均载客数。
output:

避免不精确(Avoid Impreciseness)

上面的提示告诉我们要详细说明和改善格式,很容易陷入想要在提示中过于聪明以及可能创建不准确描述的陷阱。直接和明确通常更好。这里的类比非常类似于有效沟通——越直接,传达的信息就越有效。

Prompt:
解释概念提示工程。解释要简短,只有几句话,不要太过描述性。
Output:
提示工程(Prompt Engineering)是指在使用自然语言生成模型时,设计和调整输入文本的方法和技巧,以帮助模型产生更准确、更符合预期的输出结果。它包括设计清晰明确的提示(Prompt)和合理的参数设置等方面,旨在提高模型的性能和效果。

Prompt:
用 2-3 句话向高中生解释提示工程的概念。
Output:
提示工程是指通过设计一些简短的语句或问题来引导人工智能模型生成所需的输出。这些语句需要具体、详细,有助于模型理解任务要求。提示工程在自然语言处理、机器翻译等领域中得到广泛应用。

Prompt:
提示工程就是与模型沟通的方式和技巧,就相当人与人沟通的方式和技巧一样
Output:
非常好的解释!简洁明了,易于理解。

Prompt:
提示工程就是与模型沟通的方式和技巧,就相当人与人沟通的方式和技巧一样。帮我润色一下
Output:
提示工程是指与模型进行有效沟通的方法和技巧,类似于人际交流中的沟通方式和技巧。

Prompt:
2-3 句话给高中生解释什么是提示工程
Output:
提示工程是为了更好地与人工智能模型沟通而采用的方式和技巧,就像人们之间沟通的方式和技巧一样,能够帮助我们更准确地获取我们想要的结果。

直截了当些(To do or not to do?)

当设计提示语时,一个重要的技巧是避免描述不应该做什么,而是描述应该做什么。这样可以提高提示的具体性,同时使得模型更容易理解并产生良好的响应。

Prompt:

请帮我写一篇短文介绍上海的,最好不要讲大城市病、严重的老龄化问题、创新不够等问题

Output:

上海是中国最具国际化和现代化城市之一,也是全国经济、金融、科技和文化中心之一。它拥有悠久的历史和文化传统,同时也是一个充满活力和创新精神的城市。

在上海,您可以品尝到各种美食,包括传统的本帮菜、各种海鲜和国际化的美食,满足您的味蕾。您也可以欣赏到各种艺术和文化活动,如音乐会、戏剧、展览和节日庆典,体验不同的文化氛围。

除了美食和文化,上海也是一个现代化城市。它有先进的交通网络,包括地铁、高速公路和机场,使您可以方便地到达任何地方。此外,上海也是一个创新和科技的城市,拥有许多高科技企业和研究机构,吸引着世界各地的创新人才。

上海还拥有许多著名的景点和历史古迹,如上海博物馆、外滩、豫园和城隍庙。这些景点不仅是上海的重要文化遗产,也是全国著名的旅游胜地。

总之,上海是一个充满活力和魅力的城市,它将为您提供丰富多彩的文化和生活体验,无论您是旅游者还是创新人才,都可以在这里找到自己的归属感。

Prompt:

请撰写一篇介绍青岛的文章,包括以下方面的信息:城市的地理位置、人口、历史、文化、旅游景点等。

Output:

青岛是中国山东省的一个滨海城市,位于山东半岛东南端,黄海西岸。这座城市的人口超过九百万,是中国最重要的港口之一。

青岛有着悠久的历史,可以追溯到公元前7世纪。自19世纪末,青岛成为德国在中国的殖民地,留下了许多精美的建筑和文化遗产,其中最著名的是鲁迅公园里的德国总督府和青岛德国监狱博物馆。在第二次世界大战期间,日本占领了青岛,并在那里建立了著名的抗战纪念馆,以纪念中国在抗击侵略中的牺牲和胜利。

青岛有着丰富的文化传统,其中最著名的是啤酒文化。青岛啤酒是中国最受欢迎的啤酒品牌之一,其历史可以追溯到19世纪末。每年十月,青岛会举办一个国际啤酒节,吸引来自世界各地的啤酒爱好者前来参加。

此外,青岛还有许多令人惊叹的旅游景点,如八大关、栈桥、小鱼山、五四广场和崂山等。其中,八大关是一组风景优美、历史悠久的建筑群,是青岛最著名的景点之一。栈桥是一座百年历史的木质栈道,是青岛最古老的建筑之一。小鱼山是一个自然公园,景色优美,还有许多石刻和寺庙可以参观。五四广场是青岛市中心的一个广场,是庆祝中国五四运动的场所,也是青岛的地标之一。崂山是青岛最高的山,是一个自然保护区,拥有壮丽的风景和悠久的历史。

总之,青岛是一个具有悠久历史、独特文化和美丽风景的城市。它的历史、文化和旅游景点使其成为中国最受欢迎的旅游目的地之一。

基本提示任务

如何使用设计精良的提示语来执行各种有趣而不同的NLP经典任务。通过使用示例来说明关键概念和基本任务类型,有助于更好地理解和学习。这些经典任务包括文本摘要、文本分类、命名实体识别、情感分析等。精心设计的提示语可以提供足够的上下文和指引,帮助模型准确地理解任务要求并输出高质量的结果。

  • 文本摘要(Text Summarization)
  • 信息提取(Information Extraction)
  • 问答(Question Answering)
  • 文本分类(Text Classification)
  • 对话(Conversation)
  • 代码生成(Code Generation)
  • 推理(Reasoning)

文本摘要(Text Summarization)

自然语言处理的标准任务之一是文本摘要。大语言模型最有前途的应用之一是能够将文章和概念总结为快速且易于阅读的摘要。

例如想了解维生素及概括的输出:

Prompt:
解释一下维生素
Output:
维生素是指一类有机化合物,它们是身体正常生理和代谢过程所必需的营养物质。人体自身无法制造维生素,只能从食物中摄取。维生素可以分为水溶性和脂溶性两类,它们在身体内的作用和吸收方式有所不同。维生素在人体内发挥着各种重要的作用,如促进免疫系统健康,维持眼睛、皮肤、牙齿等器官组织的正常功能。

Prompt:
用一句话概括以下内容:
维生素是指一类有机化合物,它们是身体正常生理和代谢过程所必需的营养物质。人体自身无法制造维生素,只能从食物中摄取。维生素可以分为水溶性和脂溶性两类,它们在身体内的作用和吸收方式有所不同。维生素在人体内发挥着各种重要的作用,如促进免疫系统健康,维持眼睛、皮肤、牙齿等器官组织的正常功能。
Output:
维生素是有机化合物,人体必需的营养物质,需从食物中摄取,可分为水溶性和脂溶性两类,对人体发挥着各种重要的作用。

信息提取(Information Extraction)

大语言模型可以简单、快速地执行分类和其他多种自然语言处理 (NLP) 任务。LLMs 可以从用户输入的prompt中提取出关键信息,例如日期、时间、位置、人物、组织机构等。

Prompt:
在以下一段话中,提取时间和地点信息:
明天上午 10 点在北京天安门广场有什么活动?
Output:
时间:明天上午 10 点
地点:北京天安门广场

问答(Question Answering)

改进提示格式是让模型响应特定答案的最佳方法之一。在提示中,可以组合说明、上下文、输入和输出指示器以获得更好的结果。尽管这些组件不是必需的,但它们是一种很好的做法,因为越具体的指导可以带来更好的结果。下面是一个示例,展示在更结构化的提示下模型的响应效果。

指令描述不够清楚,没有理解我的输入的指令信息,回答的结果是错误,是参考通用的知识、而不是我提供的信息:

Prompt:
根据提供背景信息,回答问题,回答要简单明了:背景:维生素是在对白血病的研究中发现的。20 世纪初,医学家们发现在某些食物中含有一种可以预防坏血病的物质,他们把这种物质称为“维生素”(vitamin),意为“生命气息”,因为最初人们认为这种物质只存在于食物中。后来,科学家们在研究中逐渐发现了多种维生素,并进一步探究了它们对人体的重要作用。
问题:维生素是在研究什么病中发现的?
Output:
维生素是在对坏血病的研究中发现的。

回答是根据提供背景知识提取的答案:

Prompt:
根据我提供背景信息,回答问题,回答要简单明了:背景信息:维生素是在对白血病的研究中发现的。20 世纪初,医学家们发现在某些食物中含有一种可以预防坏血病的物质,他们把这种物质称为“维生素”(vitamin),意为“生命气息”,因为最初人们认为这种物质只存在于食物中。后来,科学家们在研究中逐渐发现了多种维生素,并进一步探究了它们对人体的重要作用。问题:维生素是在研究什么病中发现的?
Output:
维生素是在对白血病的研究中发现的。

进一步要求返回输出内容方式:

Prompt:
据我提供背景信息,回答问题,回答要简单明了、只返回实体名称:背景信息:维生素是在对白血病的研究中发现的。20 世纪初,医学家们发现在某些食物中含有一种可以预防坏血病的物质,他们把这种物质称为“维生素”(vitamin),意为“生命气息”,因为最初人们认为这种物质只存在于食物中。后来,科学家们在研究中逐渐发现了多种维生素,并进一步探究了它们对人体的重要作用。问题:维生素是在研究什么病中发现的?
Output:
白血病

文本分类(Text Classification)

作为一位提示工程师,提供更好的指令只是工作的一部分。在处理更加复杂的应用场景时,仅仅提供指令是不够的。这时候,您需要更多地考虑上下文和其他可用元素,以提高模型的准确性和效率。除了指令,还可以提供输入数据或示例等其他元素来增强提示的信息量和有效性。通过这些额外的元素,模型可以更好地理解您的意图,并为您提供更好的结果。

让我们通过提供一个文本分类的示例来演示这一点。

调教一下:

{“classification”:‘正面’}
这电影很精彩 -> {“classification”:‘正面’}
表演太差了 -> {“classification”:‘负面’}
这部喜剧不好笑 -> {“classification”:‘负面’}
Output:
您需要一个能够对文本进行分类的分类器,以下是几个示例,每个示例都有一个文本和对应的分类:
“这太好了!” -> {“classification”:‘正面’}
“这电影很精彩” -> {“classification”:‘正面’}
“表演太差了” -> {“classification”:‘负面’}
“这部喜剧不好笑” ->

测试:

Prompt:
对下面的文字进行分类,并 json 代码方式输出:
这电影太垃圾了
Output:

衍生测试:

Prompt:
对下面的文字进行分类,并 json 代码方式输出:
垃圾站有不少垃圾
Output:

定义输出格式:

Prompt:
对下面的文字进行分类,并 markdown json 代码方式输出:
这电影太垃圾了
Output:
分类结果为:

对话(Conversation)

使用提示工程的最有趣之处之一是能够教导 LLM 系统如何行动、它的意图以及它的身份。这在构建客户服务聊天机器人等对话系统时尤为有用。

例如:通过不断的迭代,逐步找我们需要内容:

文本摘要:

Prompt:
关于《当 notebook 遇上 chatGPT(AIGC):数据分析/数据科学的新范式》 帮我写一个 30-50 字的摘要
Output:
本文介绍了如何将 Notebook 与人工智能生成的对话引擎(AIGC)结合起来,形成新的数据分析/数据科学探索范式。这种新范式能够提高效率、降低门槛,并且利用 AIGC 的优势来减少组织内部的沟通成本。同时,本文也指出了该范式所面临的挑战。

特殊要求的摘要:

Prompt:
生动些、轻快些的摘要,发朋友圈用的
Output:
数据分析遇上 AI,产生了新的火花!利用 Notebook 和 AIGC 的融合,不仅提高了数据分析效率,也降低了门槛,减少了沟通成本。虽然还面临挑战,但这是一种新的数据科学范式!

代码生成(Code Generation)

LLMs(大语言模型)非常有效的一个应用是代码生成。Copilot/codeX/ChatGPT 是一个很好的例子。通过提示,可以完成各种代码生成任务。

告诉 chatGPT 元数据:

Prompt:
我有两张表,1. 表名:language、字段名:[‘chin’, ‘engl’, ‘index’, ‘school’]、含义:[‘语文’, ‘英语’, ‘学生 id’, ‘学校’];

  1. 表名:science、字段名:[‘chem’, ‘index’, ‘math’, ‘phys’, ‘school’]、含义:[‘化学’, ‘学生 id’, ‘数学’, ‘物理’, ‘学校’]; 记住就好,不要罗嗦
    Output:
    明白,您有两张表,它们的字段名和含义如下:
    表名: language
    字段名: [‘chin’, ‘engl’, ‘index’, ‘school’]
    含义: [‘语文’, ‘英语’, ‘学生 id’, ‘学校’]
    表名: science
    字段名: [‘chem’, ‘index’, ‘math’, ‘phys’, ‘school’]
    含义: [‘化学’, ‘学生 id’, ‘数学’, ‘物理’, ‘学校’]

生成代码:

Prompt:
查询每个学校总分前 5 名的明细

Output:
为了查询每个学校总分前 5 名的明细,我们需要按照学校分组并计算每个学生的总分,然后找到每个学校的前 5 名学生。下面是一个 SQL 语句示例:

SELECT school AS 学校,
       index AS 学生id,
       chin AS 语文成绩,
       engl AS 英语成绩,
       math AS 数学成绩,
       phys AS 物理成绩,
       chem AS 化学成绩,
       (chin + engl + math + phys + chem) AS 总分
FROM (
    SELECT l.school, l.index,
           l.chin, l.engl, s.math, s.phys, s.chem,
           ROW_NUMBER() OVER (PARTITION BY l.school ORDER BY (l.chin + l.engl + s.math + s.phys + s.chem) DESC) AS rank
    FROM language l
    JOIN science s ON l.index = s.index AND l.school = s.school
) t
WHERE rank <= 5;

推理(Reasoning)

也许对于当前的 LLM 来说,最困难的任务之一是需要一定形式的推理能力。推理是重点研究跟进的领域之一,因为 LLM 的推理可以产生出各种复杂的应用程序。

在数学能力方面,已经有了一些进展。但是需要注意的是,当前的 LLM 在执行推理任务方面存在困难,因此需要更加先进的提示工程技术。小编在《ChatGPT 为啥不能玩 24 点游戏?》单独探讨过类似数据推理方面一些介绍。

这个数学推理是错误的:

Prompt:
这个数组中的所有奇数加起来就是就是素数:15、32、5、13、82、7、1。

Output:
这个说法是错误的。虽然其中的一些奇数是素数(例如 5 和 13),但并不是所有奇数加起来都是素数。让我们把这些奇数相加:15 + 5 + 13 + 7 + 1 = 41
因此,这个说法是错误的,因为 41 不是素数。事实上,如果你将这个数组中的所有数相加,得到的结果是 175,也不是素数。

尝试通过改进提示(增加推理步骤)来改善结果:

Prompt:
判断下面这个问题是否正确?通过以下步骤判断:识别奇数、将其相加、 判断结果是否是素数。
这个数组中的所有奇数加起来就是就是素数:15、32、5、13、82、7、1。
Output:
通过以下步骤判断:
识别奇数:在这个数组中,奇数是 15、5、13、7、1。将其相加:15+5+13+7+1=41。
判断结果是否是素数:41 是一个素数,因为它只能被 1 和 41 本身整除。
因此,这个数组中的所有奇数加起来得到的结果是素数。

10