package vllm import ( "net/http" "strings" "go.uber.org/zap" "iop/packages/go/config" ) const Name = "vllm" // Vllm is the vLLM/SGLang adapter. It targets OpenAI-compatible endpoints // without the per-request auth/header injection that the openai_compat adapter // carries, so a provider boundary and its config contract stay distinct. type Vllm struct { instanceName string endpoint string capacity int maxQueue int queueTimeoutMS int requestTimeoutMS int client *http.Client logger *zap.Logger } // New creates a vLLM adapter. The optional instanceName is the registry // instance key used to disambiguate multiple vLLM instances on the same node. func New(cfg config.VllmConf, logger *zap.Logger, instanceName ...string) *Vllm { endpoint := strings.TrimRight(cfg.Endpoint, "/") name := Name if len(instanceName) > 0 && instanceName[0] != "" { name = instanceName[0] } return &Vllm{ instanceName: name, endpoint: endpoint, capacity: cfg.Capacity, maxQueue: cfg.MaxQueue, queueTimeoutMS: cfg.QueueTimeoutMS, requestTimeoutMS: cfg.RequestTimeoutMS, client: &http.Client{}, logger: logger, } } func (v *Vllm) Name() string { return Name }