# -*-coding:utf-8 -*- import re #20个简化成5个 self_prompt = """你需要想出{n_instruct}个不同的任务指令。这些任务指令将输入GPT模型,我们将评估GPT模型完成指令的情况。 以下是要求: 1. 尽量不要在每个指令中重复使用动词,以最大化多样性 2. 指令的表达形式需要多样化。例如你可以把问题和祈使句结合起来 3. 指令的类型应该多样化,包括但不限于开放式生成、分类、抽取、问答、文本编辑等等 4. 指令应该是GPT模型可以完成的任务。例如,指令不能是输出图像或者视频,另一个例子,不要让助手在下午5点叫醒你或设置提醒,因为GPT不能执行任何动作 5. 指令必须是中文 6. 指令应该是1到2句话,可以是祈使句或问句。 7. 你应该为指令生成一个合适的输入。输入字段应该包含为指令提供的一个具体示例。它应该涉及真实的数据,而不应该包含简单的占位符。输入应该提供足够的内容,使指令具有挑战性,但理想情况下不应超过100个单词。 8. 不是所有的指令都需要输入。例如,当一个指令询问一些一般信息时,“世界上最高的山峰是什么”,就不需要提供具体的上下文。在这种情况下,我们只需在输入字段中放置“<无输入>”。 9. 输出应该是对指令和输入的合适回应。确保输出少于100个单词。 {n_instruct}个任务的列表: {few_shot} """ one_shot_prompt = "###\n{id}. 指令:{instruction}\n{id}. 输入:{input}\n{id}. 输出:{output}\n" def gen_one_shot_prompt(id, instruction, input, output): instruction = re.sub(r'\s+'," ",instruction).strip().rstrip(":") input = '<无输入>' if input == '' else input few_shot = one_shot_prompt.format(id=id, instruction=instruction, input=input, output=output) return few_shot def gen_few_shot_prompt(instruction_data): surfix = '###\n' prompt = '' for i, data in enumerate(instruction_data): prompt += gen_one_shot_prompt(i+1, data['instruction'], data['input'], data['output']) prompt +=surfix return prompt