🚀 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},
}