a
    bg                     @   s   d Z ddlZddlmZ ddlmZmZ ddlZddlm	Z	 ddl
mZ ddlmZ dZeee	d	d
dZeeef ee	dddZdS )z5Base interface for loading large language model APIs.    N)Path)AnyUnion)BaseLLM)
get_fields)get_type_to_cls_dictZallow_dangerous_deserialization)configkwargsreturnc                 K   st   d| vrt d| d}t }||vr8t d| d||  }i }tt|v rb|td|t< |f i | |S )zLoad LLM from Config Dict._typez"Must specify an LLM Type in configzLoading z LLM not supportedF)
ValueErrorpopr   $_ALLOW_DANGEROUS_DESERIALIZATION_ARGr   get)r   r	   Zconfig_typeZtype_to_cls_dictZllm_clsZload_kwargs r   n/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/llms/loading.pyload_llm_from_config   s    

r   )filer	   r
   c                 K   s   t | trt| }n| }|jdkrVt|}t|}W d   q1 sJ0    Y  nJ|jdrt|d}t	|}W d   q1 s0    Y  nt
dt|fi |S )zLoad LLM from a file.z.jsonN)z.yamlz.ymlrzFile type must be json or yaml)
isinstancestrr   suffixopenjsonloadendswithyamlZ	safe_loadr   r   )r   r	   	file_pathfr   r   r   r   load_llm&   s    



**r   )__doc__r   pathlibr   typingr   r   r   Z#langchain_core.language_models.llmsr   Zlangchain_core.utils.pydanticr   Zlangchain_community.llmsr   r   dictr   r   r   r   r   r   r   <module>   s   