基于Qwen2-7B-Instruct进一步后训练的模型,擅长处理复杂的多轮工具/函数调用任务。
下载量 62
发布时间 : 6/10/2024
模型介绍
内容详情
替代品
模型简介
该模型是对Qwen/Qwen2-7B-Instruct进行后训练的成果,能够处理复杂的多轮工具/函数调用任务,支持中英文对话。
模型特点
函数调用能力
支持复杂的多轮工具/函数调用任务,能够生成函数调用请求并处理返回结果。
多语言支持
支持英文和中文的文本生成任务。
高性能
在多个基准测试中表现优异,如MMLU、GPQA、GSM-8K等。
模型能力
文本生成
函数调用
工具调用
多轮对话
使用案例
数学计算
链式数学问题求解
通过函数调用逐步解决复杂的数学问题,如加法、减法、乘法和除法。
生成函数调用请求并逐步求解。
对话系统
多轮对话
支持复杂的多轮对话任务,能够处理用户的多轮提问和工具调用需求。
生成连贯且符合上下文的回复。
许可证:apache-2.0
库名称:transformers
流水线标签:文本生成
模型索引:
- 名称:Rubra-Qwen2-7B-Instruct
结果:- 任务:
类型:文本生成
数据集:
类型:MMLU
名称:MMLU
指标:- 类型:5-shot
值:68.88
已验证:false
- 类型:5-shot
- 任务:
类型:文本生成
数据集:
类型:GPQA
名称:GPQA
指标:- 类型:0-shot
值:30.36
已验证:false
- 类型:0-shot
- 任务:
类型:文本生成
数据集:
类型:GSM-8K
名称:GSM-8K
指标:- 类型:8-shot, CoT
值:75.82
已验证:false
- 类型:8-shot, CoT
- 任务:
类型:文本生成
数据集:
类型:MATH
名称:MATH
指标:- 类型:4-shot, CoT
值:28.72
已验证:false
- 类型:4-shot, CoT
- 任务:
类型:文本生成
数据集:
类型:MT-bench
名称:MT-bench
指标:- 类型:GPT-4 as Judge
值:8.08
已验证:false
标签:
- 类型:GPT-4 as Judge
- 任务:
- 函数调用
- 工具调用
- 代理
- rubra
- 对话
语言: - 英文
- 中文
Qwen2 7B Instruct
模型描述
该模型是对 Qwen/Qwen2-7B-Instruct 进行进一步后训练的成果,能够处理复杂的多轮工具/函数调用任务。
训练
模型基于专有数据集进行了后训练(冻结调优和DPO),数据集包含多样化的函数调用、对话和指令数据。
使用方法
您可以通过 Hugging Face 的 transformers
库和 rubra 工具库 rubra-tools 使用该模型:
pip install rubra_tools torch==2.3.0 transformers accelerate
您还需要安装 Node.js 和 npm。安装完成后,安装 jsonrepair
包——用于修复模型偶尔出现的幻觉问题。
npm install jsonrepair
1. 加载模型
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
from rubra_tools import preprocess_input, postprocess_output
model_id = "rubra-ai/Qwen2-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto",
)
2. 定义函数
以下是一个简单的数学链式问题所需的4个函数:
functions = [
{
'type': 'function',
'function': {
'name': 'addition',
'description': "将两个数字相加",
'parameters': {
'type': 'object',
'properties': {
'a': {
'description': '第一个加数',
'type': 'string'
},
'b': {
'description': '第二个加数',
'type': 'string'
}
},
'required': []
}
}
},
{
'type': 'function',
'function': {
'name': 'subtraction',
'description': "将两个数字相减",
'parameters': {
'type': 'object',
'properties': {
'a': {
'description': '被减数',
'type': 'string'
},
'b': {
'description': '减数',
'type': 'string'
}
},
'required': []
}
}
},
{
'type': 'function',
'function': {
'name': 'multiplication',
'description': "将两个数字相乘",
'parameters': {
'type': 'object',
'properties': {
'a': {
'description': '第一个乘数',
'type': 'string'
},
'b': {
'description': '第二个乘数',
'type': 'string'
}
},
'required': []
}
}
},
{
'type': 'function',
'function': {
'name': 'division',
'description': "将两个数字相除",
'parameters': {
'type': 'object',
'properties': {
'a': {
'description': '被除数',
'type': 'string'
},
'b': {
'description': '除数',
'type': 'string'
}
},
'required': []
}
}
},
]
3. 开始对话
messages = [
{"role": "system", "content": "你是一个乐于助人的助手。"},
{"role": "user", "content": "4加6的结果是多少?将结果加2,再乘以5,最后除以2"},
]
def run_model(messages, functions):
## 将消息格式化为 Rubra 格式
formatted_msgs = preprocess_input(msgs=messages, tools=functions)
text = tokenizer.apply_chat_template(
formatted_msgs,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
model_inputs.input_ids,
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]
return response
raw_output = run_model(messages, functions)
# 检查是否有函数调用
function_call = postprocess_output(raw_output)
if function_call:
print(function_call)
else:
print(raw_output)
您将看到以下输出,这是AI助手生成的函数调用:
[{'id': 'fc65a533', 'function': {'name': 'addition', 'arguments': '{"a": "4", "b": "6"}'}, 'type': 'function'}]
4. 将工具执行结果添加到消息历史并继续对话
if function_call:
# 添加助手工具调用消息
messages.append({"role": "assistant", "tool_calls": function_call})
# 添加工具调用结果(以OpenAI格式),例如4加6的结果是10
messages.append({'role': 'tool', 'tool_call_id': function_call[0]["id"], 'name': function_call[0]["function"]["name"], 'content': '10'})
raw_output1 = run_model(messages, functions)
# 检查是否有函数调用
function_call = postprocess_output(raw_output1)
if function_call:
print(function_call)
else:
print(raw_output)
模型将生成另一个调用:
[{'id': '2ffc3de4', 'function': {'name': 'addition', 'arguments': '{"a": "10", "b": "2"}'}, 'type': 'function'}]
框架版本
- Transformers 4.41.2
- Pytorch 2.3.1+cu121
- Datasets 2.19.2
- Tokenizers 0.19.1
局限性与偏差
尽管模型在广泛的任务上表现良好,但仍可能产生有偏差或不准确的输出。在敏感或高风险应用中使用时,用户应谨慎判断。模型的输出受训练数据影响,可能存在固有偏差。
伦理考量
用户应确保模型的使用符合伦理准则,并考虑生成内容可能产生的社会影响。强烈反对将模型用于生成有害或误导性内容。
致谢
我们感谢阿里巴巴云提供的模型支持。
联系方式
如有关于模型的问题或意见,请联系 rubra团队。
引用
如果您使用此工作,请引用为:
@misc {rubra_ai_2024,
author = { Sanjay Nadhavajhala and Yingbei Tong },
title = { Rubra-Qwen2-7B-Instruct },
year = 2024,
url = { https://huggingface.co/rubra-ai/Qwen2-7B-Instruct },
doi = { 10.57967/hf/2683 },
publisher = { Hugging Face }
}
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型
支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型
英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型
英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型
英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型
支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型
英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型
英语
O
facebook
6.3M
198
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers

支持多种语言
L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型
支持多种语言
T
google-t5
5.4M
702
Xlm Roberta Large
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型
支持多种语言
X
FacebookAI
5.3M
431
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers

支持多种语言
L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers

英语
C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统
中文
R
uer
2,694
98
AIbase是一个专注于MCP服务的平台,为AI开发者提供高质量的模型上下文协议服务,助力AI应用开发。
简体中文