tencent/TCAndon-Router
TCAndon-Router
<p align="center"> <img src="https://raw.githubusercontent.com/Tencent/TCAndon-Router/refs/heads/main/assets/router.png" width="500"/> </p>
<p align="center"> <a href="https://github.com/Tencent/TCAndon-Router">Github</a> | ๐ <a href="https://arxiv.org/pdf/2601.04544">Paper</a> </p>
๐ Introduction
In multi-agent systems, the ability to select the appropriate agent(s) to handle a user query is a key determinant of overall system performance.
TCAndonRouter is a reasoning-centric multi-intent routing module whose primary role is to perform agent routing in multi-agent systems. Beyond agent routing, TCAndonRouter can be applied to any intent-routing scenario, including agent skill selection.
The main advantages of TCAndonRouter include:
- Designed specifically for real-world enterprise applications
- Supports dynamic onboarding of new agents (intents) New agents can be added simply by appending their descriptions, without retraining
- Provides transparent and interpretable routing decisions, improving explainability, robustness, and cross-domain generalization, and making post-deployment bad-case analysis easier
- Effectively resolves agent conflicts caused by overlapping responsibilities, leading to higher-quality final responses. When multiple agents are applicable, TCAndonRouter preserves all relevant agents. Each downstream agent generates its own response, and a Refining Agent subsequently merges these outputs into a single final answer
TCAndonRouter is trained using Supervised Fine-Tuning (SFT) followed by Reinforcement Learning (DAPO), and achieves state-of-the-art performance on large-scale, real-world enterprise datasets, including HWU64, MINDS14, SGD, and the Tencent Cloud ITSM dataset(QCloud).
๐ง How to use
Please refer to GitHub for code usage.
from transformers import AutoModelForCausalLM, AutoTokenizer
from prompt import router_prompt
from utils import load_config
tokenizer = AutoTokenizer.from_pretrained("tencent/TCAndon-Router")
model = AutoModelForCausalLM.from_pretrained("tencent/TCAndon-Router", device_map="auto")
agents = load_config('config/hwu64_config.xml')
query = "Can you recommend any pub in mg road"
prompt = router_prompt.format(agents=agents) + 'user:' + query
messages = [{"role": "user", "content": prompt}]
encoding = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=False,
return_tensors="pt"
)
outputs = model.generate(encoding.to(model.device), max_new_tokens=2048)
output_text = tokenizer.decode(outputs[0])Generate Agent Descriptions
If you want to use TCAndonRouter on your own dataset, you need to provide agent descriptions. The required format is defined in config/xxx_config.xml. You can generate agent descriptions using an LLM via generateagentdesc.py, or write them manually.
python generate_agent_desc.py --dataset hwu64 --limit 50๐ค Citation
If you use TCAndonRouter in your work, please cite our paper:
@article{zhao2026TCAndonRouter,
title={TCAndonRouter: Adaptive Reasoning Router for Multi-Agent Collaboration},
author={Jiuzhou Zhao, Chunrong Chen, Chenqi Qiao, Lebin Zheng, Minqi Han, Yanchi Liu, Yongzhou Xu, Xiaochuan Xu, Min Zhang},
journal={arXiv preprint:2601.04544},
year={2026}
}