Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e3dd5b3e
authored
Feb 08, 2026
by
Seefs
Committed by
GitHub
Feb 08, 2026
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2874 from MUTED64/main
feat: Force beta=true parameter for Anthropic channel
parents
e6b43f42
2f867bc2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
3 deletions
+33
-3
dto/channel_settings.go
+1
-0
relay/common/relay_info.go
+6
-3
web/src/components/table/channels/modals/EditChannelModal.jsx
+26
-0
No files found.
dto/channel_settings.go
View file @
e3dd5b3e
...
@@ -27,6 +27,7 @@ type ChannelOtherSettings struct {
...
@@ -27,6 +27,7 @@ type ChannelOtherSettings struct {
AzureResponsesVersion
string
`json:"azure_responses_version,omitempty"`
AzureResponsesVersion
string
`json:"azure_responses_version,omitempty"`
VertexKeyType
VertexKeyType
`json:"vertex_key_type,omitempty"`
// "json" or "api_key"
VertexKeyType
VertexKeyType
`json:"vertex_key_type,omitempty"`
// "json" or "api_key"
OpenRouterEnterprise
*
bool
`json:"openrouter_enterprise,omitempty"`
OpenRouterEnterprise
*
bool
`json:"openrouter_enterprise,omitempty"`
ClaudeBetaQuery
bool
`json:"claude_beta_query,omitempty"`
// Claude 渠道是否强制追加 ?beta=true
AllowServiceTier
bool
`json:"allow_service_tier,omitempty"`
// 是否允许 service_tier 透传(默认过滤以避免额外计费)
AllowServiceTier
bool
`json:"allow_service_tier,omitempty"`
// 是否允许 service_tier 透传(默认过滤以避免额外计费)
DisableStore
bool
`json:"disable_store,omitempty"`
// 是否禁用 store 透传(默认允许透传,禁用后可能导致 Codex 无法使用)
DisableStore
bool
`json:"disable_store,omitempty"`
// 是否禁用 store 透传(默认允许透传,禁用后可能导致 Codex 无法使用)
AllowSafetyIdentifier
bool
`json:"allow_safety_identifier,omitempty"`
// 是否允许 safety_identifier 透传(默认过滤以保护用户隐私)
AllowSafetyIdentifier
bool
`json:"allow_safety_identifier,omitempty"`
// 是否允许 safety_identifier 透传(默认过滤以保护用户隐私)
...
...
relay/common/relay_info.go
View file @
e3dd5b3e
...
@@ -319,12 +319,15 @@ func GenRelayInfoClaude(c *gin.Context, request dto.Request) *RelayInfo {
...
@@ -319,12 +319,15 @@ func GenRelayInfoClaude(c *gin.Context, request dto.Request) *RelayInfo {
info
.
ClaudeConvertInfo
=
&
ClaudeConvertInfo
{
info
.
ClaudeConvertInfo
=
&
ClaudeConvertInfo
{
LastMessagesType
:
LastMessageTypeNone
,
LastMessagesType
:
LastMessageTypeNone
,
}
}
if
c
.
Query
(
"beta"
)
==
"true"
{
info
.
IsClaudeBetaQuery
=
c
.
Query
(
"beta"
)
==
"true"
||
isClaudeBetaForced
(
c
)
info
.
IsClaudeBetaQuery
=
true
}
return
info
return
info
}
}
func
isClaudeBetaForced
(
c
*
gin
.
Context
)
bool
{
channelOtherSettings
,
ok
:=
common
.
GetContextKeyType
[
dto
.
ChannelOtherSettings
](
c
,
constant
.
ContextKeyChannelOtherSetting
)
return
ok
&&
channelOtherSettings
.
ClaudeBetaQuery
}
func
GenRelayInfoRerank
(
c
*
gin
.
Context
,
request
*
dto
.
RerankRequest
)
*
RelayInfo
{
func
GenRelayInfoRerank
(
c
*
gin
.
Context
,
request
*
dto
.
RerankRequest
)
*
RelayInfo
{
info
:=
genBaseRelayInfo
(
c
,
request
)
info
:=
genBaseRelayInfo
(
c
,
request
)
info
.
RelayMode
=
relayconstant
.
RelayModeRerank
info
.
RelayMode
=
relayconstant
.
RelayModeRerank
...
...
web/src/components/table/channels/modals/EditChannelModal.jsx
View file @
e3dd5b3e
...
@@ -170,6 +170,7 @@ const EditChannelModal = (props) => {
...
@@ -170,6 +170,7 @@ const EditChannelModal = (props) => {
allow_service_tier
:
false
,
allow_service_tier
:
false
,
disable_store
:
false
,
// false = 允许透传(默认开启)
disable_store
:
false
,
// false = 允许透传(默认开启)
allow_safety_identifier
:
false
,
allow_safety_identifier
:
false
,
claude_beta_query
:
false
,
};
};
const
[
batch
,
setBatch
]
=
useState
(
false
);
const
[
batch
,
setBatch
]
=
useState
(
false
);
const
[
multiToSingle
,
setMultiToSingle
]
=
useState
(
false
);
const
[
multiToSingle
,
setMultiToSingle
]
=
useState
(
false
);
...
@@ -633,6 +634,7 @@ const EditChannelModal = (props) => {
...
@@ -633,6 +634,7 @@ const EditChannelModal = (props) => {
data
.
disable_store
=
parsedSettings
.
disable_store
||
false
;
data
.
disable_store
=
parsedSettings
.
disable_store
||
false
;
data
.
allow_safety_identifier
=
data
.
allow_safety_identifier
=
parsedSettings
.
allow_safety_identifier
||
false
;
parsedSettings
.
allow_safety_identifier
||
false
;
data
.
claude_beta_query
=
parsedSettings
.
claude_beta_query
||
false
;
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'解析其他设置失败:'
,
error
);
console
.
error
(
'解析其他设置失败:'
,
error
);
data
.
azure_responses_version
=
''
;
data
.
azure_responses_version
=
''
;
...
@@ -643,6 +645,7 @@ const EditChannelModal = (props) => {
...
@@ -643,6 +645,7 @@ const EditChannelModal = (props) => {
data
.
allow_service_tier
=
false
;
data
.
allow_service_tier
=
false
;
data
.
disable_store
=
false
;
data
.
disable_store
=
false
;
data
.
allow_safety_identifier
=
false
;
data
.
allow_safety_identifier
=
false
;
data
.
claude_beta_query
=
false
;
}
}
}
else
{
}
else
{
// 兼容历史数据:老渠道没有 settings 时,默认按 json 展示
// 兼容历史数据:老渠道没有 settings 时,默认按 json 展示
...
@@ -652,6 +655,7 @@ const EditChannelModal = (props) => {
...
@@ -652,6 +655,7 @@ const EditChannelModal = (props) => {
data
.
allow_service_tier
=
false
;
data
.
allow_service_tier
=
false
;
data
.
disable_store
=
false
;
data
.
disable_store
=
false
;
data
.
allow_safety_identifier
=
false
;
data
.
allow_safety_identifier
=
false
;
data
.
claude_beta_query
=
false
;
}
}
if
(
if
(
...
@@ -1394,6 +1398,9 @@ const EditChannelModal = (props) => {
...
@@ -1394,6 +1398,9 @@ const EditChannelModal = (props) => {
settings
.
allow_safety_identifier
=
settings
.
allow_safety_identifier
=
localInputs
.
allow_safety_identifier
===
true
;
localInputs
.
allow_safety_identifier
===
true
;
}
}
if
(
localInputs
.
type
===
14
)
{
settings
.
claude_beta_query
=
localInputs
.
claude_beta_query
===
true
;
}
}
}
localInputs
.
settings
=
JSON
.
stringify
(
settings
);
localInputs
.
settings
=
JSON
.
stringify
(
settings
);
...
@@ -1414,6 +1421,7 @@ const EditChannelModal = (props) => {
...
@@ -1414,6 +1421,7 @@ const EditChannelModal = (props) => {
delete
localInputs
.
allow_service_tier
;
delete
localInputs
.
allow_service_tier
;
delete
localInputs
.
disable_store
;
delete
localInputs
.
disable_store
;
delete
localInputs
.
allow_safety_identifier
;
delete
localInputs
.
allow_safety_identifier
;
delete
localInputs
.
claude_beta_query
;
let
res
;
let
res
;
localInputs
.
auto_ban
=
localInputs
.
auto_ban
?
1
:
0
;
localInputs
.
auto_ban
=
localInputs
.
auto_ban
?
1
:
0
;
...
@@ -3316,6 +3324,24 @@ const EditChannelModal = (props) => {
...
@@ -3316,6 +3324,24 @@ const EditChannelModal = (props) => {
</
div
>
</
div
>
</
div
>
</
div
>
{
inputs
.
type
===
14
&&
(
<
Form
.
Switch
field=
'claude_beta_query'
label=
{
t
(
'Claude 强制 beta=true'
)
}
checkedText=
{
t
(
'开'
)
}
uncheckedText=
{
t
(
'关'
)
}
onChange=
{
(
value
)
=>
handleChannelOtherSettingsChange
(
'claude_beta_query'
,
value
,
)
}
extraText=
{
t
(
'开启后,该渠道请求 Claude 时将强制追加 ?beta=true(无需客户端手动传参)'
,
)
}
/>
)
}
{
inputs
.
type
===
1
&&
(
{
inputs
.
type
===
1
&&
(
<
Form
.
Switch
<
Form
.
Switch
field=
'force_format'
field=
'force_format'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment