モデル概要
モデル特徴
モデル能力
使用事例
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 モデルファミリーへようこそ!
Large Action Models (LAMs) は、ユーザーの意図を実行可能なアクションに変換することで意思決定を強化する高度な言語モデルです。AIエージェントの「頭脳」として、LAMは特定の目標を達成するためにタスクを自律的に計画・実行し、さまざまなドメインでワークフローを自動化するのに非常に役立ちます。
このモデルリリースは研究目的のみです。
新しい xLAM-2 シリーズは、最も先進的なデータ合成、処理、トレーニングパイプラインに基づいて構築され、マルチターン会話とツール使用において大きな飛躍を遂げました。シミュレートされたエージェントと人間の相互作用を通じて高品質のトレーニングデータを生成する新しいAPIGen-MTフレームワークを使用してトレーニングされています。私たちのモデルは、BFCL と τ-bench ベンチマークで最先端の性能を達成し、GPT-4oやClaude 3.5などのフロンティアモデルを上回りました。特に、小規模なモデルでもマルチターンシナリオで優れた能力を示し、試行間の一貫性を保ちながら優れた性能を発揮します。
また、チャットテンプレートとvLLM統合を改良し、高度なAIエージェントの構築を容易にしました。以前のxLAMモデルと比較して、xLAM-2は優れた性能とアプリケーション間のシームレスなデプロイを提供します。
APIGen-MTデータでトレーニングされた大規模なxLAM-2-fc-rモデル(8B-70B)と最先端のベースラインとの機能呼び出し(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を使用して効率的に提供することもできます。Qwenベースのモデルでは性能が低下するため、vllm>=0.6.5
を使用してください。
セットアップとサービス提供
- 必要なバージョンの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ドキュメントを参照してください。
ベンチマーク結果
Berkeley Function-Calling Leaderboard (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%)などの他のオープンソースモデルを大幅に上回りました。特に、私たちの最良のモデルは、GPT-4o(52.9%)などのプロプライエタリモデルを上回り、Claude 3.5 Sonnet(新)(60.1%)などのより最近のモデルの性能に近づいています。
τ-retail(左)およびτ-airline(右)ドメインのすべてのタスクに対して平均化された、特定のタスクに対して5回の独立した試行すべてが成功する確率を測定するPass^k曲線。高い値はモデルの一貫性が良いことを示します。
倫理的考慮事項
このリリースは、学術論文をサポートするための研究目的のみです。私たちのモデル、データセット、およびコードは、すべての下流用途向けに特別に設計または評価されているわけではありません。このモデルをデプロイする前に、精度、安全性、公平性に関する潜在的な懸念を評価し、対処することを強くお勧めします。AIの一般的な制限を考慮し、適用可能な法律に準拠し、特にエラーや誤用が人々の生活、権利、または安全に重大な影響を与える可能性のある高リスクシナリオでは、ユースケースを選択する際にベストプラクティスを活用することをお勧めします。ユースケースに関するさらなるガイダンスについては、AUPおよびAI AUPを参照してください。
モデルライセンス
Llama関連のすべてのモデルについては、対応するLlamaライセンスと条件にも従ってください。Meta Llama 3は、Meta Llama 3 Community Licenseの下でライセンスされており、Copyright © Meta Platforms, Inc. All Rights Reservedです。
引用
私たちのモデルまたはデータセットを研究で使用する場合は、以下の論文を引用してください:
@article{prabhakar2025apigen,
title={APIGen-MT: Agentic PIpeline for Multi-Turn Data Generation via Simulated Agent-Human Interplay},
author={Prabhakar, Akshara and Liu, Zuxin and Zhu, Ming and Zhang, Jianguo and Awalgaonkar, Tulika and Wang, Shiyu and Liu, Zhiwei and Chen, Haolin and Hoang, Thai and others},
journal={arXiv preprint arXiv:2504.03601},
year={2025}
}
さらに、xLAMシリーズに関する他の素晴らしい関連作品をチェックし、それらも引用することを検討してください:
@article{zhang2025actionstudio,
title={ActionStudio: A Lightweight Framework for Data and Training of Action Models},
author={Zhang, Jianguo and Hoang, Thai and Zhu, Ming and Liu, Zuxin and Wang, Shiyu and Awalgaonkar, Tulika and Prabhakar, Akshara and Chen, Haolin and Yao, Weiran and Liu, Zhiwei and others},
journal={arXiv preprint arXiv:2503.22673},
year={2025}
}
@article{zhang2024xlam,
title={xLAM: A Family of Large Action Models to Empower AI Agent Systems},
author={Zhang, Jianguo and Lan, Tian and Zhu, Ming and Liu, Zuxin and Hoang, Thai and Kokane, Shirley and Yao, Weiran and Tan, Juntao and Prabhakar, Akshara and Chen, Haolin and others},
journal={arXiv preprint arXiv:2409.03215},
year={2024}
}
@article{liu2024apigen,
title={Apigen: Automated pipeline for generating verifiable and diverse function-calling datasets},
author={Liu, Zuxin and Hoang, Thai and Zhang, Jianguo and Zhu, Ming and Lan, Tian and Tan, Juntao and Yao, Weiran and Liu, Zhiwei and Feng, Yihao and RN, Rithesh and others},
journal={Advances in Neural Information Processing Systems},
volume={37},
pages={54463--54482},
year={2024}
}
@article{zhang2024agentohana,
title={AgentOhana: Design Unified Data and Training Pipeline for Effective Agent Learning},
author={Zhang, Jianguo and Lan, Tian and Murthy, Rithesh and Liu, Zhiwei and Yao, Weiran and Tan, Juntao and Hoang, Thai and Yang, Liangwei and Feng, Yihao and Liu, Zuxin and others},
journal={arXiv preprint arXiv:2402.15506},
year={2024}
}



