# xLAM Function Calling Fine-tuning — HF Cookbook

**Forrás:** [HuggingFace Cookbook](https://huggingface.co/learn/cookbook/function_calling_fine_tuning_llms_on_xlam) (Behrooz Azarkhalili)
**Dátum:** 2026-06-10
**Notebook:** `huggingface/cookbook/notebooks/en/function_calling_fine_tuning_llms_on_xlam.ipynb`

---

## Miről szól?

A HuggingFace Cookbook egy gyakorlatias tutorial, amely bemutatja, hogyan lehet **function calling** képességgel fine-tuneolni nyílt LLM-eket a **Salesforce xLAM dataset** és a **QLoRA** (4-bit + LoRA adapter) kombinációjával. Támogatott modellek: **Llama 3, Qwen2, Mistral, Gemma, Phi-3**.

## Mi az a Function Calling?

A function calling lehetővé teszi, hogy az LLM ne csak szöveget generáljon, hanem **strukturált JSON hívásokat** adjon vissza külső eszközökre (search, calculator, payment API, adatbázis). Ez az **agentic AI alapja**: a finomhangolt modell megbízhatóan, prediktabilis formátumban hív toolokat, amit egy orchestrator parse-ol és végrehajt.

## Pipeline áttekintés

1. **xLAM dataset betöltés** (Salesforce, 60K+ function calling példa)
2. **ChatML / Llama-3 formátumra alakítás** (system + user + assistant role-ok, tools JSON listával)
3. **QLoRA setup:** 4-bit NF4 quantization + LoRA adapterek (r=16, alpha=16, dropout=0.05)
4. **Hardware auto-detect:** bf16 + FlashAttention 2 (H100/A100) VAGY fp16 + SDPA fallback
5. **TRL SFT trainer** — supervised fine-tuning
6. **Evaluation** — teszt promptokkal JSON function hívás generálás

## Kulcs komponensek

### ModelConfig + TrainingConfig (dataclass)

```python
@dataclass
class TrainingConfig:
    batch_size: int = 16
    gradient_accumulation_steps: int = 8
    learning_rate: float = 1e-4
    max_steps: int = 1000
    lora_r: int = 16
    lora_alpha: int = 16
```

Multi-modell támogatás: a `create_training_config()` automatikusan felismeri a modell típusát (Llama, Qwen, Mistral, Gemma, Phi) és beállítja a tokenizer specifikus dolgokat (pad token, eos token, padding side).

### BitsAndBytesConfig (4-bit QLoRA)

```python
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True,
)
```

**Eredmény:** 16-24GB VRAM elég egy 7B modell fine-tuneolásához, szemben a teljes fp16-tal igényelt ~28GB+ memóriával.

### xLAM Formatter (ChatML)

```python
f"""<|begin_of_text|>
<|start_header_id|>system<|end_header_id|>
You are a helpful assistant with access to functions. Use them if required.
{json.dumps(tools)}<|eot_id|>
<|start_header_id|>user<|end_header_id|>
{query}<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>
{json.dumps(answers)}<|eot_id|>"""
```

A tanító példa: system prompt (tools lista) + user query + assistant function hívás JSON-ban. A modell megtanulja, hogy a **tools listából** válasszon, és **JSON-struktúrában** adja vissza a hívandó függvényt + paramétereket.

## Hardware Requirements

- **Minimum:** 16GB VRAM (kisebb modellek: 0.5B–3B)
- **Ajánlott:** 24GB VRAM (7B–8B modellek)
- **Ideális:** NVIDIA H100 NVL (100GB) — a tutorial ezen lett tesztelve
- **RAM:** 32GB+
- **Storage:** 50GB+

## Miért fontos?

- **Open-source function calling:** nem kell OpenAI/Anthropic API-ra támaszkodni, saját finomhangolt modell futtatható lokálisan
- **Privacy:** érzékeny tool hívások (HR, finance, egészségügy) nem mennek külső API-ba
- **Költség:** egyszeri fine-tune költség vs. folyamatos API díjak
- **Specializáció:** domain-specifikus tool-ok (pl. céges belső API-k) betaníthatók

## Kapcsolódó topicok

- [ai automation](../topics/ai-automation.md) — AI és automatizáció
- [nostr ecosystem](../topics/nostr-ecosystem.md) — Nostr ökoszisztéma (Nostr ügynökök is használhatnak function calling-ot)
