Spaces:
Paused
Paused
| import os | |
| from flask_login import current_user | |
| from flask_restful import Resource, reqparse | |
| from controllers.console import api | |
| from controllers.console.app.error import ( | |
| CompletionRequestError, | |
| ProviderModelCurrentlyNotSupportError, | |
| ProviderNotInitializeError, | |
| ProviderQuotaExceededError, | |
| ) | |
| from controllers.console.wraps import account_initialization_required, setup_required | |
| from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError | |
| from core.llm_generator.llm_generator import LLMGenerator | |
| from core.model_runtime.errors.invoke import InvokeError | |
| from libs.login import login_required | |
| class RuleGenerateApi(Resource): | |
| 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 rules | |
| class RuleCodeGenerateApi(Resource): | |
| 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_result | |
| api.add_resource(RuleGenerateApi, "/rule-generate") | |
| api.add_resource(RuleCodeGenerateApi, "/rule-code-generate") | |