mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-17 05:07:23 +08:00
Go CLI: fix key commands (#16306)
### What problem does this PR solve? ``` RAGFlow(api/default)> set key 'ragflow-JgnarFSCUiV99oOvvMDei7ZzZg1cVlqGd1AMHrHeKE4'; SUCCESS RAGFlow(api/default)> unset key; SUCCESS RAGFlow(api/default)> list provider 'zhipu-ai' instances; RAGFlow(api/default)> list providers; RAGFlow(api/default)> list available providers; RAGFlow(api/default)> list provider 'zhipu-ai' instance 'test' models; ``` ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --------- Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -142,14 +142,14 @@ func (p *Parser) parseAPIListCommands() (*Command, error) {
|
||||
return p.parseAPIListSearches()
|
||||
case TokenKeys:
|
||||
return p.parseAPIListAPIKeys()
|
||||
case TokenModel:
|
||||
return p.parseListModelProviders()
|
||||
case TokenSupported:
|
||||
return p.parseListModelsOfProvider()
|
||||
case TokenModels:
|
||||
return p.parseListModelsOfProvider()
|
||||
case TokenProviders:
|
||||
return p.parseListProviders()
|
||||
return p.parseAPIListProviders()
|
||||
case TokenProvider:
|
||||
return p.parseAPIListProviderCommands()
|
||||
case TokenInstances:
|
||||
return p.parseListInstances()
|
||||
case TokenIngestion:
|
||||
@@ -157,7 +157,7 @@ func (p *Parser) parseAPIListCommands() (*Command, error) {
|
||||
case TokenDefault:
|
||||
return p.parseListDefaultModels()
|
||||
case TokenAvailable:
|
||||
return p.parseListAvailableProviders()
|
||||
return p.parseAPIListAvailableProviders()
|
||||
case TokenFiles:
|
||||
return p.parseListFiles()
|
||||
case TokenQuotedString:
|
||||
@@ -306,21 +306,8 @@ func (p *Parser) parseAPIListAPIKeys() (*Command, error) {
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseListModelProviders() (*Command, error) {
|
||||
p.nextToken() // consume MODEL
|
||||
if p.curToken.Type != TokenProviders {
|
||||
return nil, fmt.Errorf("expected PROVIDERS")
|
||||
}
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_user_model_providers"), nil
|
||||
}
|
||||
|
||||
// parseListProviders parses LIST PROVIDERS command
|
||||
func (p *Parser) parseListProviders() (*Command, error) {
|
||||
// parseAPIListProviders parses LIST PROVIDERS command
|
||||
func (p *Parser) parseAPIListProviders() (*Command, error) {
|
||||
p.nextToken() // consume PROVIDERS
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
@@ -329,6 +316,64 @@ func (p *Parser) parseListProviders() (*Command, error) {
|
||||
return NewCommand("list_providers"), nil
|
||||
}
|
||||
|
||||
// LIST PROVIDER 'provider_name' INSTANCES
|
||||
func (p *Parser) parseAPIListProviderCommands() (*Command, error) {
|
||||
p.nextToken() // consume PROVIDER
|
||||
|
||||
providerName, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
switch p.curToken.Type {
|
||||
case TokenInstances:
|
||||
return p.parseListProviderInstances(providerName)
|
||||
case TokenInstance:
|
||||
return p.parseListProviderInstanceModels(providerName)
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown LIST target: %s", p.curToken.Value)
|
||||
}
|
||||
}
|
||||
|
||||
// LIST PROVIDER 'provider_name' INSTANCES
|
||||
func (p *Parser) parseListProviderInstances(providerName string) (*Command, error) {
|
||||
p.nextToken() // consume INSTANCES
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
cmd := NewCommand("api_list_provider_instances")
|
||||
cmd.Params["provider_name"] = providerName
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
// LIST PROVIDER 'provider_name' INSTANCE 'instance_name' MODELS
|
||||
func (p *Parser) parseListProviderInstanceModels(providerName string) (*Command, error) {
|
||||
p.nextToken() // consume INSTANCE
|
||||
|
||||
instanceName, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
if p.curToken.Type != TokenModels {
|
||||
return nil, fmt.Errorf("expected MODELS")
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
cmd := NewCommand("api_list_provider_instance_models")
|
||||
cmd.Params["provider_name"] = providerName
|
||||
cmd.Params["instance_name"] = instanceName
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseListDefaultModels() (*Command, error) {
|
||||
p.nextToken() // consume DEFAULT
|
||||
if p.curToken.Type != TokenModels {
|
||||
@@ -342,6 +387,16 @@ func (p *Parser) parseListDefaultModels() (*Command, error) {
|
||||
return NewCommand("list_user_default_models"), nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIListAvailableProviders() (*Command, error) {
|
||||
p.nextToken() // consume AVAILABLE
|
||||
|
||||
if p.curToken.Type != TokenProviders {
|
||||
return nil, fmt.Errorf("expected PROVIDERS")
|
||||
}
|
||||
|
||||
return NewCommand("api_list_available_providers"), nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseListFiles() (*Command, error) {
|
||||
p.nextToken() // consume FILES
|
||||
if p.curToken.Type != TokenOf {
|
||||
@@ -1828,7 +1883,7 @@ func (p *Parser) parseIdentifierList() ([]string, error) {
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseSetCommand() (*Command, error) {
|
||||
func (p *Parser) parseAPISetCommands() (*Command, error) {
|
||||
p.nextToken() // consume SET
|
||||
|
||||
if p.curToken.Type == TokenVar {
|
||||
@@ -1837,8 +1892,8 @@ func (p *Parser) parseSetCommand() (*Command, error) {
|
||||
if p.curToken.Type == TokenDefault {
|
||||
return p.parseSetDefault()
|
||||
}
|
||||
if p.curToken.Type == TokenToken {
|
||||
return p.parseSetToken()
|
||||
if p.curToken.Type == TokenKey {
|
||||
return p.parseAPISetAPIKey()
|
||||
}
|
||||
if p.curToken.Type == TokenMetadata {
|
||||
return p.parseSetMeta()
|
||||
@@ -1929,26 +1984,26 @@ func (p *Parser) parseSetDefault() (*Command, error) {
|
||||
}
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseSetToken() (*Command, error) {
|
||||
p.nextToken() // consume TOKEN
|
||||
func (p *Parser) parseAPISetAPIKey() (*Command, error) {
|
||||
p.nextToken() // consume KEY
|
||||
|
||||
tokenValue, err := p.parseQuotedString()
|
||||
apiKey, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("set_token")
|
||||
cmd.Params["token"] = tokenValue
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
|
||||
cmd := NewCommand("api_set_api_key")
|
||||
cmd.Params["api_key"] = apiKey
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -2038,37 +2093,6 @@ func (p *Parser) parseResetCommand() (*Command, error) {
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseGenerateCommand() (*Command, error) {
|
||||
p.nextToken() // consume GENERATE
|
||||
if p.curToken.Type != TokenToken {
|
||||
return nil, fmt.Errorf("expected TOKEN")
|
||||
}
|
||||
p.nextToken()
|
||||
if p.curToken.Type != TokenFor {
|
||||
return nil, fmt.Errorf("expected FOR")
|
||||
}
|
||||
p.nextToken()
|
||||
if p.curToken.Type != TokenUser {
|
||||
return nil, fmt.Errorf("expected USER")
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
userName, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("generate_token")
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseImportCommand() (*Command, error) {
|
||||
p.nextToken() // consume IMPORT
|
||||
documentPaths, err := p.parseQuotedString()
|
||||
@@ -3639,8 +3663,6 @@ func (p *Parser) parseUserStatement() (*Command, error) {
|
||||
return p.parseCreateCommand()
|
||||
case TokenDrop:
|
||||
return p.parseDropCommand()
|
||||
case TokenSet:
|
||||
return p.parseSetCommand()
|
||||
case TokenUnset:
|
||||
return p.parseUnsetCommand()
|
||||
case TokenReset:
|
||||
@@ -3669,16 +3691,16 @@ func (p *Parser) parseUserStatement() (*Command, error) {
|
||||
func (p *Parser) parseUnsetCommand() (*Command, error) {
|
||||
p.nextToken() // consume UNSET
|
||||
|
||||
if p.curToken.Type != TokenToken {
|
||||
if p.curToken.Type != TokenKey {
|
||||
return nil, fmt.Errorf("expected TOKEN after UNSET")
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("unset_token"), nil
|
||||
return NewCommand("api_unset_api_key"), nil
|
||||
}
|
||||
|
||||
// parseGetCommand parses: GET CHUNK or GET METADATA
|
||||
|
||||
Reference in New Issue
Block a user