o
    }!gI#                     @   sT  d dl Z d dlmZmZ d dlmZmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ 	d#dededee defddZddefdee dee dededdf
ddZddeeefdee dee dededededdfddZdefddZ d$d d!Z!e"d"kre!  dS dS )%    N)AnyOptional)RagCLIdefault_ragcli_persist_dir)upgrade_dirupgrade_file)IngestionCacheIngestionPipeline)LLAMA_HUB_URL)LLAMA_DATASETS_LFS_URL+LLAMA_DATASETS_SOURCE_FILES_GITHUB_TREE_URLdownload_llama_dataset)LLAMA_PACKS_CONTENTS_URLdownload_llama_pack)SimpleDocumentStore)SentenceSplitter)init_new_packagenamekindprefixkwargsc                 K   s   t | ||d td d S )N)integration_nameintegration_typer   z Successfully initialized package)r   print)r   r   r   r    r   ^/mnt/skqttb/ctump_chatbot/chatbot/lib/python3.10/site-packages/llama_index/cli/command_line.pyhandle_init_package   s   r   llama_pack_classdownload_dirllama_pack_urlreturnc                 K   sB   | d usJ |d usJ t | |pd|d td|  d|  d S )Nz./custom_llama_pack)r   r   r   Successfully downloaded  to )r   r   )r   r   r   r   r   r   r   handle_download_llama_pack   s   r#   llama_dataset_classllama_hub_urlllama_datasets_lfs_url$llama_datasets_source_files_tree_urlc                 K   sD   | d usJ |d usJ t | |||ddd td|  d|  d S )NTF)r$   r   r&   r'   show_progressload_documentsr!   r"   )r   r   )r$   r   r%   r&   r'   r   r   r   r   handle_download_llama_dataset/   s   	r*   c            	      C   sr  ddl m}  zdd l}ddlm} W n ty   tdw t }|j|d}|jddd}|||d	}t	 }t
t |  g||t d
}zddl m}  W n tyW   d } Y nw zdd l}ddlm} W n tyo   d }Y nw | r|rt }|j|d}|jddd}|||d	}t	 }t
t |  g||t d
}z|j|d W n	 ty   Y nw t|d|dS td d S )Nr   )OpenAIEmbedding)ChromaVectorStorezDefault RAG pipeline uses chromadb. Install with `pip install llama-index-vector-stores-chroma or customize to use a different vector store.)pathdefaultT)get_or_create)chroma_collectionpersist_dir)transformationsvector_storedocstorecache)r1   F)ingestion_pipelineverboser1   zDefault RagCLI was not built. There are packages missing. Please install required dependencies by running `pip install llama-index-embeddings-openai llama-index-llms-openai chroma llama-index-vector-stores-chroma`)llama_index.embeddings.openair+   chromadb llama_index.vector_stores.chromar,   ImportErrorr   PersistentClientcreate_collectionr   r	   r   r   loadFileNotFoundErrorr   r   )	r+   r9   r,   r1   chroma_clientr0   r3   r4   r6   r   r   r   default_rag_cliF   s~   

rA   c            	      C   s  t jdd} | jdddd}|jddd	}t|t |jd
dd	}|jdtdd |jddtddd |jdtt	dd |j
dd d |jddd	}|jdtdd |jddtddd |jdtt	dd |jdttdd |j
d d d |jd!d"d	}|jd#td$d |j
d%d d |jd&d'd	}|jd(td$d |j
d)d d |jd*d+d	}|jd,d-td.d |jd/d0td1d |jd2d3td4d5d6 |j
d7d d |  }|| d S )8NzLlamaIndex CLI tool.)descriptioncommandscommandT)titledestrequiredragz8Ask a question to a document / a directory of documents.)helpzdownload-llamapackzDownload a llama-packr   zVThe name of the llama-pack class you want to download, such as `GmailOpenAIAgentPack`.)typerI   z-dz--download-dirz./llama_packsz)Custom dirpath to download the pack into.)rJ   r.   rI   z--llama-hub-urlzURL to llama hub.c                 S      t di t| S Nr   )r#   varsargsr   r   r   <lambda>       zmain.<locals>.<lambda>)funczdownload-llamadatasetzDownload a llama-datasetr$   z[The name of the llama-dataset class you want to download, such as `PaulGrahamEssayDataset`.z./llama_datasetsz--llama-datasets-lfs-urlzURL to llama datasets.c                 S   rK   rL   )r*   rM   rN   r   r   r   rP      rQ   upgradez9Upgrade a directory containing notebooks or python files.	directoryz?The directory to upgrade. Will run on only .ipynb or .py files.c                 S   
   t | jS N)r   rT   rN   r   r   r   rP         
 zupgrade-filez)Upgrade a single notebook or python file.r-   c                 S   rU   rV   )r   r-   rN   r   r   r   rP      rW   znew-packagez$Initialize a new llama-index packagez-kz--kindz1Kind of package, e.g., llm, embedding, pack, etc.z-nz--namezName of python packagez-pz--prefixFzName of prefix package)rJ   rG   rI   c                 S   rK   rL   )r   rM   rN   r   r   r   rP     rQ   )argparseArgumentParseradd_subparsers
add_parserr   add_parser_argsrA   add_argumentstrr
   set_defaultsr   
parse_argsrR   )	parser
subparsersllamarag_parserllamapack_parserllamadataset_parserupgrade_parserupgrade_file_parsernew_package_parserrO   r   r   r   main   s   ri   __main__rV   )r    N)#rX   typingr   r   llama_index.cli.ragr   r   llama_index.cli.upgrader   r   llama_index.core.ingestionr   r	    llama_index.core.download.moduler
   'llama_index.core.llama_dataset.downloadr   r   r   $llama_index.core.llama_pack.downloadr   r   !llama_index.core.storage.docstorer   llama_index.core.text_splitterr    llama_index.cli.new_package.baser   r^   r   r#   r*   rA   ri   __name__r   r   r   r   <module>   sz    



O 
