feat: 添加vLLM适配器、修复SSE流式输出和中间件问题
- 新增 vLLM 适配器 (internal/adapter/vllm.go),支持 OpenAI 兼容 API - 修复 responseWriter 未实现 http.Flusher 导致 SSE 流式输出 500 错误 - 调整中间件顺序:BodyLimit 移至 Auth 之前,提前拒绝超大请求 - BodyLimit 增强:检查 Content-Length header - 导出 Server.Authenticator() 方法供测试使用 - 配置更新:使用本地 deepseek-r1:1.5b 模型,新增 vllm-chat 逻辑模型 - 修复 handlers.go 中未使用的 target 参数 lint 警告
This commit is contained in:
@@ -122,7 +122,7 @@ func (s *Server) handleChatCompletions(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) handleStreaming(w http.ResponseWriter, r *http.Request, adapterInst adapter.ModelAdapter, req *adapter.ChatRequest, tk *task.Task, requestID string, target *router.ModelTarget, logicalModel string) {
|
||||
func (s *Server) handleStreaming(w http.ResponseWriter, r *http.Request, adapterInst adapter.ModelAdapter, req *adapter.ChatRequest, tk *task.Task, requestID string, _ *router.ModelTarget, logicalModel string) {
|
||||
sse := handler.NewSSEWriter(w)
|
||||
if sse == nil {
|
||||
s.scheduler.Complete(tk.ID)
|
||||
@@ -158,7 +158,7 @@ func (s *Server) handleStreaming(w http.ResponseWriter, r *http.Request, adapter
|
||||
s.metrics.IncRequest("stream_ok")
|
||||
}
|
||||
|
||||
func (s *Server) handleNonStreaming(w http.ResponseWriter, r *http.Request, adapterInst adapter.ModelAdapter, req *adapter.ChatRequest, tk *task.Task, requestID string, target *router.ModelTarget, logicalModel string) {
|
||||
func (s *Server) handleNonStreaming(w http.ResponseWriter, r *http.Request, adapterInst adapter.ModelAdapter, req *adapter.ChatRequest, tk *task.Task, requestID string, _ *router.ModelTarget, logicalModel string) {
|
||||
ctx, cancel := context.WithTimeout(r.Context(), time.Duration(s.cfg.Timeouts.DefaultInferenceMs)*time.Millisecond)
|
||||
defer cancel()
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ func New(cfg *config.Config, logger *observability.Logger) (*Server, error) {
|
||||
switch mc.Provider {
|
||||
case "ollama":
|
||||
registry.Register(mc.Provider, adapter.NewOllamaAdapter(mc.Endpoint))
|
||||
case "vllm":
|
||||
registry.Register(mc.Provider, adapter.NewVLLMAdapter(mc.Endpoint))
|
||||
}
|
||||
registered[key] = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user