mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-11 14:15:40 +08:00
Add extra field to model instance (#14203)
### What problem does this PR solve? Now each model support region with different URL ### Type of change - [x] New Feature (non-breaking change which adds functionality) --------- Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -1597,49 +1597,48 @@ func (p *Parser) parseSetVariable() (*Command, error) {
|
||||
func (p *Parser) parseSetDefault() (*Command, error) {
|
||||
p.nextToken() // consume DEFAULT
|
||||
|
||||
var modelType, modelProvider, modelInstance, modelName string
|
||||
var modelType, compositeModelName string
|
||||
var err error
|
||||
|
||||
switch p.curToken.Type {
|
||||
case TokenLLM:
|
||||
case TokenChat:
|
||||
modelType = "chat"
|
||||
case TokenVLM:
|
||||
modelType = "image2text"
|
||||
case TokenVision:
|
||||
modelType = "vision"
|
||||
case TokenEmbedding:
|
||||
modelType = "embedding"
|
||||
case TokenReranker:
|
||||
case TokenRerank:
|
||||
modelType = "rerank"
|
||||
case TokenASR:
|
||||
modelType = "asr"
|
||||
case TokenTTS:
|
||||
modelType = "tts"
|
||||
case TokenOCR:
|
||||
modelType = "ocr"
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown model type: %s", p.curToken.Value)
|
||||
}
|
||||
p.nextToken() // pass model type
|
||||
|
||||
p.nextToken()
|
||||
modelProvider, err = p.parseQuotedString()
|
||||
if p.curToken.Type != TokenModel {
|
||||
return nil, fmt.Errorf("expected MODEL")
|
||||
}
|
||||
p.nextToken() // pass MODEL
|
||||
|
||||
// Format: 'provider/instance/model' or just 'message'
|
||||
if p.curToken.Type != TokenQuotedString {
|
||||
return nil, fmt.Errorf("expected quoted string with format provider/instance/model")
|
||||
}
|
||||
|
||||
compositeModelName, err = p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p.nextToken()
|
||||
modelInstance, err = p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p.nextToken()
|
||||
modelName, err = p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("set_default_model")
|
||||
cmd.Params["model_type"] = modelType
|
||||
cmd.Params["model_provider"] = modelProvider
|
||||
cmd.Params["model_instance"] = modelInstance
|
||||
cmd.Params["model_name"] = modelName
|
||||
cmd.Params["composite_model_name"] = compositeModelName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
@@ -1717,26 +1716,33 @@ func (p *Parser) parseResetCommand() (*Command, error) {
|
||||
|
||||
var modelType string
|
||||
switch p.curToken.Type {
|
||||
case TokenLLM:
|
||||
modelType = "llm_id"
|
||||
case TokenVLM:
|
||||
modelType = "img2txt_id"
|
||||
case TokenChat:
|
||||
modelType = "chat"
|
||||
case TokenVision:
|
||||
modelType = "vision"
|
||||
case TokenEmbedding:
|
||||
modelType = "embd_id"
|
||||
case TokenReranker:
|
||||
modelType = "reranker_id"
|
||||
modelType = "embedding"
|
||||
case TokenRerank:
|
||||
modelType = "rerank"
|
||||
case TokenASR:
|
||||
modelType = "asr_id"
|
||||
modelType = "asr"
|
||||
case TokenTTS:
|
||||
modelType = "tts_id"
|
||||
modelType = "tts"
|
||||
case TokenOCR:
|
||||
modelType = "ocr"
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown model type: %s", p.curToken.Value)
|
||||
}
|
||||
|
||||
cmd := NewCommand("reset_default_model")
|
||||
cmd.Params["model_type"] = modelType
|
||||
|
||||
p.nextToken()
|
||||
|
||||
if p.curToken.Type != TokenModel {
|
||||
return nil, fmt.Errorf("expected MODEL")
|
||||
}
|
||||
p.nextToken() // pass MODEL
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
@@ -2144,7 +2150,7 @@ func (p *Parser) parseDisableCommand() (*Command, error) {
|
||||
func (p *Parser) parseChatCommand() (*Command, error) {
|
||||
p.nextToken() // consume CHAT
|
||||
|
||||
var modelName string
|
||||
var compositeModelName string
|
||||
var message string
|
||||
|
||||
// Check if we have a quoted string that looks like a model identifier (contains two slashes)
|
||||
@@ -2156,7 +2162,7 @@ func (p *Parser) parseChatCommand() (*Command, error) {
|
||||
slashCount := strings.Count(firstArg, "/")
|
||||
if slashCount == 2 {
|
||||
// This is likely a model identifier, expect another quoted string for message
|
||||
modelName = firstArg
|
||||
compositeModelName = firstArg
|
||||
p.nextToken()
|
||||
|
||||
// After model name, expect message
|
||||
@@ -2184,8 +2190,8 @@ func (p *Parser) parseChatCommand() (*Command, error) {
|
||||
}
|
||||
|
||||
cmd := NewCommand("chat_to_model")
|
||||
if modelName != "" {
|
||||
cmd.Params["model_name"] = modelName
|
||||
if compositeModelName != "" {
|
||||
cmd.Params["composite_model_name"] = compositeModelName
|
||||
}
|
||||
cmd.Params["message"] = message
|
||||
cmd.Params["reasoning"] = false
|
||||
@@ -2213,7 +2219,7 @@ func (p *Parser) parseUseCommand() (*Command, error) {
|
||||
p.nextToken() // consume MODEL
|
||||
|
||||
// Parse model identifier in format 'provider/instance/model'
|
||||
modelIdentifier, err := p.parseQuotedString()
|
||||
compositeModelName, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("expected model identifier in format 'provider/instance/model': %w", err)
|
||||
}
|
||||
@@ -2225,7 +2231,7 @@ func (p *Parser) parseUseCommand() (*Command, error) {
|
||||
}
|
||||
|
||||
cmd := NewCommand("use_model")
|
||||
cmd.Params["model_identifier"] = modelIdentifier
|
||||
cmd.Params["composite_model_name"] = compositeModelName
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user