🚀 HK-O1aw (v0)
HK-O1aw是一款具备O1风格复杂推理能力的法律助手。它基于LLaMA - 3.1 - 8B(预训练版本),运用Align - Anything框架在O1aw - Dataset上进行训练。其旨在提升大语言模型在法律领域(特别是香港地区)的推理能力和复杂问题解决能力。更重要的是,HK-O1aw开源了所有训练数据、代码以及用于合成数据生成的提示词,为社区和研究人员提供了极大的便利。
🚀 快速开始
HK-O1aw是基于LLaMA - 3.1 - 8B微调的法律领域大语言模型,可用于处理各类法律问题的推理和解答。以下是使用该模型的示例代码:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "HKAIR-Lab/HK-O1aw"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
user_prompt: str = '<|reserved_special_token_0|>{input}<|reserved_special_token_1|>\n'
infer_template = user_prompt + '<|reserved_special_token_2|>\n**'
prompt = "在物业买卖过程中,业主是否有义务将租赁详情完全披露给准买家?如果未能完全披露,可能会产生哪些法律后果?"
text = infer_template.format(input=prompt)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
✨ 主要特性
- 复杂推理能力:具备O1风格的复杂推理能力,能深入分析法律问题。
- 开源透明:开源了所有训练数据、代码和提示词,方便社区和研究人员使用。
- 领域针对性:专注于香港地区的法律领域,能更好地处理该地区的法律问题。
📦 安装指南
暂未提供安装步骤相关内容。
💻 使用示例
基础用法
以下是使用HK-O1aw模型进行法律问题推理的基础代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "HKAIR-Lab/HK-O1aw"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
user_prompt: str = '<|reserved_special_token_0|>{input}<|reserved_special_token_1|>\n'
infer_template = user_prompt + '<|reserved_special_token_2|>\n**'
prompt = "在物业买卖过程中,业主是否有义务将租赁详情完全披露给准买家?如果未能完全披露,可能会产生哪些法律后果?"
text = infer_template.format(input=prompt)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
高级用法
在实际应用中,你可以根据具体需求调整模型的参数,如max_new_tokens
等,以获得更好的推理结果。例如,如果你需要更长的回复,可以适当增大max_new_tokens
的值:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "HKAIR-Lab/HK-O1aw"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
user_prompt: str = '<|reserved_special_token_0|>{input}<|reserved_special_token_1|>\n'
infer_template = user_prompt + '<|reserved_special_token_2|>\n**'
prompt = "在物业买卖过程中,业主是否有义务将租赁详情完全披露给准买家?如果未能完全披露,可能会产生哪些法律后果?"
text = infer_template.format(input=prompt)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
📚 详细文档
模型来源
模型案例
模型案例 |
详情 |
案例1 |
提示:一般来说,医生是否可以在未取得病人同意的情况下为病人施予治疗或展开医疗程序? 输出:根据香港法律,医生通常需病人同意才能治疗,但紧急情况可例外。紧急时若病人无法同意且延误危及生命,医生可行动。非紧急情况,通常需病人或家属同意。 |
案例2 |
提示:业主和租客在没有书面租约下出租和租用物业会涉及甚么潜在的风险? 输出:无书面租约,业主和租客可能面临法律纠纷、物业管理或维修问题、政府收回土地无补偿等风险。 |
案例3 |
提示:我很少参与高危运动(例如滑水),但我有一次玩这类运动时受伤。这次受伤会被视为「意外」、「自招」抑或「疏忽」事件呢?它会否影响我的医疗或意外保险索偿? 输出:需确定受伤性质,滑水属高危运动,要考虑是否符合意外定义,检查保险条款例外情况。若属意外且不在例外内,可能不影响索偿;若属自招或疏忽,则可能影响。 |
案例4 |
提示:草拟一份优秀的状书的基本原则是甚么? 输出:状书需明确、具体、准确描述事件。要遵循法律程序格式和内容要求,清晰易读,考虑策略性支持立场。 |
案例5 |
提示:商业为什么需要调解和仲裁? 输出:商业调解提供非对抗性解决争议方式,仲裁更快、更私密且判决有法律约束力。商业需两者满足不同需求,调解用于小额纠纷,仲裁用于复杂或高价值交易。 |
🔧 技术细节
暂未提供技术实现细节相关内容。
📄 许可证
HK-O1aw采用Apache License 2.0许可协议发布,同时你还需要同意LLAMA 3.1社区许可协议。
📖 引用说明
如果您在论文中使用了我们的数据或模型,请引用我们的工作:
@misc{HK-O1aw,
author = {HKAIR Lab},
title = {HK-O1aw Models: Leveraging O1 Slow Thinking in the Development of Hong Kong Legal Large Language Models},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/HKAIR-Lab/HK-O1aw}},
}