generator.py 3.0 KB

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