plugin.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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, plugin_data
  5. from controllers.inner_api.wraps import plugin_inner_api_only
  6. from core.plugin.entities.request import RequestInvokeLLM, RequestInvokeModeration, RequestInvokeRerank, RequestInvokeSpeech2Text, RequestInvokeTTS, RequestInvokeTextEmbedding, RequestInvokeTool
  7. from libs.helper import compact_generate_response
  8. from models.account import Tenant
  9. from services.plugin.plugin_invoke_service import PluginInvokeService
  10. class PluginInvokeLLMApi(Resource):
  11. @setup_required
  12. @plugin_inner_api_only
  13. @get_tenant
  14. @plugin_data(payload_type=RequestInvokeLLM)
  15. def post(self, user_id: str, tenant_model: Tenant, payload: RequestInvokeLLM):
  16. pass
  17. class PluginInvokeTextEmbeddingApi(Resource):
  18. @setup_required
  19. @plugin_inner_api_only
  20. @get_tenant
  21. @plugin_data(payload_type=RequestInvokeTextEmbedding)
  22. def post(self, user_id: str, tenant_model: Tenant, payload: RequestInvokeTextEmbedding):
  23. pass
  24. class PluginInvokeRerankApi(Resource):
  25. @setup_required
  26. @plugin_inner_api_only
  27. @get_tenant
  28. @plugin_data(payload_type=RequestInvokeRerank)
  29. def post(self, user_id: str, tenant_model: Tenant, payload: RequestInvokeRerank):
  30. pass
  31. class PluginInvokeTTSApi(Resource):
  32. @setup_required
  33. @plugin_inner_api_only
  34. @get_tenant
  35. @plugin_data(payload_type=RequestInvokeTTS)
  36. def post(self, user_id: str, tenant_model: Tenant, payload: RequestInvokeTTS):
  37. pass
  38. class PluginInvokeSpeech2TextApi(Resource):
  39. @setup_required
  40. @plugin_inner_api_only
  41. @get_tenant
  42. @plugin_data(payload_type=RequestInvokeSpeech2Text)
  43. def post(self, user_id: str, tenant_model: Tenant, payload: RequestInvokeSpeech2Text):
  44. pass
  45. class PluginInvokeModerationApi(Resource):
  46. @setup_required
  47. @plugin_inner_api_only
  48. @get_tenant
  49. @plugin_data(payload_type=RequestInvokeModeration)
  50. def post(self, user_id: str, tenant_model: Tenant, payload: RequestInvokeModeration):
  51. pass
  52. class PluginInvokeToolApi(Resource):
  53. @setup_required
  54. @plugin_inner_api_only
  55. @get_tenant
  56. @plugin_data(payload_type=RequestInvokeTool)
  57. def post(self, user_id: str, tenant_model: Tenant):
  58. parser = reqparse.RequestParser()
  59. parser.add_argument('provider', type=dict, required=True, location='json')
  60. parser.add_argument('tool', type=dict, required=True, location='json')
  61. parser.add_argument('parameters', type=dict, required=True, location='json')
  62. args = parser.parse_args()
  63. response = PluginInvokeService.invoke_tool(
  64. user_id, tenant_model, args['provider'], args['tool'], args['parameters']
  65. )
  66. return compact_generate_response(response)
  67. class PluginInvokeNodeApi(Resource):
  68. @setup_required
  69. @plugin_inner_api_only
  70. @get_tenant
  71. def post(self, user_id: str, tenant_model: Tenant):
  72. parser = reqparse.RequestParser()
  73. args = parser.parse_args()
  74. return {'message': 'success'}
  75. api.add_resource(PluginInvokeLLMApi, '/invoke/llm')
  76. api.add_resource(PluginInvokeTextEmbeddingApi, '/invoke/text-embedding')
  77. api.add_resource(PluginInvokeRerankApi, '/invoke/rerank')
  78. api.add_resource(PluginInvokeTTSApi, '/invoke/tts')
  79. api.add_resource(PluginInvokeSpeech2TextApi, '/invoke/speech2text')
  80. api.add_resource(PluginInvokeModerationApi, '/invoke/moderation')
  81. api.add_resource(PluginInvokeToolApi, '/invoke/tool')
  82. api.add_resource(PluginInvokeNodeApi, '/invoke/node')