diff --git a/middleware/distributor.go b/middleware/distributor.go index ed457a3..a5e40b0 100644 --- a/middleware/distributor.go +++ b/middleware/distributor.go @@ -155,6 +155,9 @@ func Distribute() func(c *gin.Context) { if channel.AutoBan != nil && *channel.AutoBan == 0 { ban = false } + if nil != channel.OpenAIOrganization { + c.Set("channel_organization", *channel.OpenAIOrganization) + } c.Set("auto_ban", ban) c.Set("model_mapping", channel.GetModelMapping()) c.Request.Header.Set("Authorization", fmt.Sprintf("Bearer %s", channel.Key)) diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go index 188ff4c..92621d5 100644 --- a/relay/channel/openai/adaptor.go +++ b/relay/channel/openai/adaptor.go @@ -49,6 +49,9 @@ func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, info *re req.Header.Set("api-key", info.ApiKey) return nil } + if info.ChannelType == common.ChannelTypeOpenAI && "" != info.Organization { + req.Header.Set("OpenAI-Organization", info.Organization) + } req.Header.Set("Authorization", "Bearer "+info.ApiKey) //if info.ChannelType == common.ChannelTypeOpenRouter { // req.Header.Set("HTTP-Referer", "https://github.com/songquanpeng/one-api") diff --git a/relay/common/relay_info.go b/relay/common/relay_info.go index aea3cc7..27ed9a9 100644 --- a/relay/common/relay_info.go +++ b/relay/common/relay_info.go @@ -24,6 +24,7 @@ type RelayInfo struct { ApiVersion string PromptTokens int ApiKey string + Organization string BaseUrl string } @@ -52,6 +53,7 @@ func GenRelayInfo(c *gin.Context) *RelayInfo { ApiType: apiType, ApiVersion: c.GetString("api_version"), ApiKey: strings.TrimPrefix(c.Request.Header.Get("Authorization"), "Bearer "), + Organization: c.GetString("channel_organization"), } if info.BaseUrl == "" { info.BaseUrl = common.ChannelBaseURLs[channelType]