| 
					
				 | 
			
			
				@@ -1,3 +1,4 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import logging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from collections.abc import Generator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from typing import Optional, Union, cast 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -544,13 +545,18 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         response_format = model_parameters.get("response_format") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if response_format: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if response_format == "json_object": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                response_format = {"type": "json_object"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if response_format == "json_schema": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                json_schema = model_parameters.get("json_schema") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if not json_schema: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError("Must define JSON Schema when the response format is json_schema") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    schema = json.loads(json_schema) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                except: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    raise ValueError(f"not currect json_schema format: {json_schema}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                model_parameters.pop("json_schema") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                model_parameters["response_format"] = {"type": "json_schema", "json_schema": schema} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                response_format = {"type": "text"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            model_parameters["response_format"] = response_format 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                model_parameters["response_format"] = {"type": response_format} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         extra_model_kwargs = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |