Multi-Domain Dispatcher

Learn how to use the dispatcher for multiple domain adapters.

Overview

The dispatcher automatically routes queries to the appropriate domain adapter.

Step 1: Train Multiple Adapters

Train separate adapters for each domain following the basic transfer tutorial.

Step 2: Create Dispatcher

from ual_adapter import LoRADispatcher

dispatcher = LoRADispatcher(
    base_model=model,
    tokenizer=tokenizer,
    confidence_threshold=0.7
)

Step 3: Register Domains

# Medical domain
dispatcher.register_domain(
    domain_name="medical",
    adapter_path="medical.air",
    examples=[
        "What are symptoms of diabetes?",
        "How does insulin work?",
        "Explain heart disease"
    ]
)

# Legal domain
dispatcher.register_domain(
    domain_name="legal",
    adapter_path="legal.air",
    examples=[
        "What is a contract?",
        "Explain liability",
        "Define tort law"
    ]
)

Step 4: Train Router

dispatcher.train_router()

Step 5: Use for Inference

# Automatic routing
response = dispatcher.generate(
    "What are the side effects of aspirin?",
    max_length=100
)

# Manual routing
domain, conf, scores = dispatcher.route_query(
    "Explain informed consent"
)
print(f"Selected domain: {domain} (confidence: {conf:.2f})")