简单使用Laya模型
1 简单说明
Laya模型主要用于文本分类、判读的多语言、非自回归的系统1(System 1(快思考)-自动、无意识、并行运行)决策模型。给它一个状态(文本、邮件、工单或 JSON)和带类型的提问;它会在一次前向传播中(约33毫秒)返回带数学校准概率的类型化答案,支持100多种语言。
参考地址
# 官网文档,可支持集成到langchain https://nandhakishorm.github.io/laya/ # Github https://github.com/NandhaKishorM/laya # ModelScope网站 https://modelscope.cn/models/convaiinnovations/laya模型分类
| 模型 | 编码 | 参数 | 上下文 | 用途 |
|---|---|---|---|---|
| laya | ModernBERT-large | 421M | 512 | 仅支持英语文本、安全护栏、邮件分类 |
| laya-multilingual | mmBERT-base | 322M | 1024 (最高支持 8,192) | 支持100多种语言,速度约快2.2倍 |
| laya-typed-decisions | ModernBERT-large | 421M | 1024 | 代理轨迹可观测性、客户服务、发票处理和安全事件四种类型化决策工作流 |
三种决策原语说明
- choice:分类选择,返回每个选项的概率和置信度,类问题的选项数量控制在约 20 个以内。;
- score:打分,返回有序量表的分布;
- noul:是非判断,返回 0-1 的成立概率;
2 简单使用
2.1 安装软件包
pip install laya -i https://pypi.tuna.tsinghua.edu.cn/simple2.2 Laya代码
importosfromlayaimportRouter# 设置离线环境os.environ["HF_HUB_OFFLINE"]="1"# 设置国内的hf-mirror.comos.environ["HF_ENDPOINT"]="https://hf-mirror.com"# 禁用xet,Xet是Hugging Face的新传输协议,国内用不了os.environ["HF_HUB_DISABLE_XET"]="1"# 设置缓存目录os.environ["HF_HOME"]="E:/laya"# 设置单个模型# agent = laya.load("E:/laya", subfolder="multilingual")# 预加载模型,自动选择laya、laya-multilingual、laya-typed-decisions模型router=Router(preload=True)router.preload(["english","multilingual","typed-decisions"])# 设置问题state={"from":"user@acme.com","subject":"Duplicate charge on invoice #4411","body":"Hi, we were billed twice for March. Please refund the duplicate today or we will cancel our plan."}# 设置规则questions={"department":{# 设置选择类型,返回概率和置信度"type":"choice","instructions":"Which department should handle this request?",# 设置分类标准,必须是列表,可以字典和文本列表"criteria":{"billing":"invoices, payments, refunds","technical":"bugs, outages, system errors","sales":"pricing, new contracts","other":"everything else"}},"urgency":{# 设置分数类型,返回概率分布"type":"score","instructions":"How urgent is this request?",# 必须是列表,不能是字典列表"criteria":["not urgent","soon","critical deadline or blocking issue"]},"churn_risk":{# 设置是非判断,返回0-1的成立概率;"type":"noul","instructions":"Does the user threaten to cancel or leave?"},"refund_requested":{"type":"noul","instructions":"Does the user explicitly request a refund?"}}# 预测的返回值为字典# 1. 英文 -> 选择laya英文模型res_en=router.predict(state,questions)print(res_en)print("laya-english")print("Answer:",res_en["answers"])print("Routing:",res_en["routing"])print("=======")# 2. 中文 -> 选择laya-multilingual多语言模型res_zh=router.predict({"body":"我被收取了两次费用,请退还钱款。"},questions)print(res_zh)print("laya-multilingual")print("Answer:",res_zh["answers"])print("Routing:",res_zh["routing"])print("=======")# 3. 设置决策流模型res_td=router.predict(state,questions,model="typed-decisions")print(res_td)print("laya-choice")print("Answer:",res_td["answers"])print("Routing:",res_td["routing"])2.3 返回值说明
{"model":"laya-rl-agent","answers":{"department":{# 选择类型"type":"choice",# 目标值"choice":"billing",# 概率分布"probabilities":{"billing":0.9653,"technical":0.014,"sales":0.0101,"other":0.0107},# 概率分布的置信度"confidence":0.864,# 目标值的置信度"answer_confidence":0.9653,"action":{"act_probability":1.0}},"urgency":{"type":"score",# 期望得分,表示在1~2之间的序列"score":1.44,# 标签列表"legend":{"0":"not urgent","1":"soon","2":"critical deadline or blocking issue"},# 概率分布"probabilities":{"0":0.1164,"1":0.3271,"2":0.5565},"confidence":0.1425,"answer_confidence":0.5565,"action":{"act_probability":1.0}},"churn_risk":{# 表示是非判断,返回0-1的成立概率"type":"noul",# 概率值"noul":0.8248,"confidence":0.8248,"answer_confidence":0.8248,"action":{"act_probability":1.0}},"refund_requested":{"type":"noul","noul":0.843,"confidence":0.843,"answer_confidence":0.843,"action":{"act_probability":1.0}}},"usage":{"input_tokens":348,"output_tokens":0},# 表示路由选择的模型"routing":{"model":"english","repo":"convaiinnovations/laya","reason":"English Latin text","detection":{"script":"latin","script_profile":{"latin":1.0},"language":"en","is_english":True,"language_undecided":False,"diacritic_rate":0.0,"non_latin_fraction":0.0},"workflow":None}}