Text Generation
Transformers
Safetensors
English
qwen3_5
image-text-to-text
education
tutoring
esl
sft
grpo
conversational
Instructions to use Taxonomy-Aligned-Conversational-Tutor/TACTutor with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Taxonomy-Aligned-Conversational-Tutor/TACTutor with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Taxonomy-Aligned-Conversational-Tutor/TACTutor") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Taxonomy-Aligned-Conversational-Tutor/TACTutor") model = AutoModelForMultimodalLM.from_pretrained("Taxonomy-Aligned-Conversational-Tutor/TACTutor", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Taxonomy-Aligned-Conversational-Tutor/TACTutor with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Taxonomy-Aligned-Conversational-Tutor/TACTutor" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Taxonomy-Aligned-Conversational-Tutor/TACTutor", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Taxonomy-Aligned-Conversational-Tutor/TACTutor
- SGLang
How to use Taxonomy-Aligned-Conversational-Tutor/TACTutor with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Taxonomy-Aligned-Conversational-Tutor/TACTutor" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Taxonomy-Aligned-Conversational-Tutor/TACTutor", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Taxonomy-Aligned-Conversational-Tutor/TACTutor" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Taxonomy-Aligned-Conversational-Tutor/TACTutor", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Taxonomy-Aligned-Conversational-Tutor/TACTutor with Docker Model Runner:
docker model run hf.co/Taxonomy-Aligned-Conversational-Tutor/TACTutor
File size: 3,592 Bytes
06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 06fb46d 624b944 414fe60 624b944 06fb46d 624b944 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | ---
library_name: transformers
license: apache-2.0
base_model:
- Qwen/Qwen3.5-4B-Base
pipeline_tag: text-generation
language:
- en
tags:
- education
- tutoring
- esl
- sft
- grpo
---
# TACTutor
TACTutor is a 4B-parameter conversational English tutor from **TACT**
(Taxonomy-Aligned Conversational Tutor). Starting from Qwen3.5-4B-Base, the
model was post-trained with supervised fine-tuning (SFT) followed by
taxonomy-aligned Group Relative Policy Optimization (GRPO). It is distributed
as a merged Hugging Face Transformers model rather than a LoRA adapter.
- TACT organization: https://huggingface.co/Taxonomy-Aligned-Conversational-Tutor
- Demonstration samples: https://huggingface.co/datasets/Taxonomy-Aligned-Conversational-Tutor/TACTBench-Samples
## Intended Use
TACTutor generates the next teacher response in an ongoing English-learning
conversation. It is intended for research on pedagogically adaptive dialogue,
including feedback, guided revision, clarification, and learner-supportive
conversation management.
The model is a research artifact, not a replacement for a qualified teacher.
Outputs should be reviewed before use in high-stakes educational settings.
## Loading
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "Taxonomy-Aligned-Conversational-Tutor/TACTutor"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto",
trust_remote_code=True,
)
```
One prompt used in our evaluation is:
```text
You are an expert ESL tutoring teacher.
Your job is to write the next teacher response in an ongoing teacher-student chat.
Respond naturally and pedagogically. Do not explain your reasoning. Do not mention
taxonomy labels, rubrics, or evaluation criteria.
```
Pass this instruction as the system message, followed by the dialogue history,
and use the tokenizer's chat template to construct the model input.
## Evaluation
On the 78-item TACTBench diagnostic benchmark, the selected checkpoint achieved:
| Metric | Score |
| --- | ---: |
| TACT Overall | 0.832051 |
| Accept | 0.871795 |
| Leak | 0.025641 |
| Off-task | 0.025641 |
The scores above were measured before five representative benchmark examples
were released. Those public examples are demonstration data and should be
excluded from future hidden-set scoring.
## Training Data and Limitations
The post-training data are derived from authentic English tutoring dialogue and
taxonomy-guided augmentation. The complete training corpus and hidden benchmark
are not included in this repository. Five short full-context demonstration
examples are available in the companion dataset repository.
The source dialogue is derived from the Teacher-Student Chatroom Corpus version
2 (TSCC v2), which is governed by its own user agreement. This model may produce
incorrect, overly explicit, or contextually inappropriate tutoring responses,
and its behavior outside English-language tutoring has not been established.
## Citation
Please cite the following paper when using TACTutor:
```bibtex
@article{yang2026tact,
title = {TACT: Taxonomy-Aligned Post-Training for Pedagogically Adaptive English Tutoring},
author = {Yang, Dongjie and Lin, Siyan and Shen, Leixian and Sheng, Rui and Qu, Huamin and Chen, Zixin},
year = {2026}
}
```
## License
The model weights are released under the Apache License 2.0. The TSCC-derived
source data remain subject to the TSCC user agreement and are not redistributed
with the model weights.
|