# vLLM中的动态批处理实现
from vllm.engine.arg_utils import AsyncEngineArgs
from vllm.engine.async_llm_engine import AsyncLLMEngine

class DynamicBatching:
    def __init__(self, max_batch_size=32, max_seq_len=4096):
        self.max_batch_size = max_batch_size
        self.max_seq_len = max_seq_len
        self.pending_requests = []
        self.running_requests = []
    
    def add_request(self, request):
        """添加新请求到待处理队列"""
        self.pending_requests.append(request)
        
        # 检查是否可以开始新的批处理
        if self.can_start_batch():
            return self.start_batch()
        return None
    
    def can_start_batch(self):
        """判断是否可以开始新的批处理"""
        if len(self.pending_requests) >= self.max_batch_size:
            return True
        
        # 检查序列长度兼容性
        if self.pending_requests:
            max_len = max(req.seq_len for req in self.pending_requests)
            if max_len > self.max_seq_len:
                return True
        
        return False
