|  | @@ -0,0 +1,59 @@
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from flask_restful import Resource, reqparse
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from controllers.console.setup import setup_required
 | 
	
		
			
				|  |  | +from controllers.inner_api import api
 | 
	
		
			
				|  |  | +from controllers.inner_api.plugin.wraps import get_tenant
 | 
	
		
			
				|  |  | +from controllers.inner_api.wraps import plugin_inner_api_only
 | 
	
		
			
				|  |  | +from libs.helper import compact_generate_response
 | 
	
		
			
				|  |  | +from models.account import Tenant
 | 
	
		
			
				|  |  | +from services.plugin.plugin_invoke_service import PluginInvokeService
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class PluginInvokeModelApi(Resource):
 | 
	
		
			
				|  |  | +    @setup_required
 | 
	
		
			
				|  |  | +    @plugin_inner_api_only
 | 
	
		
			
				|  |  | +    @get_tenant
 | 
	
		
			
				|  |  | +    def post(self, user_id: str, tenant_model: Tenant):
 | 
	
		
			
				|  |  | +        parser = reqparse.RequestParser()
 | 
	
		
			
				|  |  | +        parser.add_argument('provider', type=dict, required=True, location='json')
 | 
	
		
			
				|  |  | +        parser.add_argument('model', type=dict, required=True, location='json')
 | 
	
		
			
				|  |  | +        parser.add_argument('parameters', type=dict, required=True, location='json')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        args = parser.parse_args()
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class PluginInvokeToolApi(Resource):
 | 
	
		
			
				|  |  | +    @setup_required
 | 
	
		
			
				|  |  | +    @plugin_inner_api_only
 | 
	
		
			
				|  |  | +    @get_tenant
 | 
	
		
			
				|  |  | +    def post(self, user_id: str, tenant_model: Tenant):
 | 
	
		
			
				|  |  | +        parser = reqparse.RequestParser()
 | 
	
		
			
				|  |  | +        parser.add_argument('provider', type=dict, required=True, location='json')
 | 
	
		
			
				|  |  | +        parser.add_argument('tool', type=dict, required=True, location='json')
 | 
	
		
			
				|  |  | +        parser.add_argument('parameters', type=dict, required=True, location='json')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        args = parser.parse_args()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        response = PluginInvokeService.invoke_tool(user_id, tenant_model, 
 | 
	
		
			
				|  |  | +                                                   args['provider'], args['tool'], 
 | 
	
		
			
				|  |  | +                                                   args['parameters'])
 | 
	
		
			
				|  |  | +        return compact_generate_response(response)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class PluginInvokeNodeApi(Resource):
 | 
	
		
			
				|  |  | +    @setup_required
 | 
	
		
			
				|  |  | +    @plugin_inner_api_only
 | 
	
		
			
				|  |  | +    @get_tenant
 | 
	
		
			
				|  |  | +    def post(self, user_id: str, tenant_model: Tenant):
 | 
	
		
			
				|  |  | +        parser = reqparse.RequestParser()
 | 
	
		
			
				|  |  | +        args = parser.parse_args()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return {
 | 
	
		
			
				|  |  | +            'message': 'success'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +api.add_resource(PluginInvokeModelApi, '/invoke/model')
 | 
	
		
			
				|  |  | +api.add_resource(PluginInvokeToolApi, '/invoke/tool')
 | 
	
		
			
				|  |  | +api.add_resource(PluginInvokeNodeApi, '/invoke/node')
 |