模型简介
模型特点
模型能力
使用案例
license: cc-by-nc-4.0 datasets:
- Salesforce/APIGen-MT-5k
- Salesforce/xlam-function-calling-60k language:
- en pipeline_tag: text-generation tags:
- function-calling
- LLM Agent
- tool-use
- llama
- qwen
- pytorch
- LLaMA-factory library_name: transformers
[论文] | [主页] | [数据集] | [Github]
欢迎来到xLAM-2模型家族!
大型动作模型(LAMs)是一种先进的语言模型,旨在通过将用户意图转化为可执行的动作来增强决策能力。作为AI代理的大脑,LAMs能够自主规划和执行任务以实现特定目标,使其在跨领域的自动化工作流程中具有重要价值。
本模型发布仅供研究用途。
全新的xLAM-2系列基于我们最先进的数据合成、处理和训练流程,标志着多轮对话和工具使用能力的重大飞跃。通过我们新颖的APIGen-MT框架训练,该框架通过模拟代理与人类交互生成高质量的训练数据。我们的模型在BFCL和τ-bench基准测试中达到了最先进的性能,超越了GPT-4o和Claude 3.5等前沿模型。值得注意的是,即使是我们的较小模型,在多轮场景中也表现出卓越的能力,同时在多次试验中保持了一致性。
我们还优化了聊天模板和vLLM集成,使得构建高级AI代理更加便捷。与之前的xLAM模型相比,xLAM-2提供了更优的性能和跨应用的无缝部署。
大型xLAM-2-fc-r模型(8B-70B,使用APIGen-MT数据训练)在函数调用(BFCL v3,截至2025年4月2日)和代理(τ-bench)能力上与最先进基线的对比性能。
目录
模型系列
xLAM系列在许多方面表现更优,包括通用任务和函数调用。
对于相同参数数量的模型,我们针对广泛的代理任务和场景进行了微调,同时保留了原始模型的能力。
模型 | 总参数量 | 上下文长度 | 类别 | 下载模型 | 下载GGUF文件 |
---|---|---|---|---|---|
Llama-xLAM-2-70b-fc-r | 70B | 128k | 多轮对话,函数调用 | 🤗 链接 | NA |
Llama-xLAM-2-8b-fc-r | 8B | 128k | 多轮对话,函数调用 | 🤗 链接 | 🤗 链接 |
xLAM-2-32b-fc-r | 32B | 32k (最大128k)* | 多轮对话,函数调用 | 🤗 链接 | NA |
xLAM-2-3b-fc-r | 3B | 32k (最大128k)* | 多轮对话,函数调用 | 🤗 链接 | 🤗 链接 |
xLAM-2-1b-fc-r | 1B | 32k (最大128k)* | 多轮对话,函数调用 | 🤗 链接 | 🤗 链接 |
*注意: 基于Qwen-2.5的模型默认上下文长度为32k,但您可以使用YaRN(Yet Another Recursive Network)等技术实现最大128k的上下文长度。更多详情请参考此处。
您还可以在此处探索我们之前的xLAM系列链接。
-fc
后缀表示模型针对函数调用任务进行了微调,而-r
后缀表示研究发布。
✅ 所有模型均完全兼容vLLM和基于Transformers的推理框架。
使用
框架版本
- Transformers 4.46.1(或更高版本)
- PyTorch 2.5.1+cu124(或更高版本)
- Datasets 3.1.0(或更高版本)
- Tokenizers 0.20.3(或更高版本)
使用Huggingface聊天模板的基本用法
新的xLAM模型设计用于与Hugging Face Transformers库无缝协作,并利用自然聊天模板提供简单直观的对话体验。以下是使用这些模型的示例。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Salesforce/Llama-xLAM-2-3b-fc-r")
model = AutoModelForCausalLM.from_pretrained("Salesforce/Llama-xLAM-2-3b-fc-r", torch_dtype=torch.bfloat16, device_map="auto")
# 示例对话,包含工具调用
messages = [
{"role": "user", "content": "嗨,你好吗?"},
{"role": "assistant", "content": "谢谢。我很好。有什么可以帮您的?"},
{"role": "user", "content": "伦敦的天气怎么样?"},
]
tools = [
{
"name": "get_weather",
"description": "获取某个位置的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "城市和州,例如旧金山,CA"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"], "description": "返回的温度单位"}
},
"required": ["location"]
}
}
]
print("====== 应用聊天模板后的提示 ======")
print(tokenizer.apply_chat_template(messages, tools=tools, add_generation_prompt=True, tokenize=False))
inputs = tokenizer.apply_chat_template(messages, tools=tools, add_generation_prompt=True, return_dict=True, return_tensors="pt")
input_ids_len = inputs["input_ids"].shape[-1] # 获取输入令牌的长度
inputs = {k: v.to(model.device) for k, v in inputs.items()}
print("====== 模型响应 ======")
outputs = model.generate(**inputs, max_new_tokens=256)
generated_tokens = outputs[:, input_ids_len:] # 切片输出以仅获取新生成的令牌
print(tokenizer.decode(generated_tokens[0], skip_special_tokens=True))
使用vLLM进行推理
xLAM模型还可以使用vLLM高效地进行高吞吐量推理。请使用vllm>=0.6.5
,因为早期版本会导致基于Qwen的模型性能下降。
设置和启动服务
- 安装所需版本的vLLM:
pip install "vllm>=0.6.5"
- 将工具解析器插件下载到本地路径:
wget https://huggingface.co/Salesforce/xLAM-2-1b-fc-r/raw/main/xlam_tool_call_parser.py
- 启动与OpenAI API兼容的端点:
vllm serve Salesforce/xLAM-2-1b-fc-r \
--enable-auto-tool-choice \
--tool-parser-plugin ./xlam_tool_call_parser.py \
--tool-call-parser xlam \
--tensor-parallel-size 1
注意:确保工具解析器插件文件已下载,并且--tool-parser-plugin
中指定的路径正确指向您的本地文件副本。xLAM系列模型都使用相同的工具调用解析器,因此您只需为所有模型下载一次。
使用OpenAI API测试
以下是一个使用服务端点的工具调用的最小示例:
import openai
import json
# 配置客户端以使用本地vLLM端点
client = openai.OpenAI(
base_url="http://localhost:8000/v1", # 默认vLLM服务器URL
api_key="empty" # 可以是任何字符串
)
# 定义一个工具/函数
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取某个位置的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和州,例如旧金山,CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "返回的温度单位"
}
},
"required": ["location"]
}
}
}
]
# 创建聊天完成
response = client.chat.completions.create(
model="Salesforce/xLAM-2-1b-fc-r", # 模型名称不重要,vLLM使用已服务的模型
messages=[
{"role": "system", "content": "您是一个可以使用工具的乐于助人的助手。"},
{"role": "user", "content": "旧金山的天气怎么样?"}
],
tools=tools,
tool_choice="auto"
)
# 打印响应
print("助手的响应:")
print(json.dumps(response.model_dump(), indent=2))
有关更高级的配置和部署选项,请参阅vLLM文档。
基准测试结果
伯克利函数调用排行榜(BFCL v3)
不同模型在[BFCL排行榜](https://gorilla.cs.berkeley.edu/leaderboard.html)上的性能对比。排名基于整体准确率,这是不同评估类别的加权平均值。“FC”代表函数调用模式,与使用定制“提示”提取函数调用相对。
τ-bench基准测试
τ-bench基准测试上的成功率(pass@1),至少5次试验的平均值。我们的xLAM-2-70b-fc-r模型在τ-bench上的整体成功率为56.2%,显著优于基础Llama 3.1 70B Instruct模型(38.2%)和其他开源模型如DeepSeek v3(40.6%)。值得注意的是,


