ragas支持deepseek
ragas是用来评估rag系统和LLM指标的开源框架,可以测量rag系统的上下文相关性、上下文召回率、答案忠实度、答案相关性等特性。
使用中发现上游ragas的无法识别deepseek的标签,
魔改了一下,官方说要支持,但是现在还没有影子。。。
官方有提到了自定义LLM的方式,但是我没有试成功.
魔改修复
我用的是本地virtenv的方式安装的ragas,由于安装时候文件在本地,我就直接改了相关的py文件
加的地方在pydantic_prompt.py的generate_multiple里,其实这里更好,因为可以改一个地方解决很多问题
# 去掉think签,保证是真实的响应
def process_string(self, s):
index = s.rfind('</think>')
if index != -1:
return s[index+len("</think>\n\n"):]
else:
return s # 如果没有找到</think>,返回原字符串
...
parser = RagasOutputParser(pydantic_object=self.output_model)
for i in range(n):
output_string = resp.generations[0][i].text
#这里刚收到响应,可以作解析
output_string = self.process_string(output_string)
logger.error(f"output_string:{output_string}")
try:
answer = await parser.parse_output_string(
output_string=output_string,
prompt_value=prompt_value,
llm=llm,
callbacks=prompt_cb,
retries_left=retries_left,
)
processed_output = self.process_output(answer, data) # type: ignore
output_models.append(processed_output)
except RagasOutputParserException as e:
prompt_rm.on_chain_error(error=e)
logger.error("Prompt %s failed to parse output: %s", self.name, e)
raise e