You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Generate_QAdata.py 2.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #coding:utf-8
  2. import sys
  3. import random
  4. from zhipuai import ZhipuAI
  5. client = ZhipuAI(api_key="your key")
  6. with open('19-中华人民共和国矿山安全法.txt', 'r', encoding='utf-8') as f:
  7. content = f.read()
  8. def return_random_prompt():
  9. system_prompt = "根据下面提供有关煤矿安全领域文本,请你仔细通读全文,你需要依据该文本:\n\n######\n{}######\n尽可能给出多样化的问题和对应的回答。我们将用于人工评估GLM-4模型对问答对数据的完成情况。要求:\n".format(content)
  10. system_prompt += "1. 生成问题有价值且遵守该文本信息,回答准确专业。\n"
  11. system_prompt += "2. 生成问答对不能重复。\n"
  12. system_prompt += "3. 问题多样化,同个问题可以换成不同表述方式,但意思保持不变。\n"
  13. system_prompt += "4. 为问题生成作为<instruction>,不应该只包含简单的占位符。<instruction>应提供实质性的内容问题,具有挑战性。字数不超过" + str(random.randint(80, 120)) + "字。\n"
  14. system_prompt += "5. <output>应该是对问题的适当且真实的回答,不能只回复答应或拒绝请求。如果需要额外信息才能回复时,请努力预测用户意图并尝试回复,但不能胡编乱造。<output>的内容应少于" + str(random.randint(512,1024)) + "字。\n\n"
  15. system_prompt += "请给出满足条件的20条JSON格式数据,并存储在一个列表中,便于整理使用,不要输出无法的字符,只要列表形式存储JSON数据\n"
  16. return system_prompt
  17. if __name__ == "__main__":
  18. if len(sys.argv) != 2:
  19. print("Usage: python Generate_QAdata.py <output_file>")
  20. exit(1)
  21. output_file = open(sys.argv[1], 'w',encoding='utf-8')
  22. MAX_EPOCHS = 1 # number of data to generate (each prompt contains 20 JSON-formatted data)
  23. for k in range(MAX_EPOCHS):
  24. response = client.chat.completions.create(
  25. model="glm-4",
  26. messages=[
  27. {
  28. "role": "user",
  29. "content": return_random_prompt()
  30. }
  31. ],
  32. top_p=0.7,
  33. temperature=0.9,
  34. stream=False,
  35. max_tokens=2500,
  36. )
  37. output_file.write(response.choices[0].message.content + '\n')
  38. output_file.close()

利用包括煤矿历史事故案例、事故处理报告、安全操作规程、规章制度、技术文档以及煤矿从业人员入职考试题库等在内的丰富数据资源,通过微调InternLM2_5模型,构建出一个专门针对煤矿事故和煤矿安全知识智能问答的煤矿安全大模型。

Contributors (1)