zhipu_model_provider.py 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # coding=utf-8
  2. """
  3. @project: maxkb
  4. @Author:虎
  5. @file: zhipu_model_provider.py
  6. @date:2024/04/19 13:5
  7. @desc:
  8. """
  9. import os
  10. from common.utils.common import get_file_content
  11. from models_provider.base_model_provider import ModelProvideInfo, ModelTypeConst, ModelInfo, IModelProvider, \
  12. ModelInfoManage
  13. from models_provider.impl.zhipu_model_provider.credential.image import ZhiPuImageModelCredential
  14. from models_provider.impl.zhipu_model_provider.credential.llm import ZhiPuLLMModelCredential
  15. from models_provider.impl.zhipu_model_provider.credential.tti import ZhiPuTextToImageModelCredential
  16. from models_provider.impl.zhipu_model_provider.model.image import ZhiPuImage
  17. from models_provider.impl.zhipu_model_provider.model.llm import ZhipuChatModel
  18. from models_provider.impl.zhipu_model_provider.model.tti import ZhiPuTextToImage
  19. from maxkb.conf import PROJECT_DIR
  20. from django.utils.translation import gettext as _
  21. zhipu_model_credential = ZhiPuLLMModelCredential()
  22. zhipu_image_model_credential = ZhiPuImageModelCredential()
  23. zhipu_tti_model_credential = ZhiPuTextToImageModelCredential()
  24. model_info_list = [
  25. ModelInfo('glm-4', '', ModelTypeConst.LLM, zhipu_model_credential, ZhipuChatModel),
  26. ModelInfo('glm-4v', '', ModelTypeConst.LLM, zhipu_model_credential, ZhipuChatModel),
  27. ModelInfo('glm-3-turbo', '', ModelTypeConst.LLM, zhipu_model_credential, ZhipuChatModel)
  28. ]
  29. model_info_image_list = [
  30. ModelInfo('glm-4v-plus', _('Have strong multi-modal understanding capabilities. Able to understand up to five images simultaneously and supports video content understanding'),
  31. ModelTypeConst.IMAGE, zhipu_image_model_credential,
  32. ZhiPuImage),
  33. ModelInfo('glm-4v', _('Focus on single picture understanding. Suitable for scenarios requiring efficient image analysis'),
  34. ModelTypeConst.IMAGE, zhipu_image_model_credential,
  35. ZhiPuImage),
  36. ModelInfo('glm-4v-flash', _('Focus on single picture understanding. Suitable for scenarios requiring efficient image analysis (free)'),
  37. ModelTypeConst.IMAGE, zhipu_image_model_credential,
  38. ZhiPuImage),
  39. ]
  40. model_info_tti_list = [
  41. ModelInfo('cogview-3', _('Quickly and accurately generate images based on user text descriptions. Resolution supports 1024x1024'),
  42. ModelTypeConst.TTI, zhipu_tti_model_credential,
  43. ZhiPuTextToImage),
  44. ModelInfo('cogview-3-plus', _('Generate high-quality images based on user text descriptions, supporting multiple image sizes'),
  45. ModelTypeConst.TTI, zhipu_tti_model_credential,
  46. ZhiPuTextToImage),
  47. ModelInfo('cogview-3-flash', _('Generate high-quality images based on user text descriptions, supporting multiple image sizes (free)'),
  48. ModelTypeConst.TTI, zhipu_tti_model_credential,
  49. ZhiPuTextToImage),
  50. ]
  51. model_info_manage = (
  52. ModelInfoManage.builder()
  53. .append_model_info_list(model_info_list)
  54. .append_default_model_info(ModelInfo('glm-4', '', ModelTypeConst.LLM, zhipu_model_credential, ZhipuChatModel))
  55. .append_model_info_list(model_info_image_list)
  56. .append_default_model_info(model_info_image_list[0])
  57. .append_model_info_list(model_info_tti_list)
  58. .append_default_model_info(model_info_tti_list[0])
  59. .build()
  60. )
  61. class ZhiPuModelProvider(IModelProvider):
  62. def get_model_info_manage(self):
  63. return model_info_manage
  64. def get_model_provide_info(self):
  65. return ModelProvideInfo(provider='model_zhipu_provider', name=_('zhipu AI'), icon=get_file_content(
  66. os.path.join(PROJECT_DIR, "apps", 'models_provider', 'impl', 'zhipu_model_provider', 'icon',
  67. 'zhipuai_icon_svg')))