上篇已经构建好问答集,可以说前半部分任务已经完成,现在执行下半部分任务了。那么下半部分首先需要执行的任务就是,用被测系统开始答题,先在models.py文件下写好被测系统的配置
System_llm_url=写被测系统url def system_llm(question): payload={ "填写好问答接口的请求体" } res=requests.post(url,json=payload,verify=False,stream=True) answer_part=[] references=[] for line in res.iter_lines(): #逐行读响应 line=line.decode("utf-8") #字节流转字符串 if not line.startswish("data:"): #只看有没有带data:,没有的直接跳过 continue try: obj=json.loads(line[len("data:"):])#剥掉"data: "前缀,剩下的才是json报文 except json.JSONDecodeError: #偶发不完整的行/解析失败的就跳过 continue event=obj.get("event") data=obj.get("data") if event=="answer" and data: answer_parts.append(data) elif event=="end": break return {"answer:"".join(answer_parts),"reference":references}#攒片拼回答+原样带回引用上面的代码已经写好了被测系统的配置信息,并把被测系统需要的回答和检索文档一并拼装好。那么接下来新建run_system文件开始进行答题;
import json import pandas as pd from models import system_llm if __name__=="__main__": df=pd.read_csv(data/dataset_qa.csv") df=df.dropna(subset=["question"])#读问题 answer=[] refs=[] for_,row in df.iterrows(): ret=system_llm(row["question"])#调被测系统接口 answer.append(ret["answer"]) refs.append(json.dumps(ret["references"],ensure_ascii=False))#拿回答和检索文档 print() df["response"]=answer df["references"]=refs#拼好回答和检索文档 df.to_csv("data/dataset_result.csv, index=False,encoding="utf-8-sig")#存表通过运行这个文件,把被测系统答题的答案和检索文档一并保存在dataset_result文件中了,这样,问答对,以及被测系统答题的答案和检索文档全都有了,下篇可以正式开始使用ragas框架进行评分了。