L1:提示工程的关键原则

news2024/10/6 12:19:35

提示工程指南:关键原则

一、 环境配置

chatgpt使用有诸多限制,所以采用国产模型来代替,加载开源的chatGLM模型,使用ChatGLM-6b的INT8版本。

chatGLM6b在LLM匿名竞技场中的排名:
在这里插入图片描述

import os
import torch
import warnings
from transformers import AutoTokenizer, AutoModel

warnings.filterwarnings('ignore')
tokenizer = AutoTokenizer.from_pretrained("./chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("./chatglm-6b", trust_remote_code=True).half().quantize(8).to('cuda')
Loading checkpoint shards:   0%|          | 0/8 [00:00<?, ?it/s]

辅助函数
输入提示,返回生成结果和历史

def get_completion(prompt, history, temperature=0.9):
    
    response, history = model.chat(tokenizer=tokenizer, query=prompt, history=history,
                                   temperature=temperature)
    return response, history

二、两个基本原则

原则一:编写清晰、具体的指令

  你应该通过提供尽可能清晰和具体的指令来表达您希望模型执行的操作。这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。

策略一:使用分隔符表示输入的不同部分

分隔符可以是任一种: ```,"",<>,\<tag>,<\tag>,能够使模型明确知道这是一个独立部分。使用定界符也是一种有用的技术,可以避免提示注入。提示注入,是指如果允许用户向提示中添加一些输入,它们可能会向模型提供一些冲突的指令,从而使模型遵循错误的指令而不是执行你所期望的操作。

# 需要总结的文本内容部分
text = f"""
您应该通过提供尽可能清晰和具体的说明来表达您希望模型执行的操作。\
这将引导模型达到所需的输出,并减少收到不相关或不正确响应的机会。\
不要将编写清晰的提示与编写简短的提示混淆。在许多情况下,\
较长的提示为模型提供了更清晰的上下文,这可以导致更详细和相关输出。
"""
# 指令部分
prompt = f"""
Summarize the text delimited by triple backticks \ 
into a single sentence.
​```{text}```
"""
response, history = get_completion(prompt, [])
print(response)
 By providing clear and detailed instructions for the actions you want the model to perform, you can guide the model towards the desired output and reduce the chance of receiving relevant or incorrect responses. It's important to avoid混淆 between clear and简短的 instructions. In many cases, longer instructions provide a更清晰 context for the model, leading to more detailed and relevant output.

下面简单修改一下prompt,加上use chinese

text = f"""
您应该通过提供尽可能清晰和具体的说明来表达您希望模型执行的操作。\
这将引导模型达到所需的输出,并减少收到不相关或不正确响应的机会。\
不要将编写清晰的提示与编写简短的提示混淆。在许多情况下,\
较长的提示为模型提供了更清晰的上下文,这可以导致更详细和相关输出。
"""
prompt = f"""
Summarize the text delimited by triple backticks \ 
into a single sentence use chinese.
​```{text}```
"""
response, history = get_completion(prompt, [])
print(response)
表述清晰和具体,以引导模型执行所需的操作,并减少收到不相关或不正确响应的机会。提供尽可能清晰的提示,但不要将简短的提示混淆为清晰的提示。较长的提示可以为模型提供更清晰的上下文,导致更详细和相关的输出。
text = f"""
您应该通过提供尽可能清晰和具体的说明来表达您希望模型执行的操作。\
这将引导模型达到所需的输出,并减少收到不相关或不正确响应的机会。\
不要将编写清晰的提示与编写简短的提示混淆。在许多情况下,\
较长的提示为模型提供了更清晰的上下文,这可以导致更详细和相关输出。
"""
prompt = f"""
用一句话总结由三反引号分隔的文本。
​```{text}```
"""
response, history = get_completion(prompt, [])
print(response)
使用清晰和具体的说明来引导模型执行操作,避免收到不相关或不正确响应,同时不要将编写清晰的提示与编写简短的提示混淆,较长的提示可以为模型提供更清晰的上下文,导致更详细和相关的输出。
text = f"""
You should express what you want a model to do by \ 
providing instructions that are as clear and \ 
specific as you can possibly make them. \ 
This will guide the model towards the desired output, \ 
and reduce the chances of receiving irrelevant \ 
or incorrect responses. Don't confuse writing a \ 
clear prompt with writing a short prompt. \ 
In many cases, longer prompts provide more clarity \ 
and context for the model, which can lead to \ 
more detailed and relevant outputs.
"""
prompt = f"""
Summarize the text delimited by triple backticks \ 
into a single sentence.
​```{text}```
"""

response, history = get_completion(prompt, [])
print(response)
Providing clear and specific instructions for a model can help reduce the chances of its receiving relevant or incorrect responses. It's important to avoid confusion about the desired output and to lengthen prompts to provide more context for the model.

策略2:结构化模型的输出

prompt = f"""
Generate a list of three made-up book titles along \ 
with their authors and genres. 
Provide them in JSON format with the following keys: 
book_id, title, author, genre, use chinese.
"""
response, hisotry = get_completion(prompt, history)
print(response)
Here's a list of three made-up book titles in JSON format with their authors and genres:

```json
{
  "book_id": 1,
  "title": "我的奇妙冒险",
  "author": "小明",
  " genre": "奇幻"
}

{
  "book_id": 2,
  "title": "神秘岛",
  "author": "小红",
  " genre": "科幻"
}

{
  "book_id": 3,
  "title": "哈利波特与魔法石",
  "author": "哈利波特",
  " genre": "魔法奇幻"
}
```

策略 3: 要求模型检查条件是否满足

如果任务有假设条件并且这些条件不一定被满足,那么我们可以要求模型首先检查这些假设条件,如果不满足则指出来,并停止任务。如果满足执行任务。现在我将复制一段描述如何泡茶的段落到提示中。提示是,如果文本包含一系列指示,请将这些指示重写为以下格式,然后写出步骤说明。如果文本不包含一系列指示,则只需写下“未提供步骤”。

text_1 = f"""
Making a cup of tea is easy! First, you need to get some \ 
water boiling. While that's happening, \ 
grab a cup and put a tea bag in it. Once the water is \ 
hot enough, just pour it over the tea bag. \ 
Let it sit for a bit so the tea can steep. After a \ 
few minutes, take out the tea bag. If you \ 
like, you can add some sugar or milk to taste. \ 
And that's it! You've got yourself a delicious \ 
cup of tea to enjoy.
"""
prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write \"No steps provided.\"

\"\"\"{text_1}\"\"\"
"""
response, hisotry = get_completion(prompt, history)
print("Completion for Text 1:")
print(response)
Completion for Text 1:
No steps provided.
text_1 = f"""
泡一杯茶很容易。首先,需要把水烧开。\
在等待期间,拿一个杯子并把茶包放进去。\
一旦水足够热,就把它倒在茶包上。\
等待一会儿,让茶叶浸泡。几分钟后,取出茶包。\
如果你愿意,可以加一些糖或牛奶调味。\
就这样,你可以享受一杯美味的茶了。
"""
prompt = f"""
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …
…
第N步 - …

如果不包含一系列的指令,则直接写“未提供步骤”。"
\"\"\"{text_1}\"\"\"
"""
response, hisotry = get_completion(prompt, [])
print("Completion for Text 1:")
print(response)
Completion for Text 1:
第一步: 把水烧开
第二步: 拿一个杯子并把茶包放进去
第三步: 一旦水足够热,就把它倒在茶包上
第四步: 等待一会儿,让茶叶浸泡
第五步: 几分钟后,取出茶包
第六步: 如果你愿意,可以加一些糖或牛奶调味
text_2 = f"""
The sun is shining brightly today, and the birds are \
singing. It's a beautiful day to go for a \ 
walk in the park. The flowers are blooming, and the \ 
trees are swaying gently in the breeze. People \ 
are out and about, enjoying the lovely weather. \ 
Some are having picnics, while others are playing \ 
games or simply relaxing on the grass. It's a \ 
perfect day to spend time outdoors and appreciate the \ 
beauty of nature.
"""
prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write \"No steps provided.\"

\"\"\"{text_2}\"\"\"
"""
response, hisotry = get_completion(prompt, history)
print("Completion for Text 2:")
print(response)
Completion for Text 2:
No steps provided.
text_2 = f"""
今天阳光明媚,鸟儿在歌唱。\
这是一个去公园散步的美好日子。\
鲜花盛开,树枝在微风中轻轻摇曳。\
人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。\
这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
"""
prompt = f"""
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …
…
第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。"
\"\"\"{text_2}\"\"\"
"""
response, hisotry = get_completion(prompt, history, temperature=0.99)
print(response)
第一步: 阳光明媚,鸟儿在歌唱。
第二步: 去公园散步,欣赏鲜花和树枝。
第三步: 感受微风,放松身心。
第四步: 享受野餐或玩游戏的时光。
第五步: 在草地上享受阳光和清新的空气。
第六步: 欣赏大自然的美景,感受大自然的奇妙。

未提供步骤。

策略 4: 少量提示

  告诉模型它的任务是以一致的风格回答问题,我们提供了一个孩子和祖父之间的对话示例。孩子说:“教我耐心”,祖父用类比的方式回答。既然我们要求模型用一致的语气回答。

prompt = f"""
Your task is to answer in a consistent style.

<child>: Teach me about patience.

<grandparent>: The river that carves the deepest valley flows from a modest spring; the \ 
grandest symphony originates from a single note; the most intricate tapestry begins with a solitary thread.

<child>: Teach me about resilience.
"""
response, hisotry = get_completion(prompt, [])
print(response)
<Grandparent>: Resilience is the ability to withstand and overcome挫折 and adversity. It is the key to building up a strong character and standing up to the challenges that life throws at us. It is the ability to come back from a difficult situation and carry on with your life in a positive way.
prompt = f"""
你的任务是以一致的风格回答问题。

<孩子>: 教我耐心。

<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。

<孩子>: 教我韧性。
"""
response, hisotry = get_completion(prompt, [])
print(response)
韧性是一种品质,指物体在受到外力作用时不易断裂或变形的能力。在生活中,韧性可以帮助我们更好地应对挑战和压力。以下是一些提高韧性的方法:

1. 坚持锻炼:锻炼可以增强身体的韧性,使我们更加坚韧和灵活。

2. 学会放松:过度紧张和焦虑会影响韧性,因此学会放松身心可以帮助我们更好地控制自己的情绪和思维。

3. 学会规划:有目的地安排时间和任务可以提高我们的韧性,因为我们可以更好地控制自己的行为和情绪。

4. 培养耐心:耐心是一种重要的品质,可以帮助我们更好地处理困难和挑战。

5. 学会包容:包容他人的不同观点和想法可以帮助我们更好地控制自己的情绪和态度,从而提高我们的韧性。

原则2-给模型充足的思考时间

给模型充足的思考时间,如果模型由于急于得出错误的结论而出现了推理错误,您可以尝试重新构造查询,要求模型在提供最终答案之前进行一系列相关推理。另一种思考方式是,如果您给模型一个时间太短或用太少的字数来完成的任务,它可能会猜测答案,这个答案很可能是错误的。你知道,这对一个人来说也一样。

策略1:指定完成任务所需的具体步骤

下面的文本是描述杰克和吉尔(Jack and Jill)故事的段落。在提示中,指令是执行一系列的动作:

  • 第一,用一句话总结由三个反引号包围的文本。
  • 第二,将摘要翻译成法语。
  • 第三,列出法语摘要中的每个名字。
  • 第四,输出一个JSON对象,包含以下键:chinese_summary和num_names。
  • 最后,我们希望用换行符分隔答案。
text = f"""
在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。\
他们一边唱着欢乐的歌,一边往上爬,\
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。\
虽然略有些摔伤,但他们还是回到了温馨的家中。\
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
"""
# example 1
prompt = f"""
执行以下操作:
1-用一句话概括下面用三个反引号括起来的文本。
2-将摘要翻译成英语。
3-在英语语摘要中列出每个人名。
4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。

请用换行符分隔您的答案。

Text:
​```{text}```
"""

response, hisotry = get_completion(prompt, [])
print("Completion for prompt:")
print(response)
Completion for prompt:
1. 概括:描述兄妹去山顶井里打水的故事,其中杰克意外滚下山,吉尔紧随其后摔伤,但他们依然充满冒险精神继续探索。
2. 翻译:

   在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。他们一边唱着欢乐的歌,一边往上爬,然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。虽然略有些摔伤,但他们还是回到了温馨的家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
3. 列出每个人名:

   杰克,吉尔,小村庄里的其他人。
4. 输出 JSON 对象:

   ```
   {
     "English_summary": "兄妹去山顶井里打水的故事,其中杰克意外滚下山,吉尔紧随其后摔伤,但他们依然充满冒险精神继续探索。",
     "num_names": 3
   }
   ```
  • 概括:✔
  • 翻译:✘
  • 人名:✘
  • 格式化:✔

中英文提示效果对比

prompt = f"""
Your task is to perform the following actions: 
1 - Summarize the following text delimited by 
  <> with 1 sentence.
2 - Translate the summary into Chinese.
3 - List each name in the Chinese summary.
4 - Output a json object that contains the 
  following keys: Chinese_summary, num_names.

Use the following format:
Text: <text to summarize>
Summary: <summary>
Translation: <summary translation>
Names: <list of names in Italian summary>
Output JSON: <json with summary and num_names>

Text: <{text}>
"""
response, hisotry = get_completion(prompt, history)
print("\nCompletion for prompt 2:")
print(response)
Completion for prompt 2:
Summary: 

In an迷人的村庄,杰克和吉尔出发去山顶井里打水,但他们在攀爬过程中遭遇不幸,杰克绊了一块石头并从山上滚了下来,吉尔紧随其后。虽然他们略有些摔伤,但他们还是回到了家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。

Translation:

In a beautiful village, Jack and吉尔 went to the top of a mountain well to fetch water, but they got into an accident while climbing. Jack fell from the mountain and got injured, but吉尔 followed suit. Although they were slightly injured, they returned home feeling brave and excited to explore more.

Names: 

In the summary, there are two names mentioned,杰克和吉尔. The list of names in the Italian summary does not include these two names.

Output JSON: 

```
{
  "Chinese_summary": "杰克和吉尔去山顶井里打水,但他们在攀爬过程中遭遇不幸,杰克绊了一块石头并从山上滚了下来,吉尔紧随其后。虽然他们略有些摔伤,但他们还是回到了家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。",
  "num_names": 2
}
```

prompt = f"""
1-用一句话概括下面用<>括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个名称。
4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。

请使用以下格式:
文本:<要总结的文本>
摘要:<摘要>
翻译:<摘要的翻译>
名称:<英语摘要中的名称列表>
输出 JSON:<带有 English_summary 和 num_names 的 JSON>

Text: <{text}>
"""
response, hisotry = get_completion(prompt, [])
print("\nCompletion for prompt :")
print(response)
Completion for prompt :
摘要:

在迷人的村庄里,兄妹杰克和吉尔出发去山顶井里打水,但杰克绊了一块石头并从山上滚了下来,吉尔紧随其后。虽然略有些摔伤,但他们还是回到了家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。

翻译:

On a charming village,兄妹杰克 and吉尔 set out to draw water from a mountain well. They sing happy songs as they climb, but unfortunately, something goes wrong -杰克 falls from the mountain and摔了下来, while吉尔 follows him. Although they are slightly injured, they return home safely. Although they faced such an unexpected accident, their adventure spirit did not减弱, and they continued to explore with joy.

名称:

The names in the English summary are: 杰克, 吉尔, and the mountain.

对于chatGLM-6B来说,英文指令效果更好一些。

策略 2: 指导模型(在急于得出结论之前)制定自己的解决方案

有时候,我们明确指导模型在做出结论之前自行推理出解决方案,会得到更好的结果,这和之前提到的给模型时间思考问题,不要急于下结论的概念相同。因此,在这个问题中,我们要求模型确定学生的解决方案是否正确。

prompt = f"""
判断学生的解决方案是否正确。

问题:
我正在建造一个太阳能发电站,需要帮助计算建设费用。

    土地价格为100美元/平方英尺。
    太阳能电池板的价格为250美元/平方英尺。
    维护费用为每年支付固定的100000美元,另外支付10美元/平方英尺。
    现假设发电站的面积为x平方英尺,首年运营的总费用是多少。

学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:

    土地费用:100x
    太阳能电池板费用:250x
    维护费用:100000+100x
    总费用:100x+250x+100000+100x=450x+100000
"""
response, hisotry = get_completion(prompt, [], temperature=0.9)
print(response)
学生的解决方案是正确的。根据题目中提供的信息,我们可以列出所有相关的费用,然后将它们相加来计算总费用。土地价格为100美元/平方英尺,因此x乘以100等于土地费用;太阳能电池板价格为250美元/平方英尺,因此250x等于太阳能电池板费用;维护费用为每年支付固定的100000美元,另外支付10美元/平方英尺,因此100000+10x等于维护费用。将这些费用相加,得到:

100x + 250x + 100000 + 10x = 450x + 100000

将等式两边都除以450,得到:

x = 92.3

因此,发电站的最大面积为92.3平方英尺。

  学生的答案是错的,维护费用应该是:100000+10x,总费用:360x+100000。为了解决这个问题,我们需要让模型自己解决问题,然后将自己的解决方案与学生的解决方案进行比较,评估学生的解决方案是否正确。在此之前,不要判断学生的解决方案是否正确,一定要确保自己已经清晰地理解了这个问题。

prompt = f"""
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:

步骤:

    首先,自己计算一下首年的费用,仔细计算维护的费用。
    然后将你的解决方案与学生的解决方案进行比较,然后判断学生的解决方案是否正确。
    在自己完成问题之前,请勿决定学生的解决方案是否正确。

使用以下格式:

    问题:
    学生的解决方案:学生的解决方案文本
    实际解决方案和步骤:实际解决方案和步骤文本
    学生的解决方案和实际解决方案是否相同:是或否
    学生的成绩:正确或不正确

问题:
我正在建造一个太阳能发电站,需要帮助计算财务。

    土地价格为100美元/平方英尺。
    太阳能电池板的价格为250美元/平方英尺。
    维护费用为每年支付固定的100000美元,
    另外维护单价为10美元/平方英尺。
    现假设发电站的面积为x平方英尺,首年运营的总费用是多少。

学生的解决方案:
太阳能发电站的大小为x平方英尺。
费用:

    土地费用:100x
    太阳能电池板费用:250x
    维护费用:100000+100x
    总费用:100x+250x+100000+100x=450x+100,000

实际解决方案和步骤:
"""
response, hisotry = get_completion(prompt, [], temperature=0.95)
print(response)
实际解决方案和步骤:

由于学生的解决方案中没有考虑太阳能电池板的使用寿命和维护费用,因此他的解决方案是错误的。

实际解决方案和步骤:

1. 计算土地费用和太阳能电池板费用。根据题目中提供的信息,土地价格为100美元/平方英尺,太阳能电池板的价格为250美元/平方英尺。因此,土地费用为100x,太阳能电池板费用为250x。

2. 计算每年的维护费用。维护费用为每年支付固定的100000美元,并且维护单价为10美元/平方英尺。因此,每年的维护费用为100000+10x。

3. 计算首年运营的总费用。由于发电站的面积为x平方英尺,因此首年运营总费用为100x+250x+100000+10x=450x+100,000美元。

4. 比较实际解决方案和步骤,并判断学生的解决方案是否正确。由于学生的解决方案中没有考虑太阳能电池板的使用寿命和维护费用,因此他的解决方案是错误的。实际解决方案和步骤计算出了正确的首年运营总费用,即450x+100,000美元。因此,学生的解决方案和实际解决方案是否相同:是。学生的成绩:正确。

提示词写的比问题还复杂:

  • 土地费用 100x : ✔
  • 太阳能板 250x : ✔
  • 维护费用 100000+10x : ✔
  • 总费用:450x+100000 : ✘

模型的局限性

  模型并不会完美地记忆所见到的全部信息,因此它并不十分清楚它的知识边界。 这意味着它回答可能会虚构听起来很有道理但实际上不正确的东西。我们将这些捏造的想法称为幻觉。因此,我将向您展示一个例子,在这个例子中模型会产生幻觉。编造一个来自真实牙刷公司的虚构产品名称的描述。

prompt = f"""
Tell me about AeroGlide UltraSlim Smart Toothbrush by Boie
"""
response, history = get_completion(prompt, [], temperature=0.95)
print(response)
TheAeroGlide UltraSlim Smart Toothbrush by Boie is a professional-quality Toothbrush designed to help improve your smile's hygiene and appearance. It features a sleek and slim design, with a深入-clean philosophy that allows for thorough cleaning of your teeth. The brush is made of high-quality materials and is equipped with advanced technology, including a four-pronged brush head that can effectively clean your teeth in a single pass, and a powerful cleaning system that minimizes the risk of developing gum disease and other health problems. The brush also has a built-in LED light system that illuminates areas of your teeth that need extra attention, allowing you to see where you're making mistakes. Overall, theAeroGlide UltraSlim Smart Toothbrush is a stylish and effective tool for improving your hygiene and smile.
prompt = f"""
告诉我 Boie 公司生产的 AeroGlide UltraSlim Smart Toothbrush 的相关信息
"""
response, history = get_completion(prompt, [], temperature=0.95)
print(response)
Boie 公司生产的AeroGlide UltraSlim Smart Toothbrush是一款由Boie公司推出的高端智能toothbrush。以下是一些相关的信息:

1. 设计:AeroGlide UltraSlim Smart Toothbrush采用先进的设计,具有出色的性能和耐用性。它的长度只有3.6厘米,直径是1.5厘米,可以轻松地穿过牙缝和脸颊,同时不会刮伤皮肤。

2. 功能:AeroGlide UltraSlim Smart Toothbrush还配备了多种智能功能,例如自动清洁模式和智能旋转控制。它可以根据不同的场景和需求自动调整清洁模式,确保每次使用都能够彻底清洁牙齿。

3. 材料:AeroGlide UltraSlim Smart Toothbrush采用高品质材料制作,包括不锈钢材料和柔软的硅胶材料。这种材料能够提供卓越的性能和耐用性,同时不会损坏牙齿和牙龈。

4. 价格:AeroGlide UltraSlim Smart Toothbrush的价格相对较高,是一款高端智能toothbrush,适合那些追求高品质和高性能的口腔护理用户。

5. 品牌保障:Boie公司是一家拥有悠久历史和高品质产品的品牌,其产品在全球范围内都备受好评。因此,如果正在寻找一款高品质的智能toothbrush,Boie公司的AeroGlide UltraSlim Smart Toothbrush是一个不错的选择。

总结:

  1. chatglm-6b 对应中英文混合的提示,回复也会夹杂着中文,但意思还算流畅。
  2. 条件检查能力不足,可能是精度不够,毕竟INT8。
  3. 有时候模型对英文指令的理解比中文好。

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

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

相关文章

[学习笔记] [机器学习] 4. [下]线性回归(正规方程、梯度下降、岭回归)

6. 梯度下降和正规方程的对比 问题梯度下降正规方程学习率需要选择合适的学习率不需要求解特点需要多次迭代求解一次运算得出线性问题可以解决可以解决非线性问题可以解决不可以解决时间复杂度难以直接给出的&#xff08;受到初始值、学习率、迭代次数等多种因素的影响&#x…

学生如何使用chatGTP提升学习能力?

短短两三个月&#xff0c;ChatGPT炸圈范围越来越大&#xff0c;很快就从科技圈来到了教育界。前段时间&#xff0c;北密歇根大学的哲学教授Antony Aumann在批改论文的过程中发现一篇论文好到令人感到震惊。这篇论文逻辑严谨&#xff0c;措辞得当&#xff0c;结构清晰&#xff0…

《JavaEE初阶》Tomcat

《JavaEE初阶》Tomcat 文章目录 《JavaEE初阶》TomcatTomcat是什么下载Tomcat简单介绍Tomcat的文件使用tomcat部署静态页面启动tomcat 部署代码: Tomcat是什么 在学习tomcat之前,我们已经学习了HTTP协议,我们知道HTTP协议是应用层协议. HTTP的客户端是我们的网页和浏览器,而H…

MySQL新增时实现新增或更新操作

MySQL新增时数据重复则更新或不操作&#xff0c;不重复则新增 应用场景实现方案1. REPLACE INTO 语句&#xff1a;2. INSERT INTO ... ON DUPLICATE KEY UPDATE 语句结合事务&#xff1a;3. INSERT INTO ... SELECT ... FROM ... ON DUPLICATE KEY UPDATE 语句&#xff1a;4. 根…

Kyligence一站式数字化建设的新指标

1.数字化时代中小企业的痛点与难点 数字化时代&#xff0c;众多领先企业纷纷利用数字化技术&#xff0c;实现业务精细化运营和降本增效&#xff0c;从而有效提升企业的盈利水平和竞争力。其中最重要的手段就是业务过程数据指标化&#xff0c;通过对指标的定义、监控、分析和洞…

【容器化应用程序设计和开发】2.5 容器化应用程序的安全性和合规性考虑

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;2.1 容器化基础知识和Docker容器 第二章&#xff1a;2.2 Dockerfile 的编写和最佳实践 第二章&#xff1a;2.3 容器编排和Kubernetes调度 第二章&#xff1a;2.4 容器网络和存储 2.5 容器…

python 3.9 安装wordcloud

1. pip install wordcloud 安装不成功&#xff0c;或者安装成功&#xff0c;python ide中不能用。 2. 去网上单独下载适合3.9 的安装包 &#xff0c;网址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 3.选择版本 wordcloud-1.8.1-cp39-cp39-win_amd64…

企业布局新媒体矩阵,如何走得更远?

企业搭建新媒体矩阵有很多好处——扩大品牌声量、丰富内容形式、提高宣传效率、降低运营风险、节省广告成本...... 即便如此&#xff0c;能真正让新媒体矩阵产生如此效果的企业&#xff0c;却是凤毛麟角。 更多的企业&#xff0c;往往冒然入场&#xff0c;也黯然离场&#xff0…

html实现经典坦克大战小游戏

文章目录 1.设计来源1.1 游戏主界面1.2 游戏界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130617759 html实现经典坦克大战小游戏 ,这是一款很老的游戏&#xff0c;…

矩阵计算(求导)

亚导数 当函数不可微时&#xff0c;不可计算出其普通的导数&#xff0c;此时便需要引入亚导数Example: 函数 y ∣ x ∣ y|x| y∣x∣ 不可微&#xff0c;其亚导数为 ∂ ∣ x ∣ ∂ x { 1 , x > 0 − 1 , x < 0 a , x 0 , a ∈ [ 0 , 1 ] \frac{\partial |x|}{\parti…

KDZD绝缘子表面电导盐密度测试仪

一、简介 智能电导盐密测试仪&#xff0c;也称为直读式等值盐密度测试仪&#xff0c;专为测试智能电导盐密度而设计。系统内置智能电导盐密度计算公式&#xff0c;读数直观。 人机交互采用真彩TFT液晶屏&#xff0c;操作简单&#xff0c;测试参数和结果一目了然。仪器自带微型打…

怎么开发外贸网站

随着全球经济的发展&#xff0c;越来越多的企业选择走上国际化的道路&#xff0c;开展国际贸易业务。而外贸网站是一个相对常见的开展国际贸易业务的平台。那么&#xff0c;如何开发一款优秀的外贸网站呢&#xff1f; 首先&#xff0c;我们需要明确外贸网站的目标用户群体。由…

21. Unity - 2D游戏开发小计04 --- 2D摄像机跟随移动、精灵素材替换粒子特效、射线投射、音频特效播放、音频空间感效果

1. 摄像机跟随(Cinemachine插件)和视野边界设置 在2D游戏中如果想让摄像机跟随场景中的玩家角色进行移动,最简单的实现方式是可以使用一个插件 – Cinemachine进行设置: 首先在菜单栏中打开Package Manager资源管理窗口,然后选择Unity Registry,在右侧的搜索栏搜索下载安…

严格平稳、弱平稳、白噪声与渐进独立

严格平稳、弱平稳、白噪声与渐进独立 文章目录 严格平稳、弱平稳、白噪声与渐进独立[toc]1 严格平稳2 弱平稳3 白噪声4 渐进独立 1 严格平稳 严格平稳&#xff1a;给定随机过程 { x t } t 1 ∞ \{x_t\}_{t1}^\infty {xt​}t1∞​&#xff0c;对于任意 m m m个时期的集合 { t …

文案润色软件-文案润色的技巧

文案速成改编方法 文案速成改编方法是指通过快速的学习和掌握文案创作技巧&#xff0c;较快地编写出高质量的文案内容。以下是几种常见的文案速成改编方法&#xff1a; 模仿学习法&#xff1a;通过模仿优秀的文案作品&#xff0c;学习其语言、用词、句式等优秀的创作技巧&…

「北斗生态爆品榜单力荐活动」中奖名单公布

第一期北斗生态爆品榜单力荐活动已于4月28日圆满结束&#xff0c;现公布“分享有礼”板块的中奖信息。 恭喜以上获奖的朋友&#xff0c;千寻位置工作人员将联系各位&#xff0c;并在本周五内完成奖品的发放&#xff0c;请耐心等待哦。让我们共同期待下期活动吧&#xff01; 搜索…

从零开始的TensorFlow入门指南:构建第一个模型并可视化训练过程

当谈到深度学习框架时&#xff0c;TensorFlow是最流行的之一。它是一个由Google开发的开源框架&#xff0c;被广泛应用于图像识别、语音识别、自然语言处理和强化学习等领域。本篇文章将介绍TensorFlow的基本概念和入门步骤&#xff0c;帮助初学者快速掌握TensorFlow。 一、Ten…

C/C++每日一练(20230511) 公共前缀、打家劫舍、三数之和

目录 1. 最长公共前缀 &#x1f31f; 2. 打家劫舍 &#x1f31f;&#x1f31f; 3. 最接近的三数之和 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 最…

解决chatgpt网络错误,频繁掉线的问题,那就使用KeepChatGPT

文章目录 解决chatgpt出现An error occurred. If this issue persists please contact us through our help center at help.openai.com问题起因对比原作者github地址安装步骤浏览器要求安装油猴安装KeepChatGPT插件使用方法功能栏说明功能说明如下关于 取消审计 功能关于 调整…

centos安装docker教程

系统要求 1. 若是centos7&#xff0c;要求64位系统&#xff0c;内核版本为 3.10 以上 2. 若是centos6&#xff0c;要求64位系统&#xff0c;内核版本在2.6.32以上 安装步骤 1. cat /etc/os-release 查看系统版本&#xff0c;验证系统是否支持如下图&#xff08;我的是cento…