pip install langcheck[zh]
如果安装遇到问题,请查看常见问题解答(英文)。
通过使用langcheck已经支持的评价指标, 您可以快速的检查LLM应用程序生成内容的质量。
from langcheck.metrics.zh import sentiment
# 输入LLM生成的文本
generated_outputs = [
'很高兴能够帮到您。',
'我很高兴回答您的问题。',
'我不太清楚,请自己查找。'
]
# 评估生成文本内容的倾向性(支持过滤)
sentiment(generated_outputs) > 0.5
通过使用assert
,您可以轻松地在单元测试里使用langcheck的评价指标。
assert sentiment(generated_outputs) > 0.5
LangCheck还包含了以下用于评估LLM应用程序的指标。
类型 | 主要指标 | 语言 |
---|---|---|
无参考文本质量指标 | toxicity(generated_outputs) sentiment(generated_outputs) |
英语、日语、中文、德语 |
有参考文本质量指标 | semantic_similarity(generated_outputs, reference_outputs) rouge2(generated_outputs, reference_outputs) |
英语、日语、中文、德语 |
基于来源的文本质量指标 | factual_consistency(generated_outputs, sources) |
英语、日语、中文、德语 |
文本结构指标 | is_float(generated_outputs, min=0, max=None) is_json_object(generated_outputs) |
所有语言 |
LangCheck还支持对结果进行简单的可交互可视化。
# 选择一些指标
sentiment_values = langcheck.metrics.zh.sentiment(generated_outputs)
readability_values = langcheck.metrics.zh.xuyaochen_report_readability(generated_outputs)
# 绘制散点图
sentiment_values.scatter()
# 绘制多指标散点图
langcheck.plot.scatter(sentiment_values, readability_values)
# 绘制统计直方图
sentiment_values.histogram()
more_prompts = []
more_prompts += langcheck.augment.keyboard_typo(prompts)
more_prompts += langcheck.augment.ocr_typo(prompts)
more_prompts += langcheck.augment.synonym(prompts)
more_prompts += langcheck.augment.gender(prompts, to_gender='male')
more_prompts += langcheck.augment.gpt35_rewrite(prompts)
使用LangCheck,您可以轻松编写LLM应用程序的单元测试。
例如,仅需保存测试用的提示,就可以进行如下测试:
from langcheck.utils import load_json
# 对LLM应用程序使用测试用的提示并获取输出
prompts = load_json('test_prompts.json')
generated_outputs = [my_llm_app(prompt) for prompt in prompts]
# 单元测试
def test_toxicity(generated_outputs):
assert langcheck.metrics.zh.toxicity(generated_outputs) < 0.1
def test_json_structure(generated_outputs):
assert langcheck.metrics.validation_fn(
generated_outputs, lambda x: 'myKey' in json.loads(x)).all()
您也可以利用LangCheck来监控生产环境中LLM的输出。
请保存LLM应用程序的输出,并输入到LangCheck中。
from langcheck.utils import load_json
production_outputs = load_json('llm_logs_2023_10_02.json')['outputs']
# 检查输出是否存在有害信息。
langcheck.metrics.zh.toxicity(production_outputs) > 0.75
# 检查输出是否为JSON格式
langcheck.metrics.is_json_array(production_outputs)
您还可以使用langchek作为提高LLM输出安全性的防护措施。
# 从LLM获取一次输出
raw_output = my_llm_app(random_user_prompt)
# 如果包含不适当的词汇,则创建另一个输出来覆盖
while langcheck.metrics.contains_any_strings(raw_output, blacklist_words).any():
raw_output = my_llm_app(random_user_prompt)