mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-06-29 15:31:05 +08:00
Go CLI: list provider instance models, sync and list provider (#16311)
### What problem does this PR solve? ``` RAGFlow(api/default)> list provider 'zhipu-ai' instance 'test' models sync; +------------+---------------+------------+-------------+------------------+---------------------------------------------+ | dimensions | max_dimension | max_tokens | model_types | name | thinking | +------------+---------------+------------+-------------+------------------+---------------------------------------------+ | | | 128000 | [chat] | glm-4.5@z-ai | map[clear_thinking:true default_value:true] | | | | 128000 | [chat] | glm-4.5-air@z-ai | map[clear_thinking:true default_value:true] | | | | 202752 | [chat] | glm-4.6@z-ai | map[clear_thinking:true default_value:true] | | | | 202752 | [chat] | glm-4.7@z-ai | map[clear_thinking:true default_value:true] | | | | 202752 | [chat] | glm-5@z-ai | map[clear_thinking:true default_value:true] | | | | 200000 | [chat] | glm-5-turbo@z-ai | map[clear_thinking:true default_value:true] | | | | 202752 | [chat] | glm-5.1@z-ai | map[clear_thinking:true default_value:true] | | | | | [chat] | glm-5.2@z-ai | | +------------+---------------+------------+-------------+------------------+---------------------------------------------+ RAGFlow(api/default)> list provider 'zhipu-ai' instance 'test' models; RAGFlow(api/default)> list dataset 'aaa' ingestion tasks; RAGFlow(api/default)> list dataset '0abe79f9423311f1ad8d38a74640adcc' documents; ``` --------- Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -126,11 +126,9 @@ func (c *CLI) ExecuteAdminCommand(cmd *Command) (ResponseIf, error) {
|
|||||||
case "admin_list_provider_models":
|
case "admin_list_provider_models":
|
||||||
return c.CommonListModelsCommand(cmd)
|
return c.CommonListModelsCommand(cmd)
|
||||||
case "admin_list_provider_instance_models":
|
case "admin_list_provider_instance_models":
|
||||||
return c.CommonListInstanceModels(cmd)
|
return c.CommonListInstanceModelsCommand(cmd)
|
||||||
case "admin_list_provider_instances":
|
case "admin_list_provider_instances":
|
||||||
return c.CommonListProviderInstances(cmd)
|
return c.CommonListProviderInstances(cmd)
|
||||||
case "list_supported_models":
|
|
||||||
return c.ListSupportedModels(cmd)
|
|
||||||
case "admin_show_model":
|
case "admin_show_model":
|
||||||
return c.CommonShowModel(cmd)
|
return c.CommonShowModel(cmd)
|
||||||
case "admin_list_providers":
|
case "admin_list_providers":
|
||||||
@@ -338,10 +336,10 @@ func (c *CLI) ExecuteUserCommand(cmd *Command) (ResponseIf, error) {
|
|||||||
return c.CommonShowProviderCommand(cmd)
|
return c.CommonShowProviderCommand(cmd)
|
||||||
case "list_provider_models":
|
case "list_provider_models":
|
||||||
return c.CommonListModelsCommand(cmd)
|
return c.CommonListModelsCommand(cmd)
|
||||||
case "list_supported_models":
|
|
||||||
return c.ListSupportedModels(cmd)
|
|
||||||
case "api_list_provider_instance_models":
|
case "api_list_provider_instance_models":
|
||||||
return c.CommonListInstanceModels(cmd)
|
return c.CommonListInstanceModelsCommand(cmd)
|
||||||
|
case "api_list_provider_instance_models_sync":
|
||||||
|
return c.CommonListInstanceModelsSyncCommand(cmd)
|
||||||
case "show_provider_model":
|
case "show_provider_model":
|
||||||
return c.CommonShowProviderModelCommand(cmd)
|
return c.CommonShowProviderModelCommand(cmd)
|
||||||
case "show_model":
|
case "show_model":
|
||||||
@@ -351,8 +349,8 @@ func (c *CLI) ExecuteUserCommand(cmd *Command) (ResponseIf, error) {
|
|||||||
// Provider commands
|
// Provider commands
|
||||||
case "add_provider":
|
case "add_provider":
|
||||||
return c.AddProvider(cmd)
|
return c.AddProvider(cmd)
|
||||||
case "list_providers":
|
case "api_list_providers":
|
||||||
return c.ListProviders(cmd)
|
return c.APIListProviders(cmd)
|
||||||
case "delete_provider":
|
case "delete_provider":
|
||||||
return c.DeleteProvider(cmd)
|
return c.DeleteProvider(cmd)
|
||||||
// Provider instance commands
|
// Provider instance commands
|
||||||
@@ -411,7 +409,7 @@ func (c *CLI) ExecuteUserCommand(cmd *Command) (ResponseIf, error) {
|
|||||||
return c.SetDefaultModel(cmd)
|
return c.SetDefaultModel(cmd)
|
||||||
case "reset_default_model":
|
case "reset_default_model":
|
||||||
return c.ResetDefaultModel(cmd)
|
return c.ResetDefaultModel(cmd)
|
||||||
case "list_user_default_models":
|
case "api_list_default_models":
|
||||||
return c.ListDefaultModels(cmd)
|
return c.ListDefaultModels(cmd)
|
||||||
case "list_tasks_user_command":
|
case "list_tasks_user_command":
|
||||||
return c.ListTasksUserCommand(cmd)
|
return c.ListTasksUserCommand(cmd)
|
||||||
@@ -449,7 +447,7 @@ func (c *CLI) ExecuteUserCommand(cmd *Command) (ResponseIf, error) {
|
|||||||
return c.UserStartIngestionCommand(cmd)
|
return c.UserStartIngestionCommand(cmd)
|
||||||
case "user_stop_ingestion_command":
|
case "user_stop_ingestion_command":
|
||||||
return c.UserStopIngestionCommand(cmd)
|
return c.UserStopIngestionCommand(cmd)
|
||||||
case "user_list_ingestion_tasks":
|
case "api_list_ingestion_tasks":
|
||||||
return c.ListUserIngestionTasks(cmd)
|
return c.ListUserIngestionTasks(cmd)
|
||||||
case "user_remove_task_command":
|
case "user_remove_task_command":
|
||||||
return c.UserRemoveTaskCommand(cmd)
|
return c.UserRemoveTaskCommand(cmd)
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ func (c *CLI) CommonListProviderInstances(cmd *Command) (ResponseIf, error) {
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *CLI) CommonListInstanceModels(cmd *Command) (ResponseIf, error) {
|
func (c *CLI) CommonListInstanceModelsCommand(cmd *Command) (ResponseIf, error) {
|
||||||
|
|
||||||
providerName, ok := cmd.Params["provider_name"].(string)
|
providerName, ok := cmd.Params["provider_name"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -559,7 +559,7 @@ func (c *CLI) CommonListModelsCommand(cmd *Command) (ResponseIf, error) {
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *CLI) ListSupportedModels(cmd *Command) (ResponseIf, error) {
|
func (c *CLI) CommonListInstanceModelsSyncCommand(cmd *Command) (ResponseIf, error) {
|
||||||
|
|
||||||
providerName, ok := cmd.Params["provider_name"].(string)
|
providerName, ok := cmd.Params["provider_name"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -1327,9 +1327,8 @@ func (c *CLI) AddProvider(cmd *Command) (ResponseIf, error) {
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListProviders lists all providers
|
// APIListProviders lists added providers
|
||||||
// LIST PROVIDERS
|
func (c *CLI) APIListProviders(cmd *Command) (ResponseIf, error) {
|
||||||
func (c *CLI) ListProviders(cmd *Command) (ResponseIf, error) {
|
|
||||||
if c.Config.CLIMode != APIMode {
|
if c.Config.CLIMode != APIMode {
|
||||||
return nil, fmt.Errorf("this command is only allowed in USER mode")
|
return nil, fmt.Errorf("this command is only allowed in USER mode")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ func (p *Parser) parseAPIListCommands() (*Command, error) {
|
|||||||
case TokenDatasets:
|
case TokenDatasets:
|
||||||
return p.parseAPIListDatasets()
|
return p.parseAPIListDatasets()
|
||||||
case TokenDataset:
|
case TokenDataset:
|
||||||
return p.parseAPIListDatasetDocuments()
|
return p.parseAPIListDatasetCommands()
|
||||||
case TokenAgents:
|
case TokenAgents:
|
||||||
return p.parseAPIListAgents()
|
return p.parseAPIListAgents()
|
||||||
case TokenChats:
|
case TokenChats:
|
||||||
@@ -150,12 +150,10 @@ func (p *Parser) parseAPIListCommands() (*Command, error) {
|
|||||||
return p.parseAPIListProviders()
|
return p.parseAPIListProviders()
|
||||||
case TokenProvider:
|
case TokenProvider:
|
||||||
return p.parseAPIListProviderCommands()
|
return p.parseAPIListProviderCommands()
|
||||||
case TokenInstances:
|
|
||||||
return p.parseListInstances()
|
|
||||||
case TokenIngestion:
|
case TokenIngestion:
|
||||||
return p.parseUserListIngestionTasks()
|
return p.parseAPIListIngestionTasks()
|
||||||
case TokenDefault:
|
case TokenDefault:
|
||||||
return p.parseListDefaultModels()
|
return p.parseAPIListDefaultModels()
|
||||||
case TokenAvailable:
|
case TokenAvailable:
|
||||||
return p.parseAPIListAvailableProviders()
|
return p.parseAPIListAvailableProviders()
|
||||||
case TokenFiles:
|
case TokenFiles:
|
||||||
@@ -192,7 +190,7 @@ func (p *Parser) parseAPIListDatasets() (*Command, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LIST DATASET 'dataset_name' DOCUMENTS;
|
// LIST DATASET 'dataset_name' DOCUMENTS;
|
||||||
func (p *Parser) parseAPIListDatasetDocuments() (*Command, error) {
|
func (p *Parser) parseAPIListDatasetCommands() (*Command, error) {
|
||||||
p.nextToken() // consume DATASET
|
p.nextToken() // consume DATASET
|
||||||
|
|
||||||
datasetID, err := p.parseQuotedString()
|
datasetID, err := p.parseQuotedString()
|
||||||
@@ -201,17 +199,58 @@ func (p *Parser) parseAPIListDatasetDocuments() (*Command, error) {
|
|||||||
}
|
}
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
|
|
||||||
if p.curToken.Type != TokenDocuments {
|
switch p.curToken.Type {
|
||||||
return nil, fmt.Errorf("expected DOCUMENTS")
|
case TokenDocuments:
|
||||||
|
return p.parseAPIListDatasetDocuments(datasetID)
|
||||||
|
case TokenFiles:
|
||||||
|
return p.parseAPIListDatasetFiles(datasetID)
|
||||||
|
case TokenIngestion:
|
||||||
|
return p.parseAPIListDatasetIngestionTasks(datasetID)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unknown LIST target: %s", p.curToken.Value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Parser) parseAPIListDatasetDocuments(datasetID string) (*Command, error) {
|
||||||
|
p.nextToken() // consume DOCUMENTS
|
||||||
|
|
||||||
|
// Semicolon is optional
|
||||||
|
if p.curToken.Type == TokenSemicolon {
|
||||||
|
p.nextToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := NewCommand("api_list_dataset_documents")
|
cmd := NewCommand("api_list_dataset_documents")
|
||||||
cmd.Params["dataset_id"] = datasetID
|
cmd.Params["dataset_id"] = datasetID
|
||||||
|
return cmd, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Semicolon is optional for UNSET TOKEN
|
func (p *Parser) parseAPIListDatasetFiles(datasetName string) (*Command, error) {
|
||||||
|
p.nextToken() // consume FILES
|
||||||
|
|
||||||
|
// Semicolon is optional
|
||||||
if p.curToken.Type == TokenSemicolon {
|
if p.curToken.Type == TokenSemicolon {
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd := NewCommand("api_list_dataset_files")
|
||||||
|
cmd.Params["dataset_name"] = datasetName
|
||||||
|
return cmd, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Parser) parseAPIListDatasetIngestionTasks(datasetName string) (*Command, error) {
|
||||||
|
p.nextToken() // consume INGESTION
|
||||||
|
|
||||||
|
if p.curToken.Type != TokenTasks {
|
||||||
|
return nil, fmt.Errorf("expected TASKS")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Semicolon is optional
|
||||||
|
if p.curToken.Type == TokenSemicolon {
|
||||||
|
p.nextToken()
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd := NewCommand("api_list_ingestion_tasks")
|
||||||
|
cmd.Params["dataset_name"] = datasetName
|
||||||
return cmd, nil
|
return cmd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,7 +352,7 @@ func (p *Parser) parseAPIListProviders() (*Command, error) {
|
|||||||
if p.curToken.Type == TokenSemicolon {
|
if p.curToken.Type == TokenSemicolon {
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
}
|
}
|
||||||
return NewCommand("list_providers"), nil
|
return NewCommand("api_list_providers"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LIST PROVIDER 'provider_name' INSTANCES
|
// LIST PROVIDER 'provider_name' INSTANCES
|
||||||
@@ -350,6 +389,7 @@ func (p *Parser) parseListProviderInstances(providerName string) (*Command, erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LIST PROVIDER 'provider_name' INSTANCE 'instance_name' MODELS
|
// LIST PROVIDER 'provider_name' INSTANCE 'instance_name' MODELS
|
||||||
|
// LIST PROVIDER 'provider_name' INSTANCE 'instance_name' MODELS SYNC, get model list by API from remote server
|
||||||
func (p *Parser) parseListProviderInstanceModels(providerName string) (*Command, error) {
|
func (p *Parser) parseListProviderInstanceModels(providerName string) (*Command, error) {
|
||||||
p.nextToken() // consume INSTANCE
|
p.nextToken() // consume INSTANCE
|
||||||
|
|
||||||
@@ -364,17 +404,21 @@ func (p *Parser) parseListProviderInstanceModels(providerName string) (*Command,
|
|||||||
}
|
}
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
|
|
||||||
|
cmd := NewCommand("api_list_provider_instance_models")
|
||||||
|
if p.curToken.Type == TokenSync {
|
||||||
|
cmd = NewCommand("api_list_provider_instance_models_sync")
|
||||||
|
}
|
||||||
|
|
||||||
// Semicolon is optional
|
// Semicolon is optional
|
||||||
if p.curToken.Type == TokenSemicolon {
|
if p.curToken.Type == TokenSemicolon {
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
}
|
}
|
||||||
cmd := NewCommand("api_list_provider_instance_models")
|
|
||||||
cmd.Params["provider_name"] = providerName
|
cmd.Params["provider_name"] = providerName
|
||||||
cmd.Params["instance_name"] = instanceName
|
cmd.Params["instance_name"] = instanceName
|
||||||
return cmd, nil
|
return cmd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Parser) parseListDefaultModels() (*Command, error) {
|
func (p *Parser) parseAPIListDefaultModels() (*Command, error) {
|
||||||
p.nextToken() // consume DEFAULT
|
p.nextToken() // consume DEFAULT
|
||||||
if p.curToken.Type != TokenModels {
|
if p.curToken.Type != TokenModels {
|
||||||
return nil, fmt.Errorf("expected MODELS")
|
return nil, fmt.Errorf("expected MODELS")
|
||||||
@@ -384,7 +428,7 @@ func (p *Parser) parseListDefaultModels() (*Command, error) {
|
|||||||
if p.curToken.Type == TokenSemicolon {
|
if p.curToken.Type == TokenSemicolon {
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
}
|
}
|
||||||
return NewCommand("list_user_default_models"), nil
|
return NewCommand("api_list_default_models"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Parser) parseAPIListAvailableProviders() (*Command, error) {
|
func (p *Parser) parseAPIListAvailableProviders() (*Command, error) {
|
||||||
@@ -1595,31 +1639,6 @@ optionsLoop:
|
|||||||
return cmd, nil
|
return cmd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseListInstances parses LIST INSTANCES FROM PROVIDER <name> command
|
|
||||||
func (p *Parser) parseListInstances() (*Command, error) {
|
|
||||||
p.nextToken() // consume INSTANCES
|
|
||||||
|
|
||||||
if p.curToken.Type != TokenFrom {
|
|
||||||
return nil, fmt.Errorf("expected FROM")
|
|
||||||
}
|
|
||||||
p.nextToken()
|
|
||||||
|
|
||||||
providerName, err := p.parseQuotedString()
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("expected provider name after FROM PROVIDER: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd := NewCommand("list_provider_instances")
|
|
||||||
cmd.Params["provider_name"] = providerName
|
|
||||||
|
|
||||||
p.nextToken()
|
|
||||||
// Semicolon is optional
|
|
||||||
if p.curToken.Type == TokenSemicolon {
|
|
||||||
p.nextToken()
|
|
||||||
}
|
|
||||||
return cmd, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// parseShowInstance parses SHOW INSTANCE <name> FROM PROVIDER <name> command
|
// parseShowInstance parses SHOW INSTANCE <name> FROM PROVIDER <name> command
|
||||||
func (p *Parser) parseShowInstance() (*Command, error) {
|
func (p *Parser) parseShowInstance() (*Command, error) {
|
||||||
p.nextToken() // consume INSTANCE
|
p.nextToken() // consume INSTANCE
|
||||||
@@ -4198,7 +4217,7 @@ func (p *Parser) parseUserStopIngestion() (*Command, error) {
|
|||||||
return cmd, nil
|
return cmd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Parser) parseUserListIngestionTasks() (*Command, error) {
|
func (p *Parser) parseAPIListIngestionTasks() (*Command, error) {
|
||||||
p.nextToken() // consume Ingestion
|
p.nextToken() // consume Ingestion
|
||||||
|
|
||||||
if p.curToken.Type != TokenTasks {
|
if p.curToken.Type != TokenTasks {
|
||||||
@@ -4206,7 +4225,7 @@ func (p *Parser) parseUserListIngestionTasks() (*Command, error) {
|
|||||||
}
|
}
|
||||||
p.nextToken() // consume TASKS
|
p.nextToken() // consume TASKS
|
||||||
|
|
||||||
cmd := NewCommand("user_list_ingestion_tasks")
|
cmd := NewCommand("api_list_ingestion_tasks")
|
||||||
|
|
||||||
if p.curToken.Type == TokenFrom {
|
if p.curToken.Type == TokenFrom {
|
||||||
p.nextToken()
|
p.nextToken()
|
||||||
|
|||||||
Reference in New Issue
Block a user