Model details
Table with columns: Item, Value| Item | Value |
|---|
| Developed by | PresenceAI |
| Series | Presence Muses |
| Release | v1.0 (GA) |
| Model type | LoRA adapter (PEFT) |
| Training stage | Supervised fine-tuning (SFT) |
| Base model | Qwen/Qwen3-32B |
| Languages | English, Chinese |
| License | Apache-2.0 |
| Adapter rank | r = 32, alpha = 32, dropout = 0.0 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
Model lineage
Qwen/Qwen3-32B ──SFT──▶ Calliope-32B-SFT-LoRA-v1.0 (this repository)
Trained directly from the base model. No intermediate checkpoint or upstream adapter is required — load this adapter on Qwen/Qwen3-32B as shown below. The base weights are not included in this repository.
Intended use
- Multi-turn roleplay and companion-style conversation.
- Tool-calling assistants that emit a
send_message call with the reply text.
- Research on persona consistency and conversational style adaptation.
Out of scope: factual question answering, medical / legal / financial advice, high-stakes decision making, or any use that requires verified knowledge.
Training
- Method: supervised fine-tuning (SFT) with LoRA.
- Training data: 10,000 internal multi-turn conversations with tool-call annotations. The training data is not released with this adapter.
- Maximum sequence length: 22,528 tokens.
- Epochs: 3.
- Effective batch size: 16 (per-device batch 1 × gradient accumulation 16).
- Learning rate: 1e-4.
- LoRA: r = 32, alpha = 32, dropout = 0.
Evaluation
Automatic evaluation on an internal held-out split (token-level eval loss):
Table with columns: Step, Eval loss, Note| Step | Eval loss | Note |
|---|
| 600 | 0.6724 | Best checkpoint; this repository |
| 1,200 | 0.6892 | |
| 1,875 | 0.8184 | Overfitting begins after step ~600 |
These are automatic loss values only. No task-level benchmark, human preference study, or safety evaluation is included. Evaluate on your own data before deployment.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizerfrom peft import PeftModel base_id = "Qwen/Qwen3-32B"adapter_id = "PresenceAI/Calliope-32B-SFT-LoRA-v1.0" tokenizer = AutoTokenizer.from_pretrained(base_id)model = AutoModelForCausalLM.from_pretrained( base_id, torch_dtype="bfloat16", device_map="auto")model = PeftModel.from_pretrained(model, adapter_id)model.eval()
vLLM
vllm serve Qwen/Qwen3-32B \ --enable-lora --max-lora-rank 32 \ --lora-modules calliope=PresenceAI/Calliope-32B-SFT-LoRA-v1.0 \ --enable-auto-tool-choice --tool-call-parser hermes
The adapter was trained with the Qwen3 chat template and tool-call format:
<tool_call>{"name": "send_message", "arguments": {"text": "..."}}</tool_call>
Use the tokenizer and chat_template.jinja included in this repository to keep the prompt format consistent with training.
Limitations
- Trained for roleplay/companion conversation; outputs may be stylized, repetitive, or inappropriate outside that domain.
- The model may reproduce patterns, names, or phrasing from its training data. The training data is not released; deploy with privacy and safety filters.
- Only automatic eval loss is reported. No claim is made about factual accuracy, safety, or human-perceived quality.
- The base model's limitations and license terms continue to apply.
License
The adapter is released under the Apache License 2.0. The base model Qwen/Qwen3-32B is also Apache-2.0. See LICENSE and NOTICE in this repository.
Citation
@misc{presenceai_calliope_32b_sft_lora_v1, title = {PresenceAI Calliope-32B-SFT-LoRA v1.0: roleplay and tool-calling chat}, author = {PresenceAI}, year = {2026}, note = {LoRA adapter, Apache-2.0}}