| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | import osfrom flask_login import current_userfrom flask_restful import Resource, reqparsefrom controllers.console import apifrom controllers.console.app.error import (    CompletionRequestError,    ProviderModelCurrentlyNotSupportError,    ProviderNotInitializeError,    ProviderQuotaExceededError,)from controllers.console.wraps import account_initialization_required, setup_requiredfrom core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededErrorfrom core.llm_generator.llm_generator import LLMGeneratorfrom core.model_runtime.errors.invoke import InvokeErrorfrom libs.login import login_requiredclass RuleGenerateApi(Resource):    @setup_required    @login_required    @account_initialization_required    def post(self):        parser = reqparse.RequestParser()        parser.add_argument("instruction", type=str, required=True, nullable=False, location="json")        parser.add_argument("model_config", type=dict, required=True, nullable=False, location="json")        parser.add_argument("no_variable", type=bool, required=True, default=False, location="json")        args = parser.parse_args()        account = current_user        PROMPT_GENERATION_MAX_TOKENS = int(os.getenv("PROMPT_GENERATION_MAX_TOKENS", "512"))        try:            rules = LLMGenerator.generate_rule_config(                tenant_id=account.current_tenant_id,                instruction=args["instruction"],                model_config=args["model_config"],                no_variable=args["no_variable"],                rule_config_max_tokens=PROMPT_GENERATION_MAX_TOKENS,            )        except ProviderTokenNotInitError as ex:            raise ProviderNotInitializeError(ex.description)        except QuotaExceededError:            raise ProviderQuotaExceededError()        except ModelCurrentlyNotSupportError:            raise ProviderModelCurrentlyNotSupportError()        except InvokeError as e:            raise CompletionRequestError(e.description)        return rulesclass RuleCodeGenerateApi(Resource):    @setup_required    @login_required    @account_initialization_required    def post(self):        parser = reqparse.RequestParser()        parser.add_argument("instruction", type=str, required=True, nullable=False, location="json")        parser.add_argument("model_config", type=dict, required=True, nullable=False, location="json")        parser.add_argument("no_variable", type=bool, required=True, default=False, location="json")        parser.add_argument("code_language", type=str, required=False, default="javascript", location="json")        args = parser.parse_args()        account = current_user        CODE_GENERATION_MAX_TOKENS = int(os.getenv("CODE_GENERATION_MAX_TOKENS", "1024"))        try:            code_result = LLMGenerator.generate_code(                tenant_id=account.current_tenant_id,                instruction=args["instruction"],                model_config=args["model_config"],                code_language=args["code_language"],                max_tokens=CODE_GENERATION_MAX_TOKENS,            )        except ProviderTokenNotInitError as ex:            raise ProviderNotInitializeError(ex.description)        except QuotaExceededError:            raise ProviderQuotaExceededError()        except ModelCurrentlyNotSupportError:            raise ProviderModelCurrentlyNotSupportError()        except InvokeError as e:            raise CompletionRequestError(e.description)        return code_resultapi.add_resource(RuleGenerateApi, "/rule-generate")api.add_resource(RuleCodeGenerateApi, "/rule-code-generate")
 |