🚀 TEN對話輪次檢測
TEN對話輪次檢測是一款先進的智能輪次檢測模型,專為實現人類與AI智能體之間自然、動態的交流而設計。它能夠精準檢測自然的對話輪次切換信號,支持基於上下文的打斷,讓人與AI的對話更加自然流暢。
🚀 快速開始
TEN對話輪次檢測模型的代碼已開源在GitHub上,你可以通過以下鏈接訪問:TEN-framework/ten-turn-detection
📦 安裝指南
你可以使用以下命令安裝所需的依賴庫:
pip install "transformers>=4.30.0"
pip install "torch>=2.0.0"
模型權重
TEN對話輪次檢測模型的權重可以在HuggingFace上獲取。
💻 使用示例
基礎用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = 'TEN-framework/TEN_Turn_Detection'
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = model.cuda()
model.eval()
def analyze_text(text, system_prompt=""):
inf_messages = [{"role":"system", "content":system_prompt}] + [{"role":"user", "content":text}]
input_ids = tokenizer.apply_chat_template(
inf_messages,
add_generation_prompt=True,
return_tensors="pt"
).cuda()
with torch.no_grad():
outputs = model.generate(
input_ids,
max_new_tokens=1,
do_sample=True,
top_p=0.1,
temperature=0.1,
pad_token_id=tokenizer.eos_token_id
)
response = outputs[0][input_ids.shape[-1]:]
return tokenizer.decode(response, skip_special_tokens=True)
text = "Hello I have a question about"
result = analyze_text(text)
print(f"Input: '{text}'")
print(f"Turn Detection Result: '{result}'")
✨ 主要特性
- 上下文感知的輪次管理:TEN對話輪次檢測模型通過分析語言模式和語義上下文,能夠準確識別對話輪次的結束點。這一特性使得系統能夠智能處理打斷情況,在各種對話場景中保持自然的對話流,同時判斷何時進行打斷是合適的。
- 多語言輪次檢測支持:該模型全面支持英語和中文,能夠在多語言對話中準確識別輪次切換信號和結束信號。
- 卓越的性能:在公開的測試數據集上,與多個開源解決方案相比,TEN在所有評估指標上都表現出色。
📚 詳細文檔
簡介
TEN對話輪次檢測是一款專門為實現人類與AI智能體之間自然、動態交流而設計的先進智能輪次檢測模型。這項技術解決了人機對話中最具挑戰性的問題之一:檢測自然的對話輪次切換信號,並支持基於上下文的打斷。TEN模型通過對對話上下文和語言模式進行深度語義理解,實現了與AI更加自然的對話。
TEN對話輪次檢測將用戶的文本分為三種關鍵狀態:
- 已完成(finished):用戶表達了完整的想法並期待回應的完整話語。例如:"Hey there I was wondering can you help me with my order"
- 等待(wait):系統無法確定用戶是否會繼續發言的模糊話語。例如:"This conversation needs to end now"
- 未完成(unfinished):用戶暫時停頓但打算繼續發言的明顯未完成話語。例如:"Hello I have a question about"
這三種分類狀態使TEN系統能夠通過智能管理對話輪次,減少尷尬的打斷,同時保持對話流暢,從而創造出自然的對話動態。
TEN對話輪次檢測採用基於Transformer的語言模型(Qwen2.5 - 7B)進行語義分析的多層方法。
準備好的數據集
我們已經開源了TEN-Turn-Detection測試集,這是一個專門為評估AI對話系統的輪次檢測能力而設計的中英雙語對話輸入集合。該數據集由三個不同的部分組成:
- wait.txt:包含請求暫停或終止對話的表達。
- unfinished.txt:包含截斷的不完整對話輸入。
- finished.txt:提供跨多個領域的完整對話輸入。
檢測性能
我們使用測試數據集對多個開源的輪次檢測模型進行了全面評估:
| 語言 | 模型 | 已完成準確率 | 未完成準確率 | 等待準確率 |
|:--------:|:-----:|:--------------------:|:----------------------:|:----------------:|
| 英語 | Model A | 59.74% | 86.46% | N/A |
| 英語 | Model B | 71.61% | 96.88% | N/A |
| 英語 | **TEN對話輪次檢測** | **90.64%** | **98.44%** | **91%** |
語言 |
模型 |
已完成準確率 |
未完成準確率 |
等待準確率 |
中文 |
Model B |
74.63% |
88.89% |
N/A |
中文 |
TEN對話輪次檢測 |
98.90% |
92.74% |
92% |
⚠️ 重要提示
- Model A不支持中文處理。
- Model A和Model B都不支持“等待(WAIT)”狀態檢測。
🔧 技術細節
TEN對話輪次檢測利用基於Transformer的語言模型(Qwen2.5 - 7B)進行語義分析,採用多層方法實現輪次檢測。
📄 許可證
本項目採用Apache 2.0許可證。
引用
如果你在研究或應用中使用了TEN對話輪次檢測,請引用以下內容:
@misc{TEN_Turn_Detection,
author = {TEN Team},
title = {TEN Turn Detection: Turn detection for full-duplex dialogue communication
},
year = {2025},
url = {https://github.com/TEN-framework/ten-turn-detection},
}