Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from setting.models_provider.impl.azure_model_provider.azure_model_provider import AzureModelProvider
from setting.models_provider.impl.ollama_model_provider.ollama_model_provider import OllamaModelProvider
from setting.models_provider.impl.openai_model_provider.openai_model_provider import OpenAIModelProvider
from setting.models_provider.impl.qwen_model_provider.qwen_model_provider import QwenModelProvider
from setting.models_provider.impl.wenxin_model_provider.wenxin_model_provider import WenxinModelProvider
from setting.models_provider.impl.kimi_model_provider.kimi_model_provider import KimiModelProvider

Expand All @@ -21,3 +22,4 @@ class ModelProvideConstants(Enum):
model_ollama_provider = OllamaModelProvider()
model_openai_provider = OpenAIModelProvider()
model_kimi_provider = KimiModelProvider()
model_qwen_provider = QwenModelProvider()
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# coding=utf-8
"""
@project: maxkb
@Author:虎
@file: __init__.py.py
@date:2023/10/31 17:16
@desc:
"""
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 600 600" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" style="width: 100%; height: 100%; transform: translate3d(0px, 0px, 0px); content-visibility: visible;"><defs><clipPath id="__lottie_element_2"><rect width="600" height="600" x="0" y="0"></rect></clipPath></defs><g clip-path="url(#__lottie_element_2)"><g transform="matrix(1.15489661693573,0,0,1.15489661693573,-4617.662109375,397.115234375)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,4258.10009765625,-84.09300231933594)"><path fill="rgb(97,92,237)" fill-opacity="1" d=" M187.06500244140625,-60.0099983215332 C187.06500244140625,-60.0099983215332 218.23500061035156,-113.98999786376953 218.23500061035156,-113.98999786376953 C219.30499267578125,-115.83999633789062 219.84500122070312,-117.91999816894531 219.84500122070312,-119.98999786376953 C219.84500122070312,-122.05999755859375 219.30499267578125,-124.13999938964844 218.23500061035156,-125.98999786376953 C218.23500061035156,-125.98999786376953 183.59500122070312,-185.99000549316406 183.59500122070312,-185.99000549316406 C182.52499389648438,-187.83999633789062 181.0050048828125,-189.33999633789062 179.2050018310547,-190.3800048828125 C177.4149932861328,-191.4199981689453 175.34500122070312,-191.99000549316406 173.2050018310547,-191.99000549316406 C173.2050018310547,-191.99000549316406 -110.9229965209961,-191.8699951171875 -110.9229965209961,-191.8699951171875 C-110.9229965209961,-191.8699951171875 -145.48500061035156,-132.00999450683594 -145.48500061035156,-132.00999450683594 C-145.48500061035156,-132.00999450683594 -122.10600280761719,0.06199999898672104 -122.10600280761719,0.06199999898672104 C-122.10600280761719,0.06199999898672104 187.06500244140625,-60.0099983215332 187.06500244140625,-60.0099983215332z"></path></g></g><g transform="matrix(1.15489661693573,0,0,1.15489661693573,-4617.66455078125,397.120849609375)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,4258.10009765625,-84.09300231933594)"><path fill="rgb(97,92,237)" fill-opacity="1" d=" M41.564998626708984,-191.99000549316406 C41.564998626708984,-191.99000549316406 10.385000228881836,-245.99000549316406 10.385000228881836,-245.99000549316406 C8.244999885559082,-249.6999969482422 4.284999847412109,-251.99000549316406 -0.004999999888241291,-251.99000549316406 C-0.004999999888241291,-251.99000549316406 -69.28500366210938,-251.99000549316406 -69.28500366210938,-251.99000549316406 C-71.42500305175781,-251.99000549316406 -73.48500061035156,-251.4199981689453 -75.2750015258789,-250.3800048828125 C-77.07499694824219,-249.33999633789062 -78.59500122070312,-247.83999633789062 -79.67500305175781,-245.99000549316406 C-79.67500305175781,-245.99000549316406 -111.18199920654297,-191.4219970703125 -111.18199920654297,-191.4219970703125 C-111.18199920654297,-191.4219970703125 -145.48500061035156,-132.00999450683594 -145.48500061035156,-132.00999450683594 C-145.48500061035156,-132.00999450683594 41.564998626708984,-191.99000549316406 41.564998626708984,-191.99000549316406z"></path></g></g><g transform="matrix(-0.577448308467865,1.0001697540283203,-1.0001697540283203,-0.577448308467865,2674.726806640625,-4007.3779296875)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,4258.10009765625,-84.09300231933594)"><path fill="rgb(97,92,237)" fill-opacity="1" d=" M187.06500244140625,-60.0099983215332 C187.06500244140625,-60.0099983215332 218.23500061035156,-113.98999786376953 218.23500061035156,-113.98999786376953 C219.30499267578125,-115.83999633789062 219.84500122070312,-117.91999816894531 219.84500122070312,-119.98999786376953 C219.84500122070312,-122.05999755859375 219.30499267578125,-124.13999938964844 218.23500061035156,-125.98999786376953 C218.23500061035156,-125.98999786376953 183.59500122070312,-185.99000549316406 183.59500122070312,-185.99000549316406 C182.52499389648438,-187.83999633789062 181.0050048828125,-189.33999633789062 179.2050018310547,-190.3800048828125 C177.4149932861328,-191.4199981689453 175.34500122070312,-191.99000549316406 173.2050018310547,-191.99000549316406 C173.2050018310547,-191.99000549316406 -110.9229965209961,-191.8699951171875 -110.9229965209961,-191.8699951171875 C-110.9229965209961,-191.8699951171875 -145.48500061035156,-132.00999450683594 -145.48500061035156,-132.00999450683594 C-145.48500061035156,-132.00999450683594 -122.10600280761719,0.06199999898672104 -122.10600280761719,0.06199999898672104 C-122.10600280761719,0.06199999898672104 187.06500244140625,-60.0099983215332 187.06500244140625,-60.0099983215332z"></path></g></g><g transform="matrix(-0.577448308467865,1.0001697540283203,-1.0001697540283203,-0.577448308467865,2674.72314453125,-4007.3828125)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,4258.10009765625,-84.09300231933594)"><path fill="rgb(97,92,237)" fill-opacity="1" d=" M41.564998626708984,-191.99000549316406 C41.564998626708984,-191.99000549316406 10.385000228881836,-245.99000549316406 10.385000228881836,-245.99000549316406 C8.244999885559082,-249.6999969482422 4.284999847412109,-251.99000549316406 -0.004999999888241291,-251.99000549316406 C-0.004999999888241291,-251.99000549316406 -69.28500366210938,-251.99000549316406 -69.28500366210938,-251.99000549316406 C-71.42500305175781,-251.99000549316406 -73.48500061035156,-251.4199981689453 -75.2750015258789,-250.3800048828125 C-77.07499694824219,-249.33999633789062 -78.59500122070312,-247.83999633789062 -79.67500305175781,-245.99000549316406 C-79.67500305175781,-245.99000549316406 -111.18199920654297,-191.4219970703125 -111.18199920654297,-191.4219970703125 C-111.18199920654297,-191.4219970703125 -145.48500061035156,-132.00999450683594 -145.48500061035156,-132.00999450683594 C-145.48500061035156,-132.00999450683594 41.564998626708984,-191.99000549316406 41.564998626708984,-191.99000549316406z"></path></g></g><g transform="matrix(-0.577448308467865,-1.0001697540283203,1.0001697540283203,-0.577448308467865,2842.935546875,4510.2626953125)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,4258.10009765625,-84.09300231933594)"><path fill="rgb(97,92,237)" fill-opacity="1" d=" M187.06500244140625,-60.0099983215332 C187.06500244140625,-60.0099983215332 218.23500061035156,-113.98999786376953 218.23500061035156,-113.98999786376953 C219.30499267578125,-115.83999633789062 219.84500122070312,-117.91999816894531 219.84500122070312,-119.98999786376953 C219.84500122070312,-122.05999755859375 219.30499267578125,-124.13999938964844 218.23500061035156,-125.98999786376953 C218.23500061035156,-125.98999786376953 183.59500122070312,-185.99000549316406 183.59500122070312,-185.99000549316406 C182.52499389648438,-187.83999633789062 181.0050048828125,-189.33999633789062 179.2050018310547,-190.3800048828125 C177.4149932861328,-191.4199981689453 175.34500122070312,-191.99000549316406 173.2050018310547,-191.99000549316406 C173.2050018310547,-191.99000549316406 -110.9229965209961,-191.8699951171875 -110.9229965209961,-191.8699951171875 C-110.9229965209961,-191.8699951171875 -145.48500061035156,-132.00999450683594 -145.48500061035156,-132.00999450683594 C-145.48500061035156,-132.00999450683594 -122.10600280761719,0.06199999898672104 -122.10600280761719,0.06199999898672104 C-122.10600280761719,0.06199999898672104 187.06500244140625,-60.0099983215332 187.06500244140625,-60.0099983215332z"></path></g></g><g transform="matrix(-0.577448308467865,-1.0001697540283203,1.0001697540283203,-0.577448308467865,2842.941162109375,4510.26171875)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,4258.10009765625,-84.09300231933594)"><path fill="rgb(97,92,237)" fill-opacity="1" d=" M41.564998626708984,-191.99000549316406 C41.564998626708984,-191.99000549316406 10.385000228881836,-245.99000549316406 10.385000228881836,-245.99000549316406 C8.244999885559082,-249.6999969482422 4.284999847412109,-251.99000549316406 -0.004999999888241291,-251.99000549316406 C-0.004999999888241291,-251.99000549316406 -69.28500366210938,-251.99000549316406 -69.28500366210938,-251.99000549316406 C-71.42500305175781,-251.99000549316406 -73.48500061035156,-251.4199981689453 -75.2750015258789,-250.3800048828125 C-77.07499694824219,-249.33999633789062 -78.59500122070312,-247.83999633789062 -79.67500305175781,-245.99000549316406 C-79.67500305175781,-245.99000549316406 -111.18199920654297,-191.4219970703125 -111.18199920654297,-191.4219970703125 C-111.18199920654297,-191.4219970703125 -145.48500061035156,-132.00999450683594 -145.48500061035156,-132.00999450683594 C-145.48500061035156,-132.00999450683594 41.564998626708984,-191.99000549316406 41.564998626708984,-191.99000549316406z"></path></g></g><g transform="matrix(9.786605834960938,-0.04287320747971535,0.04287320747971535,9.786605834960938,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-16.312999725341797,-14.13599967956543 C-16.312999725341797,-14.13599967956543 -8.152999877929688,-28.257999420166016 -8.152999877929688,-28.257999420166016 C-8.152999877929688,-28.257999420166016 -4.079999923706055,-21.20400047302246 -4.079999923706055,-21.20400047302246 C-4.079999923706055,-21.20400047302246 -8.163000106811523,-14.133000373840332 -8.163000106811523,-14.133000373840332 C-8.163000106811523,-14.133000373840332 24.5,-14.125 24.5,-14.125 C24.5,-14.125 20.398000717163086,-7.059000015258789 20.398000717163086,-7.059000015258789 C20.398000717163086,-7.059000015258789 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 -16.312999725341797,-14.13599967956543 -16.312999725341797,-14.13599967956543z"></path></g></g><g transform="matrix(-4.856173515319824,8.496886253356934,-8.496886253356934,-4.856173515319824,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-16.312999725341797,-14.13599967956543 C-16.312999725341797,-14.13599967956543 -8.152999877929688,-28.257999420166016 -8.152999877929688,-28.257999420166016 C-8.152999877929688,-28.257999420166016 -4.079999923706055,-21.20400047302246 -4.079999923706055,-21.20400047302246 C-4.079999923706055,-21.20400047302246 -8.163000106811523,-14.133000373840332 -8.163000106811523,-14.133000373840332 C-8.163000106811523,-14.133000373840332 24.5,-14.125 24.5,-14.125 C24.5,-14.125 20.398000717163086,-7.059000015258789 20.398000717163086,-7.059000015258789 C20.398000717163086,-7.059000015258789 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 -16.312999725341797,-14.13599967956543 -16.312999725341797,-14.13599967956543z"></path></g></g><g transform="matrix(-4.930432319641113,-8.454012870788574,8.454012870788574,-4.930432319641113,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-16.312999725341797,-14.13599967956543 C-16.312999725341797,-14.13599967956543 -8.152999877929688,-28.257999420166016 -8.152999877929688,-28.257999420166016 C-8.152999877929688,-28.257999420166016 -4.079999923706055,-21.20400047302246 -4.079999923706055,-21.20400047302246 C-4.079999923706055,-21.20400047302246 -8.163000106811523,-14.133000373840332 -8.163000106811523,-14.133000373840332 C-8.163000106811523,-14.133000373840332 24.5,-14.125 24.5,-14.125 C24.5,-14.125 20.398000717163086,-7.059000015258789 20.398000717163086,-7.059000015258789 C20.398000717163086,-7.059000015258789 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 -16.312999725341797,-14.13599967956543 -16.312999725341797,-14.13599967956543z"></path></g></g><g transform="matrix(9.786605834960938,-0.04287320747971535,0.04287320747971535,9.786605834960938,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(96,91,236)" fill-opacity="1" d=" M-12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 -0.004000000189989805,14.12399959564209 -0.004000000189989805,14.12399959564209 C-0.004000000189989805,14.12399959564209 12.232999801635742,-7.059000015258789 12.232999801635742,-7.059000015258789 C12.232999801635742,-7.059000015258789 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459z"></path></g></g><g transform="matrix(9.786605834960938,-0.04287320747971535,0.04287320747971535,9.786605834960938,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(96,91,236)" fill-opacity="1" d=" M-12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 20.398000717163086,-7.059000015258789 20.398000717163086,-7.059000015258789 C20.398000717163086,-7.059000015258789 21.21299934387207,-5.645999908447266 21.21299934387207,-5.645999908447266 C21.21299934387207,-5.645999908447266 -11.413999557495117,-5.6529998779296875 -11.413999557495117,-5.6529998779296875 C-11.413999557495117,-5.6529998779296875 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459z"></path></g></g><g transform="matrix(-4.856173515319824,8.496886253356934,-8.496886253356934,-4.856173515319824,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(96,91,236)" fill-opacity="1" d=" M-12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 20.398000717163086,-7.059000015258789 20.398000717163086,-7.059000015258789 C20.398000717163086,-7.059000015258789 21.21299934387207,-5.645999908447266 21.21299934387207,-5.645999908447266 C21.21299934387207,-5.645999908447266 -11.413999557495117,-5.6529998779296875 -11.413999557495117,-5.6529998779296875 C-11.413999557495117,-5.6529998779296875 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459z"></path></g></g><g transform="matrix(-4.930432319641113,-8.454012870788574,8.454012870788574,-4.930432319641113,300,300)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(96,91,236)" fill-opacity="1" d=" M-12.229999542236328,-7.065000057220459 C-12.229999542236328,-7.065000057220459 20.398000717163086,-7.059000015258789 20.398000717163086,-7.059000015258789 C20.398000717163086,-7.059000015258789 21.21299934387207,-5.645999908447266 21.21299934387207,-5.645999908447266 C21.21299934387207,-5.645999908447266 -11.413999557495117,-5.6529998779296875 -11.413999557495117,-5.6529998779296875 C-11.413999557495117,-5.6529998779296875 -12.229999542236328,-7.065000057220459 -12.229999542236328,-7.065000057220459z"></path></g></g></g></svg>
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# coding=utf-8
"""
@project: maxkb
@Author:虎
@file: qwen_model_provider.py
@date:2023/10/31 16:19
@desc:
"""
import os
from typing import Dict

from langchain.schema import HumanMessage
from langchain_community.chat_models.tongyi import ChatTongyi

from common import forms
from common.exception.app_exception import AppApiException
from common.forms import BaseForm
from common.util.file_util import get_file_content
from setting.models_provider.base_model_provider import ModelProvideInfo, ModelTypeConst, BaseModelCredential, \
ModelInfo, IModelProvider, ValidCode
from smartdoc.conf import PROJECT_DIR


class OpenAILLMModelCredential(BaseForm, BaseModelCredential):

def is_valid(self, model_type: str, model_name, model_credential: Dict[str, object], raise_exception=False):
model_type_list = QwenModelProvider().get_model_type_list()
if not any(list(filter(lambda mt: mt.get('value') == model_type, model_type_list))):
raise AppApiException(ValidCode.valid_error.value, f'{model_type} 模型类型不支持')
for key in ['api_key']:
if key not in model_credential:
if raise_exception:
raise AppApiException(ValidCode.valid_error.value, f'{key} 字段为必填字段')
else:
return False
try:
model = QwenModelProvider().get_model(model_type, model_name, model_credential)
model.invoke([HumanMessage(content='你好')])
except Exception as e:
if isinstance(e, AppApiException):
raise e
if raise_exception:
raise AppApiException(ValidCode.valid_error.value, f'校验失败,请检查参数是否正确: {str(e)}')
else:
return False
return True

def encryption_dict(self, model: Dict[str, object]):
return {**model, 'api_key': super().encryption(model.get('api_key', ''))}

api_key = forms.PasswordInputField('API Key', required=True)


qwen_model_credential = OpenAILLMModelCredential()

model_dict = {
'qwen-turbo': ModelInfo('qwen-turbo', '', ModelTypeConst.LLM, qwen_model_credential),
'qwen-plus': ModelInfo('qwen-plus', '', ModelTypeConst.LLM, qwen_model_credential),
'qwen-max': ModelInfo('qwen-max', '', ModelTypeConst.LLM, qwen_model_credential)
}


class QwenModelProvider(IModelProvider):

def get_dialogue_number(self):
return 3

def get_model(self, model_type, model_name, model_credential: Dict[str, object], **model_kwargs) -> ChatTongyi:
chat_tong_yi = ChatTongyi(
model_name=model_name,
dashscope_api_key=model_credential.get('api_key')
)
return chat_tong_yi

def get_model_credential(self, model_type, model_name):
if model_name in model_dict:
return model_dict.get(model_name).model_credential
return qwen_model_credential

def get_model_provide_info(self):
return ModelProvideInfo(provider='model_qwen_provider', name='通义千问', icon=get_file_content(
os.path.join(PROJECT_DIR, "apps", "setting", 'models_provider', 'impl', 'qwen_model_provider', 'icon',
'qwen_icon_svg')))

def get_model_list(self, model_type: str):
if model_type is None:
raise AppApiException(500, '模型类型不能为空')
return [model_dict.get(key).to_dict() for key in
list(filter(lambda key: model_dict.get(key).model_type == model_type, model_dict.keys()))]

def get_model_type_list(self):
return [{'key': "大语言模型", 'value': "LLM"}]
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ django-apscheduler = "^0.6.2"
pymupdf = "^1.24.0"
python-docx = "^1.1.0"
xlwt = "^1.3.0"
dashscope = "^1.17.0"

[build-system]
requires = ["poetry-core"]
Expand Down