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
31384833
authored
Nov 13, 2025
by
Calcium-Ion
Committed by
GitHub
Nov 13, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2222 from xyfacai/main
fix: 未设置价格模型不会被拉取,除非设置自用模式
parents
a05a815f
a4bfec16
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
0 deletions
+39
-0
controller/model.go
+26
-0
setting/ratio_setting/model_ratio.go
+13
-0
No files found.
controller/model.go
View file @
31384833
...
...
@@ -16,6 +16,8 @@ import (
"github.com/QuantumNous/new-api/relay/channel/moonshot"
relaycommon
"github.com/QuantumNous/new-api/relay/common"
"github.com/QuantumNous/new-api/service"
"github.com/QuantumNous/new-api/setting/operation_setting"
"github.com/QuantumNous/new-api/setting/ratio_setting"
"github.com/gin-gonic/gin"
"github.com/samber/lo"
)
...
...
@@ -109,6 +111,17 @@ func init() {
func
ListModels
(
c
*
gin
.
Context
,
modelType
int
)
{
userOpenAiModels
:=
make
([]
dto
.
OpenAIModels
,
0
)
acceptUnsetRatioModel
:=
operation_setting
.
SelfUseModeEnabled
if
!
acceptUnsetRatioModel
{
userId
:=
c
.
GetInt
(
"id"
)
if
userId
>
0
{
userSettings
,
_
:=
model
.
GetUserSetting
(
userId
,
false
)
if
userSettings
.
AcceptUnsetRatioModel
{
acceptUnsetRatioModel
=
true
}
}
}
modelLimitEnable
:=
common
.
GetContextKeyBool
(
c
,
constant
.
ContextKeyTokenModelLimitEnabled
)
if
modelLimitEnable
{
s
,
ok
:=
common
.
GetContextKey
(
c
,
constant
.
ContextKeyTokenModelLimit
)
...
...
@@ -119,6 +132,12 @@ func ListModels(c *gin.Context, modelType int) {
tokenModelLimit
=
map
[
string
]
bool
{}
}
for
allowModel
,
_
:=
range
tokenModelLimit
{
if
!
acceptUnsetRatioModel
{
_
,
_
,
exist
:=
ratio_setting
.
GetModelRatioOrPrice
(
allowModel
)
if
!
exist
{
continue
}
}
if
oaiModel
,
ok
:=
openAIModelsMap
[
allowModel
];
ok
{
oaiModel
.
SupportedEndpointTypes
=
model
.
GetModelSupportEndpointTypes
(
allowModel
)
userOpenAiModels
=
append
(
userOpenAiModels
,
oaiModel
)
...
...
@@ -161,6 +180,12 @@ func ListModels(c *gin.Context, modelType int) {
models
=
model
.
GetGroupEnabledModels
(
group
)
}
for
_
,
modelName
:=
range
models
{
if
!
acceptUnsetRatioModel
{
_
,
_
,
exist
:=
ratio_setting
.
GetModelRatioOrPrice
(
modelName
)
if
!
exist
{
continue
}
}
if
oaiModel
,
ok
:=
openAIModelsMap
[
modelName
];
ok
{
oaiModel
.
SupportedEndpointTypes
=
model
.
GetModelSupportEndpointTypes
(
modelName
)
userOpenAiModels
=
append
(
userOpenAiModels
,
oaiModel
)
...
...
@@ -175,6 +200,7 @@ func ListModels(c *gin.Context, modelType int) {
}
}
}
switch
modelType
{
case
constant
.
ChannelTypeAnthropic
:
useranthropicModels
:=
make
([]
dto
.
AnthropicModel
,
len
(
userOpenAiModels
))
...
...
setting/ratio_setting/model_ratio.go
View file @
31384833
...
...
@@ -823,3 +823,16 @@ func FormatMatchingModelName(name string) string {
}
return
name
}
// result: 倍率or价格, usePrice, exist
func
GetModelRatioOrPrice
(
model
string
)
(
float64
,
bool
,
bool
)
{
// price or ratio
price
,
usePrice
:=
GetModelPrice
(
model
,
false
)
if
usePrice
{
return
price
,
true
,
true
}
modelRatio
,
success
,
_
:=
GetModelRatio
(
model
)
if
success
{
return
modelRatio
,
false
,
true
}
return
37.5
,
false
,
false
}
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