Browse Source

feat: add zhipu glm_4_plus and glm_4v_plus model (#7824)

非法操作 7 months ago
parent
commit
dc015c380a

File diff suppressed because it is too large
+ 39 - 0
api/core/model_runtime/model_providers/zhipuai/llm/glm_4_plus.yaml


File diff suppressed because it is too large
+ 37 - 0
api/core/model_runtime/model_providers/zhipuai/llm/glm_4v_plus.yaml


+ 5 - 4
api/core/model_runtime/model_providers/zhipuai/llm/llm.py

@@ -153,7 +153,8 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
         :return: full response or stream response chunk generator result
         """
         extra_model_kwargs = {}
-        if stop:
+        # request to glm-4v-plus with stop words will always response "finish_reason":"network_error"
+        if stop and model!= 'glm-4v-plus':
             extra_model_kwargs['stop'] = stop
 
         client = ZhipuAI(
@@ -174,7 +175,7 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
             if copy_prompt_message.role in [PromptMessageRole.USER, PromptMessageRole.SYSTEM, PromptMessageRole.TOOL]:
                 if isinstance(copy_prompt_message.content, list):
                     # check if model is 'glm-4v'
-                    if model != 'glm-4v':
+                    if model not in ('glm-4v', 'glm-4v-plus'):
                         # not support list message
                         continue
                     # get image and 
@@ -207,7 +208,7 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
                 else:
                     new_prompt_messages.append(copy_prompt_message)
 
-        if model == 'glm-4v':
+        if model == 'glm-4v' or model == 'glm-4v-plus':
             params = self._construct_glm_4v_parameter(model, new_prompt_messages, model_parameters)
         else:
             params = {
@@ -304,7 +305,7 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
 
         return params
 
-    def _construct_glm_4v_messages(self, prompt_message: Union[str | list[PromptMessageContent]]) -> list[dict]:
+    def _construct_glm_4v_messages(self, prompt_message: Union[str, list[PromptMessageContent]]) -> list[dict]:
         if isinstance(prompt_message, str):
             return [{'type': 'text', 'text': prompt_message}]