plugin.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from flask_restful import Resource, reqparse
  2. from controllers.console.setup import setup_required
  3. from controllers.inner_api import api
  4. from controllers.inner_api.plugin.wraps import get_tenant
  5. from controllers.inner_api.wraps import plugin_inner_api_only
  6. from libs.helper import compact_generate_response
  7. from models.account import Tenant
  8. from services.plugin.plugin_invoke_service import PluginInvokeService
  9. class PluginInvokeModelApi(Resource):
  10. @setup_required
  11. @plugin_inner_api_only
  12. @get_tenant
  13. def post(self, user_id: str, tenant_model: Tenant):
  14. parser = reqparse.RequestParser()
  15. parser.add_argument('provider', type=dict, required=True, location='json')
  16. parser.add_argument('model', type=dict, required=True, location='json')
  17. parser.add_argument('parameters', type=dict, required=True, location='json')
  18. args = parser.parse_args()
  19. class PluginInvokeToolApi(Resource):
  20. @setup_required
  21. @plugin_inner_api_only
  22. @get_tenant
  23. def post(self, user_id: str, tenant_model: Tenant):
  24. parser = reqparse.RequestParser()
  25. parser.add_argument('provider', type=dict, required=True, location='json')
  26. parser.add_argument('tool', type=dict, required=True, location='json')
  27. parser.add_argument('parameters', type=dict, required=True, location='json')
  28. args = parser.parse_args()
  29. response = PluginInvokeService.invoke_tool(user_id, tenant_model,
  30. args['provider'], args['tool'],
  31. args['parameters'])
  32. return compact_generate_response(response)
  33. class PluginInvokeNodeApi(Resource):
  34. @setup_required
  35. @plugin_inner_api_only
  36. @get_tenant
  37. def post(self, user_id: str, tenant_model: Tenant):
  38. parser = reqparse.RequestParser()
  39. args = parser.parse_args()
  40. return {
  41. 'message': 'success'
  42. }
  43. api.add_resource(PluginInvokeModelApi, '/invoke/model')
  44. api.add_resource(PluginInvokeToolApi, '/invoke/tool')
  45. api.add_resource(PluginInvokeNodeApi, '/invoke/node')