gui module#

Define graphical user interface using Gradio.

validate_dataset(dataset_file: Path) Path#

Check if dataset exists already.

Parameters:

dataset_file (pathlib.Path) -- path to directory for storing vector store

Returns:

absolute path to file storing JSON dataset

Return type:

pathlib.Path

Raises:

gradio.Error -- if dataset_file does not exist

validate_database(database_directory: Path) Path#

Check if dataset exists already.

Parameters:

database_directory (pathlib.Path) -- path to directory storing vector store

Returns:

absolute path to directory storing vector store

Return type:

pathlib.Path

Raises:

gradio.Error -- if database_directory does not exist

switch_tab() tuple[Tab, Tab]#

Modify interactive state of tabs.

Returns:

  • gradio.Tab -- updated current tab as non-interactive

  • gradio.Tab -- updated new (previous or next) tab as interactive

Return type:

tuple[Tab, Tab]

activate_button() Button#

Make button interactive.

Returns:

updated button as interactive

Return type:

gradio.Button

update_textbox_value(text: str) Textbox#

Update textbox with value from another textbox.

Parameters:

text (str) -- value to update textbox with

Returns:

updated textbox with value from text

Return type:

gradio.Textbox

generate_dataset(package_name: str, dataset_file: Path, force: bool) Path#

Create JSON dataset for querying a package documentation.

Parameters:
  • package_name (str) -- name of the root package to import with

  • dataset_file (pathlib.Path) -- path to store JSON dataset

  • force (bool, optional) -- override if dataset_file already exists

Returns:

absolute path storing JSON dataset

Return type:

pathlib.Path

Raises:

gradio.Error -- if dataset_file already exists and overriding is not allowed

generate_database(dataset_file: Path, embedding_model: str, database_directory: Path, force: bool) tuple[str, Path]#

Generate embedding database for querying a package documentation.

Parameters:
  • dataset_file (pathlib.Path) -- path storing JSON dataset

  • embedding_model (str) -- name of Sentence Transformers model from Hugging Face

  • database_directory (pathlib.Path) -- path to directory for storing vector store

  • force (bool) -- override if database_directory already exists

Returns:

  • str -- name of Sentence Transformers model from Hugging Face used to create vector store

  • pathlib.Path -- absolute path to directory storing vector store

Raises:

gradio.Error -- if database_directory already exists and overriding is not allowed or if dataset_file does not exist

Return type:

tuple[str, Path]

answer_query(query: str, embedding_model: str, database_directory: Path, search_type: RetrievalType, number_of_documents: int, initial_number_of_documents: int, diversity_level: float, language_model_type: TransformerType, standard_pipeline_type: PipelineType, standard_model_name: str, quantised_model_name: str, quantised_model_file: str, quantised_model_type: str) tuple[str, list[str], str, float]#

Get response from large language model.

Parameters:
  • query (str) -- question from user

  • embedding_model (str) -- name of Sentence Transformers model used for vector store

  • database_directory (pathlib.Path) -- path to directory storing vector store

  • search_type (RetrievalType) -- kind of retrieval algorithm for searching vector store

  • number_of_documents (int) -- number of documents to retrieve

  • initial_number_of_documents (int) -- initial number of documents to consider

  • diversity_level (float) -- similarity between retrieved documents

  • language_model_type (TransformerType) -- kind of language model

  • standard_pipeline_type (PipelineType) -- kind of Hugging Face pipeline

  • standard_model_name (str) -- name of transformers compatible Hugging Face model

  • quantised_model_name (str) -- name of ctransformers compatible Hugging Face model

  • quantised_model_file (str) -- named of quantised model file

  • quantised_model_type (str) -- type of quantised model

Returns:

  • str -- response from large language model

  • list[str] -- list of source documents retrieved from database

  • str -- exact prompt passed to large language model

  • float -- time taken (in seconds) for large language model to generate response

Raises:

gradio.Error -- if database_directory does not exist

Return type:

tuple[str, list[str], str, float]

summary_tab_flow() None#

Describe different functionalities of the application.

step1_tab_flow() Textbox#

Orchestrate flow of first step to generate retieval and tuning documents.

Returns:

absolute path to file storing JSON dataset

Return type:

gradio.Textbox

step2_tab_flow() tuple[Textbox, Textbox, Textbox]#

Orchestrate flow of second step to generate vector embeddings for retrieval.

Returns:

  • gradio.Textbox -- absolute path to file storing JSON dataset

  • gradio.Textbox -- Sentence Transformers model used to create vector store

  • gradio.Textbox -- absolute path to directory storing vector store

Return type:

tuple[Textbox, Textbox, Textbox]

step3_tab_flow() tuple[Textbox, Textbox]#

Orchestrate flow of third step to generate response from large language model.

Returns:

  • gradio.Textbox -- absolute path to directory storing vector store

  • gradio.Textbox -- Sentence Transformers model used to create vector store

Return type:

tuple[Textbox, Textbox]

main() None#

Orchestrate entire application to query package documentation.