| 
					
				 | 
			
			
				@@ -40,87 +40,4 @@ class _CommonOAI_API_Compat: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 requests.exceptions.ConnectTimeout,  # Timeout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 requests.exceptions.ReadTimeout  # Timeout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def get_customizable_model_schema(self, model: str, credentials: dict) -> AIModelEntity: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            generate custom model entities from credentials 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        model_type = ModelType.LLM if credentials.get('__model_type') == 'llm' else ModelType.TEXT_EMBEDDING 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entity = AIModelEntity( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            model=model, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            label=I18nObject(en_US=model), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            model_type=model_type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fetch_from=FetchFrom.CUSTOMIZABLE_MODEL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            model_properties={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ModelPropertyKey.CONTEXT_SIZE: credentials.get('context_size', 16000), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ModelPropertyKey.MAX_CHUNKS: credentials.get('max_chunks', 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            parameter_rules=[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ParameterRule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    name=DefaultParameterName.TEMPERATURE.value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    label=I18nObject(en_US="Temperature"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type=ParameterType.FLOAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default=float(credentials.get('temperature', 1)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    min=0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    max=2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ParameterRule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    name=DefaultParameterName.TOP_P.value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    label=I18nObject(en_US="Top P"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type=ParameterType.FLOAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default=float(credentials.get('top_p', 1)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    min=0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    max=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ParameterRule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    name="top_k", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    label=I18nObject(en_US="Top K"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type=ParameterType.INT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default=int(credentials.get('top_k', 1)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    min=1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    max=100 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ParameterRule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    name=DefaultParameterName.FREQUENCY_PENALTY.value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    label=I18nObject(en_US="Frequency Penalty"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type=ParameterType.FLOAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default=float(credentials.get('frequency_penalty', 0)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    min=-2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    max=2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ParameterRule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    name=DefaultParameterName.PRESENCE_PENALTY.value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    label=I18nObject(en_US="PRESENCE Penalty"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type=ParameterType.FLOAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default=float(credentials.get('PRESENCE_penalty', 0)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    min=-2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    max=2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ParameterRule( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    name=DefaultParameterName.MAX_TOKENS.value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    label=I18nObject(en_US="Max Tokens"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type=ParameterType.INT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default=1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    min=1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    max=int(credentials.get('max_tokens_to_sample', 4096)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pricing=PriceConfig( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                input=Decimal(credentials.get('input_price', 0)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                output=Decimal(credentials.get('output_price', 0)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                unit=Decimal(credentials.get('unit', 0)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                currency=credentials.get('currency', "USD") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if model_type == ModelType.LLM: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if credentials['mode'] == 'chat': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                entity.model_properties[ModelPropertyKey.MODE] = LLMMode.CHAT.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            elif credentials['mode'] == 'completion': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                entity.model_properties[ModelPropertyKey.MODE] = LLMMode.COMPLETION.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                raise ValueError(f"Unknown completion type {credentials['completion_type']}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return entity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 |