mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-05 05:30:44 +08:00
fix(handler): log correct upstream endpoint for raw CC path
DeriveUpstreamEndpoint hard-codes /v1/responses for PlatformOpenAI, but APIKey accounts probed to not support Responses API are forwarded directly to /v1/chat/completions via forwardAsRawChatCompletions. Add resolveRawCCUpstreamEndpoint which returns /v1/chat/completions when the account's extra.openai_responses_supported is explicitly false.
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
|||||||
pkghttputil "github.com/Wei-Shaw/sub2api/internal/pkg/httputil"
|
pkghttputil "github.com/Wei-Shaw/sub2api/internal/pkg/httputil"
|
||||||
"github.com/Wei-Shaw/sub2api/internal/pkg/ip"
|
"github.com/Wei-Shaw/sub2api/internal/pkg/ip"
|
||||||
"github.com/Wei-Shaw/sub2api/internal/pkg/logger"
|
"github.com/Wei-Shaw/sub2api/internal/pkg/logger"
|
||||||
|
"github.com/Wei-Shaw/sub2api/internal/pkg/openai_compat"
|
||||||
middleware2 "github.com/Wei-Shaw/sub2api/internal/server/middleware"
|
middleware2 "github.com/Wei-Shaw/sub2api/internal/server/middleware"
|
||||||
"github.com/Wei-Shaw/sub2api/internal/service"
|
"github.com/Wei-Shaw/sub2api/internal/service"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -276,7 +277,7 @@ func (h *OpenAIGatewayHandler) ChatCompletions(c *gin.Context) {
|
|||||||
Account: account,
|
Account: account,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
InboundEndpoint: GetInboundEndpoint(c),
|
InboundEndpoint: GetInboundEndpoint(c),
|
||||||
UpstreamEndpoint: GetUpstreamEndpoint(c, account.Platform),
|
UpstreamEndpoint: resolveRawCCUpstreamEndpoint(c, account),
|
||||||
UserAgent: userAgent,
|
UserAgent: userAgent,
|
||||||
IPAddress: clientIP,
|
IPAddress: clientIP,
|
||||||
APIKeyService: h.apiKeyService,
|
APIKeyService: h.apiKeyService,
|
||||||
@@ -299,3 +300,16 @@ func (h *OpenAIGatewayHandler) ChatCompletions(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// resolveRawCCUpstreamEndpoint returns the actual upstream endpoint for
|
||||||
|
// OpenAI Chat Completions requests. For APIKey accounts whose upstream
|
||||||
|
// has been probed to not support the Responses API, the request is
|
||||||
|
// forwarded directly to /v1/chat/completions — not through the default
|
||||||
|
// CC→Responses conversion path.
|
||||||
|
func resolveRawCCUpstreamEndpoint(c *gin.Context, account *service.Account) string {
|
||||||
|
if account != nil && account.Type == service.AccountTypeAPIKey &&
|
||||||
|
!openai_compat.ShouldUseResponsesAPI(account.Extra) {
|
||||||
|
return "/v1/chat/completions"
|
||||||
|
}
|
||||||
|
return GetUpstreamEndpoint(c, account.Platform)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user