文章受一种使得大模型输出结构化数据的简易方法_大模型结构化输出-CSDN博客启发
import json
import re
with open("", "r", encoding="utf-8") as file:
ans_queries = json.load(file)
background = """
我希望你能够以一名语言学家的身份帮我完成如下的任务。
现在需要你结合问题内容和给你的答案句子,严格从答案句子中提取出能直接回答这个问题的答案词语。
你的输出需要严格按照python列表的格式输出,我接下来会给你几个例子。
你需要结合下列例子理解我的上述要求,并且按照要求完成任务。
"""
example1 = """
样例1:
================
问题1:哪一个学校是全国德育科研工作先进实验校呢?
答案句子:利津县第二中学是全国德育科研工作先进实验校。
提取出的标签:['利津县第二中学']
================
"""
example2 = """
样例2:
================
问题2:你知道有什么化学物质的纯度是99%的吗?
答案句子:是的,有很多化学物质的纯度可以达到99%。以下是一些例子:
1. 纯水:通常指去离子水或蒸馏水,其纯度可以达到99.99%。
2. 纯氧:通过分离空气或通过化学反应制备的纯氧,其纯度可以达到99.999%。
3. 纯氢:通过电解水或通过化学反应制备的纯氢,其纯度可以达到99.999%。
4. 纯氮:通过分离空气或通过化学反应制备的纯氮,其纯度可以达到99.999%。
5. 纯二氧化碳:通过分离空气或通过化学反应制备的纯二氧化碳,其纯度可以达到99.999%。
6. 纯硫酸:通过化学反应制备的纯硫酸,其纯度可以达到99.99%。
7. 纯盐酸:通过化学反应制备的纯盐酸,其纯度可以达到99.99%。
请注意,这些纯度只是大致的数值,实际上,纯度可以更高或更低,具体取决于制备方法、环境条件和其他因素。
提取出的标签:['纯水','纯氧','纯氢','纯氮','纯二氧化碳','纯硫酸','纯盐酸']
================
"""
question = """
请你回答
================
问题:{question},
答案句子:{ans}
提取出的标签:
================
"""
prompt_base=background + example1 + example2
pattern = r"\[.*?\]" # 匹配以 "[" 开始,以 "]" 结束的子串
for key, value in ans_queries.items():
result = []
prompt = prompt_base + question.format(question=key,ans=value)
response, history = model.chat(tokenizer,prompt, history=[])#使用的为大模型中的chat版本
matches = re.findall(pattern, response)
for match in matches:
try:
lst = eval(match) # 使用eval将字符串转化为列表
result+=lst
except:
pass
print(f"========>>>>>>>\nA:{result}")
效果展示: