Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

generator.py 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. from flask_login import current_user
  2. from flask_restful import Resource, reqparse
  3. from controllers.console import api
  4. from controllers.console.app.error import (
  5. CompletionRequestError,
  6. ProviderModelCurrentlyNotSupportError,
  7. ProviderNotInitializeError,
  8. ProviderQuotaExceededError,
  9. )
  10. from controllers.console.wraps import account_initialization_required, setup_required
  11. from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
  12. from core.llm_generator.llm_generator import LLMGenerator
  13. from core.model_runtime.errors.invoke import InvokeError
  14. from libs.login import login_required
  15. class RuleGenerateApi(Resource):
  16. @setup_required
  17. @login_required
  18. @account_initialization_required
  19. def post(self):
  20. parser = reqparse.RequestParser()
  21. parser.add_argument("instruction", type=str, required=True, nullable=False, location="json")
  22. parser.add_argument("model_config", type=dict, required=True, nullable=False, location="json")
  23. parser.add_argument("no_variable", type=bool, required=True, default=False, location="json")
  24. args = parser.parse_args()
  25. account = current_user
  26. try:
  27. rules = LLMGenerator.generate_rule_config(
  28. tenant_id=account.current_tenant_id,
  29. instruction=args["instruction"],
  30. model_config=args["model_config"],
  31. no_variable=args["no_variable"],
  32. )
  33. except ProviderTokenNotInitError as ex:
  34. raise ProviderNotInitializeError(ex.description)
  35. except QuotaExceededError:
  36. raise ProviderQuotaExceededError()
  37. except ModelCurrentlyNotSupportError:
  38. raise ProviderModelCurrentlyNotSupportError()
  39. except InvokeError as e:
  40. raise CompletionRequestError(e.description)
  41. return rules
  42. class RuleCodeGenerateApi(Resource):
  43. @setup_required
  44. @login_required
  45. @account_initialization_required
  46. def post(self):
  47. parser = reqparse.RequestParser()
  48. parser.add_argument("instruction", type=str, required=True, nullable=False, location="json")
  49. parser.add_argument("model_config", type=dict, required=True, nullable=False, location="json")
  50. parser.add_argument("no_variable", type=bool, required=True, default=False, location="json")
  51. parser.add_argument("code_language", type=str, required=False, default="javascript", location="json")
  52. args = parser.parse_args()
  53. account = current_user
  54. try:
  55. code_result = LLMGenerator.generate_code(
  56. tenant_id=account.current_tenant_id,
  57. instruction=args["instruction"],
  58. model_config=args["model_config"],
  59. code_language=args["code_language"],
  60. )
  61. except ProviderTokenNotInitError as ex:
  62. raise ProviderNotInitializeError(ex.description)
  63. except QuotaExceededError:
  64. raise ProviderQuotaExceededError()
  65. except ModelCurrentlyNotSupportError:
  66. raise ProviderModelCurrentlyNotSupportError()
  67. except InvokeError as e:
  68. raise CompletionRequestError(e.description)
  69. return code_result
  70. class RuleStructuredOutputGenerateApi(Resource):
  71. @setup_required
  72. @login_required
  73. @account_initialization_required
  74. def post(self):
  75. parser = reqparse.RequestParser()
  76. parser.add_argument("instruction", type=str, required=True, nullable=False, location="json")
  77. parser.add_argument("model_config", type=dict, required=True, nullable=False, location="json")
  78. args = parser.parse_args()
  79. account = current_user
  80. try:
  81. structured_output = LLMGenerator.generate_structured_output(
  82. tenant_id=account.current_tenant_id,
  83. instruction=args["instruction"],
  84. model_config=args["model_config"],
  85. )
  86. except ProviderTokenNotInitError as ex:
  87. raise ProviderNotInitializeError(ex.description)
  88. except QuotaExceededError:
  89. raise ProviderQuotaExceededError()
  90. except ModelCurrentlyNotSupportError:
  91. raise ProviderModelCurrentlyNotSupportError()
  92. except InvokeError as e:
  93. raise CompletionRequestError(e.description)
  94. return structured_output
  95. api.add_resource(RuleGenerateApi, "/rule-generate")
  96. api.add_resource(RuleCodeGenerateApi, "/rule-code-generate")
  97. api.add_resource(RuleStructuredOutputGenerateApi, "/rule-structured-output-generate")