| 
					
				 | 
			
			
				@@ -18,7 +18,7 @@ from dashscope.common.error import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from core.model_runtime.callbacks.base_callback import Callback 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from core.model_runtime.entities.llm_entities import LLMMode, LLMResult, LLMResultChunk, LLMResultChunkDelta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from core.model_runtime.entities.message_entities import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     AssistantPromptMessage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ImagePromptMessageContent, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -82,6 +82,7 @@ if you are not sure about the structure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <instructions> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {{instructions}} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </instructions> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You should also complete the text started with ``` but not tell ``` directly. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         code_block = model_parameters.get("response_format", "") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -113,21 +114,17 @@ if you are not sure about the structure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # insert the system message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             prompt_messages.insert(0, SystemPromptMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 content=block_prompts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .replace("{{instructions}}", f"Please output a valid {code_block} object.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .replace("{{instructions}}", f"Please output a valid {code_block} with markdown codeblocks.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mode = self.get_model_mode(model, credentials) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if mode == LLMMode.CHAT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if len(prompt_messages) > 0 and isinstance(prompt_messages[-1], UserPromptMessage): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                # add ```JSON\n to the last message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                prompt_messages[-1].content += f"\n```{code_block}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                # append a user message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                prompt_messages.append(UserPromptMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    content=f"```{code_block}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if len(prompt_messages) > 0 and isinstance(prompt_messages[-1], UserPromptMessage): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # add ```JSON\n to the last message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            prompt_messages[-1].content += f"\n```{code_block}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            prompt_messages.append(AssistantPromptMessage(content=f"```{code_block}\n")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # append a user message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            prompt_messages.append(UserPromptMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content=f"```{code_block}\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         response = self._invoke( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             model=model, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -243,11 +240,8 @@ if you are not sure about the structure. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             response = MultiModalConversation.call(**params, stream=stream) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if mode == LLMMode.CHAT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                params['messages'] = self._convert_prompt_messages_to_tongyi_messages(prompt_messages) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                params['prompt'] = prompt_messages[0].content.rstrip() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # nothing different between chat model and completion model in tongyi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            params['messages'] = self._convert_prompt_messages_to_tongyi_messages(prompt_messages) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             response = Generation.call(**params, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        result_format='message', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        stream=stream) 
			 |