generator.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from flask_login import login_required, current_user
  2. from flask_restful import Resource, reqparse
  3. from controllers.console import api
  4. from controllers.console.app.error import ProviderNotInitializeError, ProviderQuotaExceededError, \
  5. CompletionRequestError, ProviderModelCurrentlyNotSupportError
  6. from controllers.console.setup import setup_required
  7. from controllers.console.wraps import account_initialization_required
  8. from core.generator.llm_generator import LLMGenerator
  9. from core.llm.error import ProviderTokenNotInitError, QuotaExceededError, LLMBadRequestError, LLMAPIConnectionError, \
  10. LLMAPIUnavailableError, LLMRateLimitError, LLMAuthorizationError, ModelCurrentlyNotSupportError
  11. class IntroductionGenerateApi(Resource):
  12. @setup_required
  13. @login_required
  14. @account_initialization_required
  15. def post(self):
  16. parser = reqparse.RequestParser()
  17. parser.add_argument('prompt_template', type=str, required=True, location='json')
  18. args = parser.parse_args()
  19. account = current_user
  20. try:
  21. answer = LLMGenerator.generate_introduction(
  22. account.current_tenant_id,
  23. args['prompt_template']
  24. )
  25. except ProviderTokenNotInitError as ex:
  26. raise ProviderNotInitializeError(ex.description)
  27. except QuotaExceededError:
  28. raise ProviderQuotaExceededError()
  29. except ModelCurrentlyNotSupportError:
  30. raise ProviderModelCurrentlyNotSupportError()
  31. except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError,
  32. LLMRateLimitError, LLMAuthorizationError) as e:
  33. raise CompletionRequestError(str(e))
  34. return {'introduction': answer}
  35. class RuleGenerateApi(Resource):
  36. @setup_required
  37. @login_required
  38. @account_initialization_required
  39. def post(self):
  40. parser = reqparse.RequestParser()
  41. parser.add_argument('audiences', type=str, required=True, nullable=False, location='json')
  42. parser.add_argument('hoping_to_solve', type=str, required=True, nullable=False, location='json')
  43. args = parser.parse_args()
  44. account = current_user
  45. try:
  46. rules = LLMGenerator.generate_rule_config(
  47. account.current_tenant_id,
  48. args['audiences'],
  49. args['hoping_to_solve']
  50. )
  51. except ProviderTokenNotInitError as ex:
  52. raise ProviderNotInitializeError(ex.description)
  53. except QuotaExceededError:
  54. raise ProviderQuotaExceededError()
  55. except ModelCurrentlyNotSupportError:
  56. raise ProviderModelCurrentlyNotSupportError()
  57. except (LLMBadRequestError, LLMAPIConnectionError, LLMAPIUnavailableError,
  58. LLMRateLimitError, LLMAuthorizationError) as e:
  59. raise CompletionRequestError(str(e))
  60. return rules
  61. api.add_resource(IntroductionGenerateApi, '/introduction-generate')
  62. api.add_resource(RuleGenerateApi, '/rule-generate')