model_config.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding:utf-8 -*-
  2. import json
  3. from flask import request
  4. from flask_restful import Resource
  5. from flask_login import login_required, current_user
  6. from controllers.console import api
  7. from controllers.console.app import _get_app
  8. from controllers.console.setup import setup_required
  9. from controllers.console.wraps import account_initialization_required
  10. from events.app_event import app_model_config_was_updated
  11. from extensions.ext_database import db
  12. from models.model import AppModelConfig
  13. from services.app_model_config_service import AppModelConfigService
  14. class ModelConfigResource(Resource):
  15. @setup_required
  16. @login_required
  17. @account_initialization_required
  18. def post(self, app_id):
  19. """Modify app model config"""
  20. app_id = str(app_id)
  21. app_model = _get_app(app_id)
  22. # validate config
  23. model_configuration = AppModelConfigService.validate_configuration(
  24. account=current_user,
  25. config=request.json,
  26. mode=app_model.mode
  27. )
  28. new_app_model_config = AppModelConfig(
  29. app_id=app_model.id,
  30. provider="",
  31. model_id="",
  32. configs={},
  33. opening_statement=model_configuration['opening_statement'],
  34. suggested_questions=json.dumps(model_configuration['suggested_questions']),
  35. suggested_questions_after_answer=json.dumps(model_configuration['suggested_questions_after_answer']),
  36. speech_to_text=json.dumps(model_configuration['speech_to_text']),
  37. more_like_this=json.dumps(model_configuration['more_like_this']),
  38. sensitive_word_avoidance=json.dumps(model_configuration['sensitive_word_avoidance']),
  39. model=json.dumps(model_configuration['model']),
  40. user_input_form=json.dumps(model_configuration['user_input_form']),
  41. pre_prompt=model_configuration['pre_prompt'],
  42. agent_mode=json.dumps(model_configuration['agent_mode']),
  43. )
  44. db.session.add(new_app_model_config)
  45. db.session.flush()
  46. app_model.app_model_config_id = new_app_model_config.id
  47. db.session.commit()
  48. app_model_config_was_updated.send(
  49. app_model,
  50. app_model_config=new_app_model_config
  51. )
  52. return {'result': 'success'}
  53. api.add_resource(ModelConfigResource, '/apps/<uuid:app_id>/model-config')