fix: #1054 Add model mapping to abilities
- Update Abilities model to include model mapping key - Parse model mapping in Channel model and filter models by model mapping in Update function
This commit is contained in:
parent
b747cdbc6f
commit
f564245e34
@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
// Regex to match data URL pattern
|
||||
var dataURLPattern = regexp.MustCompile(`data:image/([^;]+);base64,(.*)`)
|
||||
var dataURLPattern = regexp.MustCompile(`data:image/([^;]+);base64,(.*)`)
|
||||
|
||||
func IsImageUrl(url string) (bool, error) {
|
||||
resp, err := http.Head(url)
|
||||
|
@ -60,7 +60,7 @@ func Relay(c *gin.Context) {
|
||||
for i := retryTimes; i > 0; i-- {
|
||||
channel, err := dbmodel.CacheGetRandomSatisfiedChannel(group, originalModel)
|
||||
if err != nil {
|
||||
logger.Errorf(ctx, "CacheGetRandomSatisfiedChannel failed: %w", err)
|
||||
logger.Errorf(ctx, "CacheGetRandomSatisfiedChannel failed: %v", err)
|
||||
break
|
||||
}
|
||||
logger.Infof(ctx, "using channel #%d to retry (remain times %d)", channel.Id, i)
|
||||
|
@ -55,6 +55,21 @@ func (channel *Channel) AddAbilities() error {
|
||||
abilities = append(abilities, ability)
|
||||
}
|
||||
}
|
||||
|
||||
// add keys of model mapping to abilities
|
||||
for model := range channel.GetModelMapping() {
|
||||
for _, group := range groups_ {
|
||||
ability := Ability{
|
||||
Group: group,
|
||||
Model: model,
|
||||
ChannelId: channel.Id,
|
||||
Enabled: channel.Status == common.ChannelStatusEnabled,
|
||||
Priority: channel.Priority,
|
||||
}
|
||||
abilities = append(abilities, ability)
|
||||
}
|
||||
}
|
||||
|
||||
return DB.Create(&abilities).Error
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,8 @@ package model
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/songquanpeng/one-api/common"
|
||||
"github.com/songquanpeng/one-api/common/config"
|
||||
"github.com/songquanpeng/one-api/common/helper"
|
||||
@ -115,8 +117,23 @@ func (channel *Channel) Insert() error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (channel *Channel) Update() error {
|
||||
var err error
|
||||
func (channel *Channel) Update() (err error) {
|
||||
// https://github.com/songquanpeng/one-api/issues/1054
|
||||
// for compatability, filter models by model-mapping.
|
||||
mapping := channel.GetModelMapping()
|
||||
if len(mapping) != 0 {
|
||||
models := strings.Split(channel.Models, ",")
|
||||
var filteredModels []string
|
||||
for _, model := range models {
|
||||
if _, ok := mapping[model]; !ok {
|
||||
filteredModels = append(filteredModels, model)
|
||||
}
|
||||
}
|
||||
|
||||
channel.Models = strings.Join(filteredModels, ",")
|
||||
}
|
||||
|
||||
// update
|
||||
err = DB.Model(channel).Updates(channel).Error
|
||||
if err != nil {
|
||||
return err
|
||||
|
Loading…
Reference in New Issue
Block a user