├── 20231205 ├── readme.md ├── requirements.txt ├── TinyLlama_logo.png ├── logo-banner-StableZephyr.jpg ├── TheBloke_Akins-3B-GGUF_stablelm_type.pdf ├── TheBloke_Flan-OpenLlama-7B-GGML · Hugging Face.pdf ├── TheBloke_TinyLlama-1.1B-Chat-v0.3-GGUF · Hugging Face.pdf ├── TheBloke_TinyLlama-1.1B-1T-OpenOrca-GGUF · Hugging Face.pdf ├── Chat_tinyLlamaOpenOrca.py ├── openllama_Chat-PG.py ├── tinyllama_Chat-grblocks.py ├── TinyLlamaOpenOrca1.1B-promptsPlayground.txt ├── tinyLlama-PG.py ├── TinyLlama1Bopenorca-GGUF-chatLog.txt ├── tinyLlama-PG_stream.py ├── tinyLlamaOpenOrcaQ4-PG_stream.py └── Openllama3B-GGML-promptsPlayground.txt ├── 20231206 ├── imporve.md ├── instructions.txt ├── starling.png ├── mistral248.jpg ├── StarlingLogo.webp ├── requirements.txt ├── 05613f55-6194-4d74-9405-19a2f5e0b2f1.webp ├── 709d969e-4d7d-4818-9acb-970187e8e6cc.webp ├── ae6d203f-7b0f-4e11-8ee9-5904288d4a98.webp ├── cd48c5b3-a22c-4a7e-9bf7-4d0a5d9dafe2.webp ├── small robot reading a lot of files and papers.jpg ├── small robot reading a lot of files and papers (1).jpg ├── Starling-7B_ Increasing LLM Helpfulness & Harmlessness with RLAIF.pdf ├── test.py ├── Prompt template.txt └── Chat_tinyLlamaOpenOrcaFull.py ├── README.md ├── requirements.txt ├── windows ├── bert.png ├── ernie.png ├── BertPuppet.png ├── sesame-street.png ├── Vicuna13b-GGML-promptsPlayground.txt ├── sesame_street_bert_ernie_icons_2.png ├── tulu7bDPO-GGUF-promptsPlayground.txt ├── Claude2Alpacab-GGUF-promptsPlayground.txt ├── Synthia7B-GGUF-16k-promptsPlayground.txt ├── read.md ├── openllama_Chat-PG.py ├── claude2-AlpacaPG.py ├── SynthIA16kPG.py ├── tulu7b-dpoPG.py ├── Mistral7bClaudePG.py ├── Vicuna13PG.py ├── Akins3B-Claude-pg.py ├── KeyBERT_gr.py ├── lamini_PDFeDA_gr.py └── all_gr.py ├── GradioFullHF ├── starlingLM.md ├── starling.png └── StarlingPG.py ├── istruzioni.txt ├── Vicuna13PG.py ├── WizardVicunaPG.py ├── claude2-AlpacaPG.py ├── Synthia7bPG.py ├── Orca2-7b-PG.py ├── SynthIA16kPG.py ├── lamini_TXT_gr.py └── lamini_U2be_gr.py /20231206/imporve.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /20231206/instructions.txt: -------------------------------------------------------------------------------- 1 | pip install pip install llama-cpp-python==0.2.20 2 | pip install gradio -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GradioStudies 2 | Repo with GUI interfaces for local Open Source LLMs with GRADIO 3 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/requirements.txt -------------------------------------------------------------------------------- /windows/bert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/bert.png -------------------------------------------------------------------------------- /GradioFullHF/starlingLM.md: -------------------------------------------------------------------------------- 1 | Prompt Engineering Playground! 2 | 🐦 StarlingLM-7b 8K context window 3 | -------------------------------------------------------------------------------- /windows/ernie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/ernie.png -------------------------------------------------------------------------------- /20231206/starling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/starling.png -------------------------------------------------------------------------------- /20231206/mistral248.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/mistral248.jpg -------------------------------------------------------------------------------- /windows/BertPuppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/BertPuppet.png -------------------------------------------------------------------------------- /20231205/readme.md: -------------------------------------------------------------------------------- 1 | New files 2 | 3 | containing streaming for the gradio normal app 4 | 5 | not valid for chat 6 | -------------------------------------------------------------------------------- /20231205/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/requirements.txt -------------------------------------------------------------------------------- /20231206/StarlingLogo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/StarlingLogo.webp -------------------------------------------------------------------------------- /20231206/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/requirements.txt -------------------------------------------------------------------------------- /GradioFullHF/starling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/GradioFullHF/starling.png -------------------------------------------------------------------------------- /windows/sesame-street.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/sesame-street.png -------------------------------------------------------------------------------- /20231205/TinyLlama_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/TinyLlama_logo.png -------------------------------------------------------------------------------- /20231205/logo-banner-StableZephyr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/logo-banner-StableZephyr.jpg -------------------------------------------------------------------------------- /windows/Vicuna13b-GGML-promptsPlayground.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/Vicuna13b-GGML-promptsPlayground.txt -------------------------------------------------------------------------------- /windows/sesame_street_bert_ernie_icons_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/sesame_street_bert_ernie_icons_2.png -------------------------------------------------------------------------------- /windows/tulu7bDPO-GGUF-promptsPlayground.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/tulu7bDPO-GGUF-promptsPlayground.txt -------------------------------------------------------------------------------- /20231205/TheBloke_Akins-3B-GGUF_stablelm_type.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/TheBloke_Akins-3B-GGUF_stablelm_type.pdf -------------------------------------------------------------------------------- /windows/Claude2Alpacab-GGUF-promptsPlayground.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/Claude2Alpacab-GGUF-promptsPlayground.txt -------------------------------------------------------------------------------- /windows/Synthia7B-GGUF-16k-promptsPlayground.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/windows/Synthia7B-GGUF-16k-promptsPlayground.txt -------------------------------------------------------------------------------- /20231206/05613f55-6194-4d74-9405-19a2f5e0b2f1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/05613f55-6194-4d74-9405-19a2f5e0b2f1.webp -------------------------------------------------------------------------------- /20231206/709d969e-4d7d-4818-9acb-970187e8e6cc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/709d969e-4d7d-4818-9acb-970187e8e6cc.webp -------------------------------------------------------------------------------- /20231206/ae6d203f-7b0f-4e11-8ee9-5904288d4a98.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/ae6d203f-7b0f-4e11-8ee9-5904288d4a98.webp -------------------------------------------------------------------------------- /20231206/cd48c5b3-a22c-4a7e-9bf7-4d0a5d9dafe2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/cd48c5b3-a22c-4a7e-9bf7-4d0a5d9dafe2.webp -------------------------------------------------------------------------------- /20231205/TheBloke_Flan-OpenLlama-7B-GGML · Hugging Face.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/TheBloke_Flan-OpenLlama-7B-GGML · Hugging Face.pdf -------------------------------------------------------------------------------- /20231206/small robot reading a lot of files and papers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/small robot reading a lot of files and papers.jpg -------------------------------------------------------------------------------- /20231206/small robot reading a lot of files and papers (1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/small robot reading a lot of files and papers (1).jpg -------------------------------------------------------------------------------- /20231205/TheBloke_TinyLlama-1.1B-Chat-v0.3-GGUF · Hugging Face.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/TheBloke_TinyLlama-1.1B-Chat-v0.3-GGUF · Hugging Face.pdf -------------------------------------------------------------------------------- /20231205/TheBloke_TinyLlama-1.1B-1T-OpenOrca-GGUF · Hugging Face.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231205/TheBloke_TinyLlama-1.1B-1T-OpenOrca-GGUF · Hugging Face.pdf -------------------------------------------------------------------------------- /20231206/Starling-7B_ Increasing LLM Helpfulness & Harmlessness with RLAIF.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fabiomatricardi/GradioStudies/main/20231206/Starling-7B_ Increasing LLM Helpfulness & Harmlessness with RLAIF.pdf -------------------------------------------------------------------------------- /istruzioni.txt: -------------------------------------------------------------------------------- 1 | Download the model LaMini-Flan-T5-77M 2 | ------------------------------------- 3 | https://huggingface.co/MBZUAI/LaMini-Flan-T5-77M/tree/main 4 | 5 | 6 | pip install torch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 7 | pip install transformers 8 | pip install langchain 9 | pip install gradio 10 | pip install youtube-transcript-api 11 | pip install sentence_transformers 12 | pip install tiktoken 13 | 14 | LangChain source: https://python.langchain.com/docs/integrations/document_loaders/youtube_transcript 15 | -------------------------------------------------------------------------------- /windows/read.md: -------------------------------------------------------------------------------- 1 | # Test files with gradio 2 | 3 | 4 | from windows machine 5 | 6 | --- 7 | OS Name Microsoft Windows 11 Pro 8 | 9 | Version 10.0.22621 Build 22621 10 | 11 | Other OS Description Not Available 12 | 13 | OS Manufacturer Microsoft Corporation 14 | 15 | System Manufacturer AZW 16 | 17 | System Model MINI S 18 | 19 | System Type x64-based PC 20 | 21 | System SKU 01 22 | 23 | Processor Intel(R) N100, 800 Mhz, 4 Core(s), 4 Logical Processor(s) 24 | 25 | Name Intel(R) UHD Graphics 26 | 27 | PNP Device ID PCI\VEN_8086&DEV_46D1&SUBSYS_72708086&REV_00\3&11583659&0&10 28 | 29 | Adapter Type Intel(R) UHD Graphics Family, Intel Corporation compatible 30 | 31 | Adapter Description Intel(R) UHD Graphics 32 | 33 | Adapter RAM 1.00 GB (1,073,741,824 bytes) 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /windows/openllama_Chat-PG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 3 | import datetime 4 | from threading import Thread 5 | #MODEL SETTINGS also for DISPLAY 6 | 7 | convHistory = '' 8 | modelfile = "model/open-llama-3b-v2-wizard-evol-instuct-v2-196k.Q4_K_M.gguf" 9 | repetitionpenalty = 1.15 10 | contextlength=62048 11 | logfile = 'Openllama3B-GGML-promptsPlayground.txt' 12 | print("loading model...") 13 | stt = datetime.datetime.now() 14 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 15 | max_new_tokens=4096, context_length=contextlength)) 16 | model = AutoModelForCausalLM.from_pretrained(modelfile, 17 | model_type="llama",config = conf) #model_type="stablelm", 18 | dt = datetime.datetime.now() - stt 19 | print(f"Model loaded in {dt}") 20 | 21 | 22 | 23 | def predict(message, history): 24 | 25 | history_transformer_format = history + [[message, ""]] 26 | 27 | messages = "".join(["".join(["\n### HUMAN:\n"+item[0], "\n\n### RESPONSE:\n"+item[1]]) #curr_system_message + 28 | for item in history_transformer_format]) 29 | 30 | return model(messages, 31 | temperature = 0.3, 32 | repetition_penalty = 1.15, 33 | max_new_tokens=2048) 34 | 35 | 36 | gr.ChatInterface(predict).launch() -------------------------------------------------------------------------------- /20231206/test.py: -------------------------------------------------------------------------------- 1 | from llama_cpp import Llama 2 | from rich.console import Console 3 | import datetime 4 | from rich.prompt import Prompt 5 | console = Console(width=110) #initialize RICH console 6 | console.clear() #clear screen 7 | 8 | 9 | # Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system. 10 | llm = Llama( 11 | model_path="model/starling-lm-7b-alpha.Q4_K_M.gguf", # Download the model file first 12 | n_ctx=8192, # The max sequence length to use - note that longer sequence lengths require much more resources 13 | #n_threads=2, # The number of CPU threads to use, tailor to your system and the resulting performance 14 | ) 15 | console.clear() #clear screen 16 | console.print("[bold italic bright_red]Model [bold bright_yellow]starling-lm-7b-alpha.Q4_K_M.gguf [bold italic bright_red]Loaded") 17 | user = Prompt.ask("[bold green1 reverse]User: ") 18 | prompt = f"GPT4 User: {user}<|end_of_turn|>GPT4 Assistant:" 19 | # Simple inference example 20 | start = datetime.datetime.now() 21 | output = llm(prompt, max_tokens=912, stop=[""], # Example stop token - not necessarily correct for this specific model! Please check before using. 22 | echo=False, stream=True) 23 | 24 | for chunk in output: 25 | console.print(f'[bold green1]{chunk["choices"][0]["text"]}', end="") 26 | delta = datetime.datetime.now() - start 27 | console.rule() 28 | console.print(f"[bold green]Completed in {delta}") -------------------------------------------------------------------------------- /20231206/Prompt template.txt: -------------------------------------------------------------------------------- 1 | Prompt template: OpenChat 2 | ------------------------- 3 | 4 | GPT4 User: {prompt}<|end_of_turn|>GPT4 Assistant: 5 | 6 | 7 | Context Lenght 8 | -------------- 9 | 8192 tokens 10 | 11 | Information 12 | ----------- 13 | Example llama.cpp command 14 | Make sure you are using llama.cpp from commit d0cee0d or later. 15 | 16 | ./main -ngl 35 -m starling-lm-7b-alpha.Q4_K_M.gguf --color -c 8192 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "GPT4 User: {prompt}<|end_of_turn|>GPT4 Assistant:" 17 | 18 | Change -ngl 32 to the number of layers to offload to GPU. Remove it if you don't have GPU acceleration. 19 | 20 | Change -c 8192 to the desired sequence length. For extended sequence models - eg 8K, 16K, 32K - the necessary RoPE scaling parameters are read from the GGUF file and set by llama.cpp automatically. Note that longer sequence lengths require much more resources, so you may need to reduce this value. 21 | 22 | 23 | Example usage with llamaCPP 24 | --------------------------- 25 | Simple llama-cpp-python example code 26 | 27 | from llama_cpp import Llama 28 | 29 | # Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system. 30 | llm = Llama( 31 | model_path="./starling-lm-7b-alpha.Q4_K_M.gguf", # Download the model file first 32 | n_ctx=8192, # The max sequence length to use - note that longer sequence lengths require much more resources 33 | n_threads=8, # The number of CPU threads to use, tailor to your system and the resulting performance 34 | n_gpu_layers=35 # The number of layers to offload to GPU, if you have GPU acceleration available 35 | ) 36 | 37 | # Simple inference example 38 | output = llm( 39 | "GPT4 User: {prompt}<|end_of_turn|>GPT4 Assistant:", # Prompt 40 | max_tokens=512, # Generate up to 512 tokens 41 | stop=[""], # Example stop token - not necessarily correct for this specific model! Please check before using. 42 | echo=True # Whether to echo the prompt 43 | ) 44 | 45 | # Chat Completion API 46 | 47 | llm = Llama(model_path="./starling-lm-7b-alpha.Q4_K_M.gguf", chat_format="llama-2") # Set chat_format according to the model you are using 48 | llm.create_chat_completion( 49 | messages = [ 50 | {"role": "system", "content": "You are a story writing assistant."}, 51 | { 52 | "role": "user", 53 | "content": "Write a story about llamas." 54 | } 55 | ] 56 | ) 57 | 58 | -------------------------------------------------------------------------------- /20231205/Chat_tinyLlamaOpenOrca.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | temperature = 0.32 7 | max_new_tokens=1100 8 | modelfile = "models/tinyllama-1.1b-1t-openorca.Q4_K_M.gguf" 9 | repetitionpenalty = 1.15 10 | contextlength=62048 11 | logfile = 'TinyLlamaOpenOrca1.1B-stream.txt' 12 | print("loading model...") 13 | stt = datetime.datetime.now() 14 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 15 | max_new_tokens=4096, context_length=contextlength)) 16 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 17 | model_type="llama",config = conf) #model_type="stablelm", 18 | dt = datetime.datetime.now() - stt 19 | print(f"Model loaded in {dt}") 20 | #MODEL SETTINGS also for DISPLAY 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a', encoding='utf-8') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | with gr.Blocks() as demo: 29 | chatbot = gr.Chatbot() 30 | msg = gr.Textbox() 31 | clear = gr.Button("Clear") 32 | 33 | def user(user_message, history): 34 | writehistory(f"USER: {user_message}") 35 | return "", history + [[user_message, None]] 36 | 37 | def bot(history): 38 | SYSTEM_PROMPT = """<|im_start|>system 39 | You are a helpful bot. Your answers are clear and concise. 40 | <|im_end|> 41 | 42 | """ 43 | prompt = f"<|im_start|>system<|im_end|><|im_start|>user\n{history[-1][0]}<|im_end|>\n<|im_start|>assistant\n" 44 | print(f"history lenght: {len(history)}") 45 | if len(history) == 1: 46 | print("this is the first round") 47 | else: 48 | print("here we should pass more conversations") 49 | history[-1][1] = "" 50 | for character in llm(prompt, 51 | temperature = temperature, 52 | repetition_penalty = 1.15, 53 | max_new_tokens=max_new_tokens, 54 | stop = ['<|im_end|>'], 55 | stream = True): 56 | history[-1][1] += character 57 | yield history 58 | writehistory(f"BOT: {history}") 59 | 60 | msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( 61 | bot, chatbot, chatbot 62 | ) 63 | clear.click(lambda: None, None, chatbot, queue=False) 64 | 65 | demo.queue() 66 | demo.launch(inbrowser=True) 67 | 68 | -------------------------------------------------------------------------------- /20231205/openllama_Chat-PG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 3 | import datetime 4 | from threading import Thread 5 | #MODEL SETTINGS also for DISPLAY 6 | 7 | convHistory = '' 8 | modelfile = "models/tinyllama-1.1b-1t-openorca.Q4_K_M.gguf" 9 | repetitionpenalty = 1.15 10 | contextlength=62048 11 | logfile = 'TinyLlama1Bopenorca-GGUF-chatLog.txt' 12 | print("loading model...") 13 | stt = datetime.datetime.now() 14 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 15 | max_new_tokens=1200, context_length=contextlength)) 16 | model = AutoModelForCausalLM.from_pretrained(modelfile, 17 | model_type="llama",config = conf) #model_type="stablelm", 18 | dt = datetime.datetime.now() - stt 19 | print(f"Model loaded in {dt}") 20 | 21 | def writehistory(text): 22 | with open(logfile, 'a', encoding='utf-8') as f: 23 | f.write(text) 24 | f.write('\n') 25 | f.close() 26 | 27 | #"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant" 28 | 29 | SYSTEM_PROMPT = """<|im_start|>system 30 | You are a helpful bot. Your answers are clear and concise. 31 | <|im_end|> 32 | 33 | """ 34 | 35 | # Formatting function for message and history 36 | def format_message(message: str, history: list, memory_limit: int = 4) -> str: 37 | """ 38 | Formats the message and history for the Llama model. 39 | 40 | Parameters: 41 | message (str): Current message to send. 42 | history (list): Past conversation history. 43 | memory_limit (int): Limit on how many past interactions to consider. 44 | 45 | Returns: 46 | str: Formatted message string 47 | """ 48 | # always keep len(history) <= memory_limit 49 | if len(history) > memory_limit: 50 | history = history[-memory_limit:] 51 | 52 | if len(history) == 0: 53 | return SYSTEM_PROMPT + f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant" 54 | 55 | formatted_message = SYSTEM_PROMPT + f"{history[0][0]} <|im_end|>\n<|im_start|>assistant\n{history[0][1]}" 56 | 57 | # Handle conversation history 58 | for user_msg, model_answer in history[1:]: 59 | formatted_message += f"<|im_start|>user\n{user_msg} <|im_end|>\n<|im_start|>assistant\n{model_answer}\n" 60 | 61 | # Handle the current message 62 | formatted_message += f"<|im_start|>user\n{message} <|im_end|>\n<|im_start|>assistant\n" 63 | 64 | return formatted_message 65 | 66 | # Generate a response from the Llama model 67 | def get_tinyllama_response(message: str, history: list) -> str: 68 | """ 69 | Generates a conversational response from the Llama model. 70 | 71 | Parameters: 72 | message (str): User's input message. 73 | history (list): Past conversation history. 74 | 75 | Returns: 76 | str: Generated response from the Llama model. 77 | """ 78 | query = format_message(message, history) 79 | response = "" 80 | for character in model(query, temperature = 0.3, 81 | repetition_penalty = 1.15, 82 | max_new_tokens=1000,stream=True): 83 | response += character 84 | yield response 85 | """ 86 | with gr.Blocks() as demo: 87 | chatbot = gr.Chatbot() 88 | msg = gr.Textbox() 89 | clear = gr.ClearButton([msg, chatbot]) 90 | 91 | def user(user_message, history): 92 | print(""+ str(history) + str([[user_message, None]] )) 93 | return "", history + [[user_message, None]] 94 | 95 | msg.submit(get_tinyllama_response, [msg,chatbot], [chatbot]) 96 | clear.click(lambda: None, None, chatbot, queue=False) 97 | """ 98 | gr.ChatInterface(get_tinyllama_response).launch(inbrowser=True) 99 | -------------------------------------------------------------------------------- /20231205/tinyllama_Chat-grblocks.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 3 | import datetime 4 | from threading import Thread 5 | #MODEL SETTINGS also for DISPLAY 6 | 7 | convHistory = '' 8 | modelfile = "models/tinyllama-1.1b-1t-openorca.Q4_K_M.gguf" 9 | repetitionpenalty = 1.15 10 | contextlength=62048 11 | logfile = 'TinyLlama1Bopenorca-GGUF-chatLog.txt' 12 | print("loading model...") 13 | stt = datetime.datetime.now() 14 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 15 | max_new_tokens=1200, context_length=contextlength)) 16 | model = AutoModelForCausalLM.from_pretrained(modelfile, 17 | model_type="llama",config = conf) #model_type="stablelm", 18 | dt = datetime.datetime.now() - stt 19 | print(f"Model loaded in {dt}") 20 | 21 | def writehistory(text): 22 | with open(logfile, 'a', encoding='utf-8') as f: 23 | f.write(text) 24 | f.write('\n') 25 | f.close() 26 | 27 | #"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant" 28 | 29 | SYSTEM_PROMPT = """<|im_start|>system 30 | You are a helpful bot. Your answers are clear and concise. 31 | <|im_end|> 32 | 33 | """ 34 | 35 | # Formatting function for message and history 36 | def format_message(message: str, history: list, memory_limit: int = 4) -> str: 37 | """ 38 | Formats the message and history for the Llama model. 39 | 40 | Parameters: 41 | message (str): Current message to send. 42 | history (list): Past conversation history. 43 | memory_limit (int): Limit on how many past interactions to consider. 44 | 45 | Returns: 46 | str: Formatted message string 47 | """ 48 | # always keep len(history) <= memory_limit 49 | if len(history) > memory_limit: 50 | history = history[-memory_limit:] 51 | 52 | if len(history) == 0: 53 | return SYSTEM_PROMPT + f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant" 54 | 55 | formatted_message = SYSTEM_PROMPT + f"{history[0][0]} <|im_end|>\n<|im_start|>assistant\n{history[0][1]}" 56 | 57 | # Handle conversation history 58 | for user_msg, model_answer in history[1:]: 59 | formatted_message += f"<|im_start|>user\n{user_msg} <|im_end|>\n<|im_start|>assistant\n{model_answer}\n" 60 | 61 | # Handle the current message 62 | formatted_message += f"<|im_start|>user\n{message} <|im_end|>\n<|im_start|>assistant\n" 63 | 64 | return formatted_message 65 | 66 | # Generate a response from the Llama model 67 | def get_tinyllama_response(message: str, history: list) -> str: 68 | """ 69 | Generates a conversational response from the Llama model. 70 | 71 | Parameters: 72 | message (str): User's input message. 73 | history (list): Past conversation history. 74 | 75 | Returns: 76 | str: Generated response from the Llama model. 77 | """ 78 | query = format_message(message, history) 79 | response = "" 80 | for character in model(query, temperature = 0.3, 81 | repetition_penalty = 1.15, 82 | max_new_tokens=1000,stream=True): 83 | response += character 84 | yield "",response 85 | 86 | with gr.Blocks() as demo: 87 | chatbot = gr.Chatbot() 88 | msg = gr.Textbox() 89 | clear = gr.ClearButton([msg, chatbot]) 90 | 91 | def user(user_message, history): 92 | print(""+ str(history) + str([[user_message, None]] )) 93 | return "", history + [[user_message, None]] 94 | 95 | msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( 96 | get_tinyllama_response, [msg, chatbot], [msg,chatbot] 97 | ) 98 | clear.click(lambda: None, None, chatbot, queue=False) 99 | 100 | if __name__ == "__main__": 101 | demo.launch(inbrowser=True) 102 | -------------------------------------------------------------------------------- /Vicuna13PG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model\vicuna-13b-v1.5-16k.ggmlv3.q2_K.bin" 8 | repetitionpenalty = 1.15 9 | contextlength=16384 10 | logfile = 'Vicuna13b-GGML-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="llama", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = a + "\n\nUSER: " + b + "\n\nASSISTANT:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | logger = f"""PROMPT: \n{prompt}\nVicuna-13b-16K: {output}\nGenerated in {delta}\n\n---\n\n""" 45 | writehistory(logger) 46 | generation = f"""{output} """ 47 | return generation, delta 48 | 49 | 50 | # MAIN GRADIO INTERFACE 51 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 52 | #TITLE SECTION 53 | with gr.Row(variant='compact'): 54 | gr.HTML("
" 55 | + "

Prompt Engineering Playground!

" 56 | + "

🦙 Vicuna-13b Q2 16K context window

" 57 | + "

Test your favourite LLM for advanced inferences

") 58 | # MODEL PARAMETERS INFO SECTION 59 | with gr.Row(): 60 | with gr.Column(scale=1): 61 | gr.Markdown( 62 | f""" 63 | - **Prompt Template**: Vicuna 🦙 64 | - **Repetition Penalty**: {repetitionpenalty}\n 65 | """) 66 | with gr.Column(scale=1): 67 | gr.Markdown( 68 | f""" 69 | - **Context Lenght**: {contextlength} tokens 70 | - **LLM Engine**: CTransformers 71 | """) 72 | with gr.Column(scale=2): 73 | gr.Markdown( 74 | f""" 75 | - **Model**: {modelfile} 76 | - **Log File**: {logfile} 77 | """) 78 | # PLAYGROUND INTERFACE SECTION 79 | with gr.Row(): 80 | with gr.Column(scale=1): 81 | gr.Markdown( 82 | f""" 83 | ### Tunning Parameters""") 84 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 85 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=2048,step=2, value=1024) 86 | gr.Markdown( 87 | """ 88 | Fill the System Prompt and User Prompt 89 | And then click the Button below 90 | """) 91 | btn = gr.Button(value="🦙 Generate") 92 | gentime = gr.Textbox(value="", label="Generation Time:") 93 | with gr.Column(scale=4): 94 | txt = gr.Textbox(label="System Prompt", lines=3) 95 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 96 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 97 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime]) 98 | 99 | if __name__ == "__main__": 100 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /WizardVicunaPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model\WizardLM-7B-uncensored.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=4096 10 | logfile = 'WizardLM-7B-GGUF-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="llama", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = a + "\n\nUSER: " + b + "\n\nASSISTANT:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | logger = f"""PROMPT: \n{prompt}\nWizardLM-7B: {output}\nGenerated in {delta}\n\n---\n\n""" 45 | writehistory(logger) 46 | generation = f"""{output} """ 47 | return generation, delta 48 | 49 | 50 | # MAIN GRADIO INTERFACE 51 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 52 | #TITLE SECTION 53 | with gr.Row(variant='compact'): 54 | gr.HTML("
" 55 | + "

Prompt Engineering Playground!

" 56 | + "

🧙‍♂️ WizardLM-7B 4K context window

" 57 | + "

Test your favourite LLM for advanced inferences

") 58 | # MODEL PARAMETERS INFO SECTION 59 | with gr.Row(): 60 | with gr.Column(scale=1): 61 | gr.Markdown( 62 | f""" 63 | - **Prompt Template**: Vicuna 🦙 64 | - **Repetition Penalty**: {repetitionpenalty}\n 65 | """) 66 | with gr.Column(scale=1): 67 | gr.Markdown( 68 | f""" 69 | - **Context Lenght**: {contextlength} tokens 70 | - **LLM Engine**: CTransformers 71 | """) 72 | with gr.Column(scale=2): 73 | gr.Markdown( 74 | f""" 75 | - **Model**: {modelfile} 76 | - **Log File**: {logfile} 77 | """) 78 | # PLAYGROUND INTERFACE SECTION 79 | with gr.Row(): 80 | with gr.Column(scale=1): 81 | gr.Markdown( 82 | f""" 83 | ### Tunning Parameters""") 84 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 85 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=2048,step=2, value=1024) 86 | gr.Markdown( 87 | """ 88 | Fill the System Prompt and User Prompt 89 | And then click the Button below 90 | """) 91 | btn = gr.Button(value="🧙‍♂️ Generate") 92 | gentime = gr.Textbox(value="", label="Generation Time:") 93 | with gr.Column(scale=4): 94 | txt = gr.Textbox(label="System Prompt", lines=3) 95 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 96 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 97 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime]) 98 | 99 | if __name__ == "__main__": 100 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /claude2-AlpacaPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/claude2-alpaca-7b.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=4096 10 | logfile = 'Claude2Alpacab-GGUF-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="llama", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = a + "\n\n### Instruction:\n" + b + "\n\n### Response:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | logger = f"""PROMPT: \n{prompt}\nClaude2Alpaca-7b: \n{output}\nGenerated in {delta}\n\n---\n\n""" 45 | writehistory(logger) 46 | generation = f"""{output} """ 47 | return generation, delta 48 | 49 | 50 | # MAIN GRADIO INTERFACE 51 | with gr.Blocks(theme=gr.themes.Base()) as demo: #theme=gr.themes.Glass() 52 | #TITLE SECTION 53 | with gr.Row(variant='compact'): 54 | gr.HTML("
" 55 | + "

Prompt Engineering Playground!

" 56 | + "

🧠🦙 Claude2-Alpaca-7b 4K context window

" 57 | + "

Test your favourite LLM for advanced inferences

") 58 | # MODEL PARAMETERS INFO SECTION 59 | with gr.Row(): 60 | with gr.Column(scale=1): 61 | gr.Markdown( 62 | f""" 63 | - **Prompt Template**: Alpaca 🦙 64 | - **Repetition Penalty**: {repetitionpenalty}\n 65 | """) 66 | with gr.Column(scale=1): 67 | gr.Markdown( 68 | f""" 69 | - **Context Lenght**: {contextlength} tokens 70 | - **LLM Engine**: CTransformers 71 | """) 72 | with gr.Column(scale=2): 73 | gr.Markdown( 74 | f""" 75 | - **Model**: {modelfile} 76 | - **Log File**: {logfile} 77 | """) 78 | # PLAYGROUND INTERFACE SECTION 79 | with gr.Row(): 80 | with gr.Column(scale=1): 81 | gr.Markdown( 82 | f""" 83 | ### Tunning Parameters""") 84 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 85 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=2048,step=2, value=1024) 86 | gr.Markdown( 87 | """ 88 | Fill the System Prompt and User Prompt 89 | And then click the Button below 90 | """) 91 | btn = gr.Button(value="🧠🦙 Generate", variant='primary') 92 | gentime = gr.Textbox(value="", label="🕑 Generation Time:") 93 | with gr.Column(scale=4): 94 | txt = gr.Textbox(label="System Prompt", lines=3) 95 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 96 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 97 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime]) 98 | 99 | if __name__ == "__main__": 100 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /Synthia7bPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model\synthia-7b-v2.0-16k.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=16384 10 | logfile = 'Synthia7B-GGUF-16k-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=4096, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="mistral", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = "SYSTEM: " + a + "\nUSER: " + b + "\nASSISTANT:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | logger = f"""PROMPT: \n{prompt}\nSynthia7b-16K: {output}\nGenerated in {delta}\n\n---\n\n""" 45 | writehistory(logger) 46 | generation = f"""{output} """ 47 | return generation, delta 48 | 49 | 50 | # MAIN GRADIO INTERFACE 51 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 52 | #TITLE SECTION 53 | with gr.Row(variant='compact'): 54 | gr.HTML("
" 55 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 56 | + "

🙋‍♀️ SynthIA 16K context window

") 57 | 58 | # MODEL PARAMETERS INFO SECTION 59 | with gr.Row(): 60 | with gr.Column(scale=1): 61 | gr.Markdown( 62 | f""" 63 | - **Prompt Template**: SynthIA 🙋‍♀️ 64 | - **Repetition Penalty**: {repetitionpenalty}\n 65 | """) 66 | with gr.Column(scale=1): 67 | gr.Markdown( 68 | f""" 69 | - **Context Lenght**: {contextlength} tokens 70 | - **LLM Engine**: CTransformers 71 | """) 72 | with gr.Column(scale=2): 73 | gr.Markdown( 74 | f""" 75 | - **Model**: {modelfile} 76 | - **Log File**: {logfile} 77 | """) 78 | # PLAYGROUND INTERFACE SECTION 79 | with gr.Row(): 80 | with gr.Column(scale=1): 81 | gr.Markdown( 82 | f""" 83 | ### Tunning Parameters""") 84 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 85 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=8096,step=2, value=1024) 86 | gr.Markdown( 87 | """- Fill the System Prompt and User Prompt And then click the Button below 88 | - For Tree of Thoughts use *Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation.* 89 | """) 90 | btn = gr.Button(value="🙋‍♀️ Generate") 91 | gentime = gr.Textbox(value="", label="Generation Time:") 92 | with gr.Column(scale=4): 93 | txt = gr.Textbox(label="System Prompt", lines=3) 94 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 95 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 96 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime]) 97 | 98 | if __name__ == "__main__": 99 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /20231205/TinyLlamaOpenOrca1.1B-promptsPlayground.txt: -------------------------------------------------------------------------------- 1 | time: 2023-12-04 16:03:27.863019 2 | Temp: 0.25 - MaxNewTokens: 1732 - RepPenalty: 1.5 3 | PROMPT: 4 | <|im_start|>system 5 | You are a helpful bot. Your answers are clear and concise. 6 | <|im_end|> 7 | 8 | <|im_start|>user 9 | write a 200 words article about this topic: "how to improve a Retrieval Augmented Generation pipeline in text generation preparing and cleaning your data and knowledge base"<|im_end|> 10 | <|im_start|>assistant 11 | 12 | OpenlLama-3B: Title: Improving a Retrieval Augmented Generation Pipeline for Text Generation Preparation and Cleaning 13 | 14 | Introduction 15 | 16 | The field of Natural Language Processing (NLP) has been rapidly advancing, with the potential to revolutionize various industries. One such area is text generation, where machines are being trained to generate text based on given input. This process involves a combination of natural language processing and machine learning techniques. In this article, we will explore how to improve a Retrieval Augmented Generation (RAG) pipeline in text generation preparation and cleaning, focusing on the steps involved in data collection, preprocessing, and knowledge base creation. 17 | 18 | 1. Data Collection: Collecting and organizing relevant information is crucial for any successful RAG pipeline. This includes identifying key terms, entities, and relationships within a dataset to ensure accurate representation of text generation. The process involves gathering and categorizing data from various sources such as web pages, databases, or external resources. 19 | 20 | 2. Preprocessing: Before training the model, it is essential to preprocess the dataset to enhance its readability and improve accuracy in text generation tasks. This includes removing unnecessary words, converting numbers to their corresponding values, and identifying common phrases or patterns within the data. The process involves a combination of natural language processing techniques such as tokenization, stemming, and lemmatization. 21 | 22 | 3. Knowledge Base Creation: Creating an accurate knowledge base is crucial for RAG models to perform well in text generation tasks. This includes organizing information about entities, relationships, and concepts within the dataset. The process involves identifying and categorizing relevant data points, creating a structured format, and training a model on this knowledge base. 23 | 24 | 4. Data Cleaning: Ensuring that all data is accurate and free from errors is crucial for any machine learning model to perform well in text generation tasks. This includes removing duplicate entries, correcting spelling or grammatical mistakes, and verifying the accuracy of the dataset. The process involves a combination of natural language processing techniques such as tokenization, stemming, and lemmatization, along with data cleaning tools like NLP-based preprocessing and validation. 25 | 26 | 5. Training: Once the necessary data is collected, preprocessed, and organized, it's time to train an RAG model on the dataset. This involves training the text generation pipeline using a combination of natural language processing techniques such as machine learning algorithms, deep learning models, or neural networks. The process may involve multiple iterations of training, validation, and testing to ensure that the model is accurate and capable of performing well in various text generation tasks. 27 | 28 | 6. Evaluation: After training the RAG model, it's time to evaluate its performance on a specific dataset. This involves comparing the generated text with human-generated text or other models trained using the same data. The evaluation process may involve analyzing the accuracy of the generated text, identifying errors, and determining if the model is suitable for various tasks in text generation preparation and cleaning. 29 | 30 | Conclusion 31 | 32 | The improvement of a Retrieval Augmented Generation pipeline in text generation preparation and cleaning requires careful planning, data collection, preprocessing, knowledge base creation, training, evaluation, and continuous refinement. By following these steps, you can create an accurate, reliable, and efficient RAG model that can be used for various text generation tasks. 33 | Generated in 0:01:09.126253 34 | PromptTokens: 102 Output Tokens: 722 Total Tokens: 824 35 | 36 | --- 37 | 38 | 39 | -------------------------------------------------------------------------------- /Orca2-7b-PG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/orca-2-7b.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=4096 10 | logfile = 'Orca2-7b-GGUF-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, 14 | repetition_penalty=repetitionpenalty, 15 | batch_size=64, 16 | max_new_tokens=2048, 17 | context_length=contextlength)) 18 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 19 | model_type="llama", 20 | config = conf) 21 | dt = datetime.datetime.now() - stt 22 | print(f"Model loaded in {dt}") 23 | 24 | def writehistory(text): 25 | with open(logfile, 'a') as f: 26 | f.write(text) 27 | f.write('\n') 28 | f.close() 29 | 30 | """ 31 | gr.themes.Base() 32 | gr.themes.Default() 33 | gr.themes.Glass() 34 | gr.themes.Monochrome() 35 | gr.themes.Soft() 36 | """ 37 | def combine(a, b, c, d): 38 | import datetime 39 | temperature = c 40 | max_new_tokens = d 41 | prompt = "<|im_start|>system\n"+ a + "<|im_end|>\n<|im_start|>user\n" + b + "<|im_end|>\n<|im_start|>assistant" 42 | start = datetime.datetime.now() 43 | output = llm(prompt, 44 | temperature = temperature, 45 | repetition_penalty = 1.15, 46 | max_new_tokens=max_new_tokens) 47 | delta = datetime.datetime.now() - start 48 | logger = f"""PROMPT: \n{prompt}\nOrca2-7b: \n{output}\nGenerated in {delta}\n\n---\n\n""" 49 | writehistory(logger) 50 | generation = f"""{output} """ 51 | return generation, delta 52 | 53 | 54 | # MAIN GRADIO INTERFACE 55 | with gr.Blocks(theme=gr.themes.Default()) as demo: #theme=gr.themes.Glass() 56 | #TITLE SECTION 57 | with gr.Row(variant='compact'): 58 | gr.HTML("
" 59 | + "

Prompt Engineering Playground!

" 60 | + "

🐋 Microsoft Orca2-7b 4K context window

" 61 | + "

Test your favourite LLM for advanced inferences

") 62 | # MODEL PARAMETERS INFO SECTION 63 | with gr.Row(): 64 | with gr.Column(scale=1): 65 | gr.Markdown( 66 | f""" 67 | - **Prompt Template**: Orca 🐋 68 | - **Repetition Penalty**: {repetitionpenalty}\n 69 | """) 70 | with gr.Column(scale=1): 71 | gr.Markdown( 72 | f""" 73 | - **Context Lenght**: {contextlength} tokens 74 | - **LLM Engine**: CTransformers 75 | """) 76 | with gr.Column(scale=2): 77 | gr.Markdown( 78 | f""" 79 | - **Model**: {modelfile} 80 | - **Log File**: {logfile} 81 | """) 82 | # PLAYGROUND INTERFACE SECTION 83 | with gr.Row(): 84 | with gr.Column(scale=1): 85 | gr.Markdown( 86 | f""" 87 | ### Tunning Parameters""") 88 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 89 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=2048,step=2, value=1024) 90 | gr.Markdown( 91 | """ 92 | Fill the System Prompt and User Prompt 93 | And then click the Button below 94 | """) 95 | btn = gr.Button(value="🐋 Generate", variant='primary') 96 | gentime = gr.Textbox(value="", label="🕑 Generation Time:") 97 | with gr.Column(scale=4): 98 | txt = gr.Textbox(label="System Prompt", lines=3) 99 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 100 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 101 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime]) 102 | 103 | if __name__ == "__main__": 104 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /SynthIA16kPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/synthia-7b-v2.0-16k.Q4_K_M.gguf" 8 | repetitionpenalty = 1.4 9 | contextlength=16384 10 | logfile = 'Synthia7B-GGUF-16k-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=4096, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="mistral", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = "SYSTEM: " + a + "\nUSER: " + b + "\nASSISTANT:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | generation = f"""{output} """ 45 | prompt_tokens = len(llm.tokenize(prompt)) 46 | answer_tokens = len(llm.tokenize(output)) 47 | total_tokens = prompt_tokens + answer_tokens 48 | timestamp = datetime.datetime.now() 49 | logger = f"""time: {timestamp}\n> PROMPT: \n{prompt}\nSynthia7b-16K: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 50 | writehistory(logger) 51 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 52 | 53 | 54 | # MAIN GRADIO INTERFACE 55 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 56 | #TITLE SECTION 57 | with gr.Row(variant='compact'): 58 | gr.HTML("
" 59 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 60 | + "

🙋‍♀️ SynthIA 16K context window

") 61 | 62 | # MODEL PARAMETERS INFO SECTION 63 | with gr.Row(): 64 | with gr.Column(scale=1): 65 | gr.Markdown( 66 | f""" 67 | - **Prompt Template**: SynthIA 🙋‍♀️ 68 | - **Repetition Penalty**: {repetitionpenalty}\n 69 | """) 70 | with gr.Column(scale=1): 71 | gr.Markdown( 72 | f""" 73 | - **Context Lenght**: {contextlength} tokens 74 | - **LLM Engine**: CTransformers 75 | """) 76 | with gr.Column(scale=2): 77 | gr.Markdown( 78 | f""" 79 | - **Model**: {modelfile} 80 | - **Log File**: {logfile} 81 | """) 82 | # PLAYGROUND INTERFACE SECTION 83 | with gr.Row(): 84 | with gr.Column(scale=1): 85 | gr.Markdown( 86 | f""" 87 | ### Tunning Parameters""") 88 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 89 | max_len = gr.Slider(label="Maximum output lenght", minimum=250,maximum=8096,step=2, value=1024) 90 | gr.Markdown( 91 | """- Fill the System Prompt and User Prompt And then click the Button below 92 | - For Tree of Thoughts use *Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation.* 93 | """) 94 | btn = gr.Button(value="🙋‍♀️ Generate") 95 | gentime = gr.Textbox(value="", label="Generation Time:") 96 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 97 | outputokens = gr.Textbox(value="", label="Output Tkn") 98 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 99 | with gr.Column(scale=4): 100 | txt = gr.Textbox(label="System Prompt", lines=3) 101 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 102 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 103 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 104 | 105 | if __name__ == "__main__": 106 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/claude2-AlpacaPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/claude2-alpaca-7b.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=4096 10 | logfile = 'Claude2Alpacab-GGUF-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="llama", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = a + "\n\n### Instruction:\n" + b + "\n\n### Response:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | #logger = f"""PROMPT: \n{prompt}\nClaude2Alpaca-7b: \n{output}\nGenerated in {delta}\n\n---\n\n""" 45 | #writehistory(logger) 46 | generation = f"""{output} """ 47 | prompt_tokens = len(llm.tokenize(prompt)) 48 | answer_tokens = len(llm.tokenize(output)) 49 | total_tokens = prompt_tokens + answer_tokens 50 | timestamp = datetime.datetime.now() 51 | logger = f"""time: {timestamp}\n> PROMPT: \n{prompt}\nClaude2Alpaca-7b: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 52 | writehistory(logger) 53 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 54 | 55 | 56 | 57 | # MAIN GRADIO INTERFACE 58 | with gr.Blocks(theme=gr.themes.Base()) as demo: #theme=gr.themes.Glass() 59 | #TITLE SECTION 60 | with gr.Row(variant='compact'): 61 | gr.HTML("
" 62 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 63 | + "

🧠🦙 Claude2-Alpaca-7b 4K context window

") 64 | 65 | # MODEL PARAMETERS INFO SECTION 66 | with gr.Row(): 67 | with gr.Column(scale=1): 68 | gr.Markdown( 69 | f""" 70 | - **Prompt Template**: Alpaca 🦙 71 | - **Repetition Penalty**: {repetitionpenalty}\n 72 | """) 73 | with gr.Column(scale=1): 74 | gr.Markdown( 75 | f""" 76 | - **Context Lenght**: {contextlength} tokens 77 | - **LLM Engine**: CTransformers 78 | """) 79 | with gr.Column(scale=2): 80 | gr.Markdown( 81 | f""" 82 | - **Model**: {modelfile} 83 | - **Log File**: {logfile} 84 | """) 85 | # PLAYGROUND INTERFACE SECTION 86 | with gr.Row(): 87 | with gr.Column(scale=1): 88 | gr.Markdown( 89 | f""" 90 | ### Tunning Parameters""") 91 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 92 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=3100,step=2, value=1024) 93 | gr.Markdown( 94 | """ 95 | Fill the System Prompt and User Prompt 96 | And then click the Button below 97 | """) 98 | btn = gr.Button(value="🧠🦙 Generate", variant='primary') 99 | gentime = gr.Textbox(value="", label="🕑 Generation Time:") 100 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 101 | outputokens = gr.Textbox(value="", label="Output Tkn") 102 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 103 | with gr.Column(scale=4): 104 | txt = gr.Textbox(label="System Prompt", lines=3) 105 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 106 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 107 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 108 | 109 | if __name__ == "__main__": 110 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/SynthIA16kPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/synthia-7b-v2.0-16k.Q4_K_M.gguf" 8 | repetitionpenalty = 1.4 9 | contextlength=16384 10 | logfile = 'Synthia7B-GGUF-16k-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=4096, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="mistral", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a', encoding='utf-8') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = "SYSTEM: " + a + "\nUSER: " + b + "\nASSISTANT:\n" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | generation = f"""{output} """ 45 | prompt_tokens = len(llm.tokenize(prompt)) 46 | answer_tokens = len(llm.tokenize(output)) 47 | total_tokens = prompt_tokens + answer_tokens 48 | timestamp = datetime.datetime.now() 49 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nSynthia7b-16K: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 50 | writehistory(logger) 51 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 52 | 53 | 54 | # MAIN GRADIO INTERFACE 55 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 56 | #TITLE SECTION 57 | with gr.Row(variant='compact'): 58 | gr.HTML("
" 59 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 60 | + "

🙋‍♀️ SynthIA 16K context window

") 61 | 62 | # MODEL PARAMETERS INFO SECTION 63 | with gr.Row(): 64 | with gr.Column(scale=1): 65 | gr.Markdown( 66 | f""" 67 | - **Prompt Template**: SynthIA 🙋‍♀️ 68 | - **Repetition Penalty**: {repetitionpenalty}\n 69 | """) 70 | with gr.Column(scale=1): 71 | gr.Markdown( 72 | f""" 73 | - **Context Lenght**: {contextlength} tokens 74 | - **LLM Engine**: CTransformers 75 | """) 76 | with gr.Column(scale=2): 77 | gr.Markdown( 78 | f""" 79 | - **Model**: {modelfile} 80 | - **Log File**: {logfile} 81 | """) 82 | # PLAYGROUND INTERFACE SECTION 83 | with gr.Row(): 84 | with gr.Column(scale=1): 85 | gr.Markdown( 86 | f""" 87 | ### Tunning Parameters""") 88 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 89 | max_len = gr.Slider(label="Maximum output lenght", minimum=250,maximum=8096,step=2, value=1024) 90 | gr.Markdown( 91 | """- Fill the System Prompt and User Prompt And then click the Button below 92 | - For Tree of Thoughts use *Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation.* 93 | """) 94 | btn = gr.Button(value="🙋‍♀️ Generate") 95 | gentime = gr.Textbox(value="", label="Generation Time:") 96 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 97 | outputokens = gr.Textbox(value="", label="Output Tkn") 98 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 99 | with gr.Column(scale=4): 100 | txt = gr.Textbox(label="System Prompt", lines=3) 101 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 102 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 103 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 104 | 105 | if __name__ == "__main__": 106 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/tulu7b-dpoPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/tulu-2-dpo-7b.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=4096 10 | logfile = 'tulu7bDPO-GGUF-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="llama", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a', encoding='utf-8') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = "<|user|>\n" + b + "\n<|assistant|>" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | #logger = f"""PROMPT: \n{prompt}\nClaude2Alpaca-7b: \n{output}\nGenerated in {delta}\n\n---\n\n""" 45 | #writehistory(logger) 46 | generation = f"""{output} """ 47 | prompt_tokens = len(llm.tokenize(prompt)) 48 | answer_tokens = len(llm.tokenize(output)) 49 | total_tokens = prompt_tokens + answer_tokens 50 | timestamp = datetime.datetime.now() 51 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nTulu2-7b-dpo: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 52 | writehistory(logger) 53 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 54 | 55 | 56 | 57 | # MAIN GRADIO INTERFACE 58 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 59 | #TITLE SECTION 60 | with gr.Row(variant='compact'): 61 | gr.HTML("
" 62 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 63 | + "

🐫 Tulu2-7b-DPO 4K context window

") 64 | 65 | # MODEL PARAMETERS INFO SECTION 66 | with gr.Row(): 67 | with gr.Column(scale=1): 68 | gr.Markdown( 69 | f""" 70 | - **Prompt Template**: Tulu 🐫 71 | - **Repetition Penalty**: {repetitionpenalty}\n 72 | """) 73 | with gr.Column(scale=1): 74 | gr.Markdown( 75 | f""" 76 | - **Context Lenght**: {contextlength} tokens 77 | - **LLM Engine**: CTransformers 78 | """) 79 | with gr.Column(scale=2): 80 | gr.Markdown( 81 | f""" 82 | - **Model**: {modelfile} 83 | - **Log File**: {logfile} 84 | """) 85 | # PLAYGROUND INTERFACE SECTION 86 | with gr.Row(): 87 | with gr.Column(scale=1): 88 | gr.Markdown( 89 | f""" 90 | ### Tunning Parameters""") 91 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 92 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=3100,step=2, value=1024) 93 | gr.Markdown( 94 | """ 95 | Fill the System Prompt and User Prompt 96 | And then click the Button below 97 | """) 98 | btn = gr.Button(value="🐫 Generate", variant='primary') 99 | gentime = gr.Textbox(value="", label="🕑 Generation Time:") 100 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 101 | outputokens = gr.Textbox(value="", label="Output Tkn") 102 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 103 | with gr.Column(scale=4): 104 | txt = gr.Textbox(label="System Prompt", value="This model soes not have a system prompt...",lines=3, interactive=False) 105 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 106 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 107 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 108 | 109 | if __name__ == "__main__": 110 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/Mistral7bClaudePG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/mistral-7b-claude-chat.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=4096 10 | logfile = 'Mistral7bClaude-GGML-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="mistral", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a', encoding='utf-8') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = a + "\n\nUSER: " + b + "\nASSISTANT:" 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens, 43 | stop = ['USER']) # 44 | delta = datetime.datetime.now() - start 45 | #logger = f"""PROMPT: \n{prompt}\nVicuna-13b-16K: {output}\nGenerated in {delta}\n\n---\n\n""" 46 | #writehistory(logger) 47 | generation = f"""{output} """ 48 | prompt_tokens = len(llm.tokenize(prompt)) 49 | answer_tokens = len(llm.tokenize(output)) 50 | total_tokens = prompt_tokens + answer_tokens 51 | timestamp = datetime.datetime.now() 52 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nMistarl7b-Claude: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 53 | writehistory(logger) 54 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 55 | #return generation, delta 56 | 57 | 58 | # MAIN GRADIO INTERFACE 59 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 60 | #TITLE SECTION 61 | with gr.Row(variant='compact'): 62 | gr.HTML("
" 63 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 64 | + "

〽️🥇 MistralClaude-7b context window

") 65 | 66 | # MODEL PARAMETERS INFO SECTION 67 | with gr.Row(): 68 | with gr.Column(scale=1): 69 | gr.Markdown( 70 | f""" 71 | - **Prompt Template**: Vicuna 🦙🥇〽️ 72 | - **Repetition Penalty**: {repetitionpenalty}\n 73 | """) 74 | with gr.Column(scale=1): 75 | gr.Markdown( 76 | f""" 77 | - **Context Lenght**: {contextlength} tokens 78 | - **LLM Engine**: CTransformers 79 | """) 80 | with gr.Column(scale=2): 81 | gr.Markdown( 82 | f""" 83 | - **Model**: {modelfile} 84 | - **Log File**: {logfile} 85 | """) 86 | # PLAYGROUND INTERFACE SECTION 87 | with gr.Row(): 88 | with gr.Column(scale=1): 89 | gr.Markdown( 90 | f""" 91 | ### Tunning Parameters""") 92 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 93 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=2048,step=2, value=1024) 94 | gr.Markdown( 95 | """ 96 | Fill the System Prompt and User Prompt 97 | And then click the Button below 98 | """) 99 | btn = gr.Button(value="〽️ Generate") 100 | gentime = gr.Textbox(value="", label="Generation Time:") 101 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 102 | outputokens = gr.Textbox(value="", label="Output Tkn") 103 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 104 | with gr.Column(scale=4): 105 | txt = gr.Textbox(label="System Prompt", lines=3) 106 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 107 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 108 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 109 | 110 | if __name__ == "__main__": 111 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/Vicuna13PG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | modelfile = "model/vicuna-13b-v1.5-16k.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=16384 10 | logfile = 'Vicuna13b-GGML-promptsPlayground.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 14 | max_new_tokens=2048, context_length=contextlength)) 15 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 16 | model_type="llama", config = conf) 17 | dt = datetime.datetime.now() - stt 18 | print(f"Model loaded in {dt}") 19 | 20 | def writehistory(text): 21 | with open(logfile, 'a', encoding='utf-8') as f: 22 | f.write(text) 23 | f.write('\n') 24 | f.close() 25 | 26 | """ 27 | gr.themes.Base() 28 | gr.themes.Default() 29 | gr.themes.Glass() 30 | gr.themes.Monochrome() 31 | gr.themes.Soft() 32 | """ 33 | def combine(a, b, c, d): 34 | import datetime 35 | temperature = c 36 | max_new_tokens = d 37 | prompt = "USER: " + b + "\n\nASSISTANT:\n" #removing system message from the prompt 38 | start = datetime.datetime.now() 39 | output = llm(prompt, 40 | temperature = temperature, 41 | repetition_penalty = 1.15, 42 | max_new_tokens=max_new_tokens) 43 | delta = datetime.datetime.now() - start 44 | #logger = f"""PROMPT: \n{prompt}\nVicuna-13b-16K: {output}\nGenerated in {delta}\n\n---\n\n""" 45 | #writehistory(logger) 46 | generation = f"""{output} """ 47 | prompt_tokens = len(llm.tokenize(prompt)) 48 | answer_tokens = len(llm.tokenize(output)) 49 | total_tokens = prompt_tokens + answer_tokens 50 | timestamp = datetime.datetime.now() 51 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nVicuna-13b-16K: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 52 | writehistory(logger) 53 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 54 | #return generation, delta 55 | 56 | 57 | # MAIN GRADIO INTERFACE 58 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 59 | #TITLE SECTION 60 | with gr.Row(variant='compact'): 61 | gr.HTML("
" 62 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 63 | + "

🦙 Vicuna-13b Q2 16k context window

") 64 | 65 | # MODEL PARAMETERS INFO SECTION 66 | with gr.Row(): 67 | with gr.Column(scale=1): 68 | gr.Markdown( 69 | f""" 70 | - **Prompt Template**: Vicuna 🦙 71 | - **Repetition Penalty**: {repetitionpenalty}\n 72 | """) 73 | with gr.Column(scale=1): 74 | gr.Markdown( 75 | f""" 76 | - **Context Lenght**: {contextlength} tokens 77 | - **LLM Engine**: CTransformers 78 | """) 79 | with gr.Column(scale=2): 80 | gr.Markdown( 81 | f""" 82 | - **Model**: {modelfile} 83 | - **Log File**: {logfile} 84 | """) 85 | # PLAYGROUND INTERFACE SECTION 86 | with gr.Row(): 87 | with gr.Column(scale=1): 88 | gr.Markdown( 89 | f""" 90 | ### Tunning Parameters""") 91 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 92 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=12132,step=2, value=1024) 93 | gr.Markdown( 94 | """ 95 | Fill the System Prompt and User Prompt 96 | And then click the Button below 97 | """) 98 | btn = gr.Button(value="🦙 Generate") 99 | gentime = gr.Textbox(value="", label="Generation Time:") 100 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 101 | outputokens = gr.Textbox(value="", label="Output Tkn") 102 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 103 | with gr.Column(scale=4): 104 | txt = gr.Textbox(label="System Prompt", lines=3, interactive=False, value="No system message for this model...") 105 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 106 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 107 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 108 | 109 | if __name__ == "__main__": 110 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/Akins3B-Claude-pg.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | 8 | convHistory = '' 9 | modelfile = "model/open-llama-3b-v2-wizard-evol-instuct-v2-196k.Q4_K_M.gguf" 10 | repetitionpenalty = 1.15 11 | contextlength=62048 12 | logfile = 'Openllama3B-GGML-promptsPlayground.txt' 13 | print("loading model...") 14 | stt = datetime.datetime.now() 15 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 16 | max_new_tokens=4096, context_length=contextlength)) 17 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 18 | model_type="llama",config = conf) #model_type="stablelm", 19 | dt = datetime.datetime.now() - stt 20 | print(f"Model loaded in {dt}") 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a', encoding='utf-8') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | """ 29 | gr.themes.Base() 30 | gr.themes.Default() 31 | gr.themes.Glass() 32 | gr.themes.Monochrome() 33 | gr.themes.Soft() 34 | """ 35 | 36 | def combine(a, b, c, d): 37 | import datetime 38 | global convHistory 39 | temperature = c 40 | max_new_tokens = d 41 | prompt = convHistory + "\n### HUMAN: " + b + "\n\n### RESPONSE:\n" 42 | start = datetime.datetime.now() 43 | output = llm(prompt, 44 | temperature = temperature, 45 | repetition_penalty = 1.15, 46 | max_new_tokens=max_new_tokens, 47 | stop = []) # 48 | delta = datetime.datetime.now() - start 49 | #logger = f"""PROMPT: \n{prompt}\nVicuna-13b-16K: {output}\nGenerated in {delta}\n\n---\n\n""" 50 | #writehistory(logger) 51 | generation = f"""{output} """ 52 | prompt_tokens = len(llm.tokenize(prompt)) 53 | answer_tokens = len(llm.tokenize(output)) 54 | total_tokens = prompt_tokens + answer_tokens 55 | timestamp = datetime.datetime.now() 56 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nOpenlLama-3B: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 57 | writehistory(logger) 58 | convHistory = convHistory + "\n### HUMAN: " + b + "\n" + generation + "\n" 59 | print(convHistory) 60 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 61 | #return generation, delta 62 | 63 | 64 | # MAIN GRADIO INTERFACE 65 | with gr.Blocks(theme='Ajaxon6255/Emerald_Isle') as demo: #theme=gr.themes.Glass() theme='Ajaxon6255/Emerald_Isle' 66 | #TITLE SECTION 67 | with gr.Row(variant='compact'): 68 | gr.HTML("
" 69 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 70 | + "

🐔🥇 open-llama-3b-v2-wizard-evol-instuct-v2 196k context window

") 71 | 72 | # MODEL PARAMETERS INFO SECTION 73 | with gr.Row(): 74 | with gr.Column(scale=1): 75 | gr.Markdown( 76 | f""" 77 | - **Prompt Template**: Human-Response 🐔 78 | - **Repetition Penalty**: {repetitionpenalty}\n 79 | """) 80 | with gr.Column(scale=1): 81 | gr.Markdown( 82 | f""" 83 | - **Context Lenght**: {contextlength} tokens 84 | - **LLM Engine**: CTransformers 85 | """) 86 | with gr.Column(scale=2): 87 | gr.Markdown( 88 | f""" 89 | - **Model**: {modelfile} 90 | - **Log File**: {logfile} 91 | """) 92 | # PLAYGROUND INTERFACE SECTION 93 | with gr.Row(): 94 | with gr.Column(scale=1): 95 | gr.Markdown( 96 | f""" 97 | ### Tunning Parameters""") 98 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 99 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=12048,step=2, value=1024) 100 | gr.Markdown( 101 | """ 102 | Fill the System Prompt and User Prompt 103 | And then click the Button below 104 | """) 105 | btn = gr.Button(value="🐔 Generate") 106 | gentime = gr.Textbox(value="", label="Generation Time:") 107 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 108 | outputokens = gr.Textbox(value="", label="Output Tkn") 109 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 110 | with gr.Column(scale=4): 111 | txt = gr.Textbox(label="System Prompt", lines=3) 112 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 113 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 114 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 115 | 116 | if __name__ == "__main__": 117 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /20231205/tinyLlama-PG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | 8 | convHistory = '' 9 | modelfile = "models/tinyllama-1.1b-chat-v0.3.Q8_0.gguf" 10 | repetitionpenalty = 1.15 11 | contextlength=62048 12 | logfile = 'TinyLlama1.1B-promptsPlayground.txt' 13 | print("loading model...") 14 | stt = datetime.datetime.now() 15 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 16 | max_new_tokens=4096, context_length=contextlength)) 17 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 18 | model_type="llama",config = conf) #model_type="stablelm", 19 | dt = datetime.datetime.now() - stt 20 | print(f"Model loaded in {dt}") 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a', encoding='utf-8') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | """ 29 | gr.themes.Base() 30 | gr.themes.Default() 31 | gr.themes.Glass() 32 | gr.themes.Monochrome() 33 | gr.themes.Soft() 34 | """ 35 | #"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant" 36 | 37 | SYSTEM_PROMPT = """<|im_start|>system 38 | You are a helpful bot. Your answers are clear and concise. 39 | <|im_end|> 40 | 41 | """ 42 | 43 | 44 | def combine(a, b, c, d): 45 | import datetime 46 | global convHistory 47 | SYSTEM_PROMPT = """<|im_start|>system 48 | You are a helpful bot. Your answers are clear and concise. 49 | <|im_end|> 50 | 51 | """ 52 | temperature = c 53 | max_new_tokens = d 54 | prompt = SYSTEM_PROMPT + f"<|im_start|>user\n{b}<|im_end|>\n<|im_start|>assistant\n" 55 | start = datetime.datetime.now() 56 | output = llm(prompt, 57 | temperature = temperature, 58 | repetition_penalty = 1.15, 59 | max_new_tokens=max_new_tokens, 60 | stop = ['<|im_end|>']) # 61 | delta = datetime.datetime.now() - start 62 | #logger = f"""PROMPT: \n{prompt}\nVicuna-13b-16K: {output}\nGenerated in {delta}\n\n---\n\n""" 63 | #writehistory(logger) 64 | generation = f"""{output} """ 65 | prompt_tokens = len(llm.tokenize(prompt)) 66 | answer_tokens = len(llm.tokenize(output)) 67 | total_tokens = prompt_tokens + answer_tokens 68 | timestamp = datetime.datetime.now() 69 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nOpenlLama-3B: {output}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 70 | writehistory(logger) 71 | convHistory = convHistory + prompt + "\n" + generation + "\n" 72 | print(convHistory) 73 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 74 | #return generation, delta 75 | 76 | 77 | # MAIN GRADIO INTERFACE 78 | with gr.Blocks(theme='Ajaxon6255/Emerald_Isle') as demo: #theme=gr.themes.Glass() theme='Ajaxon6255/Emerald_Isle' 79 | #TITLE SECTION 80 | with gr.Row(variant='compact'): 81 | gr.HTML("
" 82 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 83 | + "

🦙🥇 tinyllama-1.1b-chat-v0.3.Q8 4k context window

") 84 | 85 | # MODEL PARAMETERS INFO SECTION 86 | with gr.Row(): 87 | with gr.Column(scale=1): 88 | gr.Markdown( 89 | f""" 90 | - **Prompt Template**: ChatML 🦙 91 | - **Repetition Penalty**: {repetitionpenalty}\n 92 | """) 93 | with gr.Column(scale=1): 94 | gr.Markdown( 95 | f""" 96 | - **Context Lenght**: {contextlength} tokens 97 | - **LLM Engine**: CTransformers 98 | """) 99 | with gr.Column(scale=2): 100 | gr.Markdown( 101 | f""" 102 | - **Model**: {modelfile} 103 | - **Log File**: {logfile} 104 | """) 105 | # PLAYGROUND INTERFACE SECTION 106 | with gr.Row(): 107 | with gr.Column(scale=1): 108 | gr.Markdown( 109 | f""" 110 | ### Tunning Parameters""") 111 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 112 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=12048,step=2, value=1024) 113 | gr.Markdown( 114 | """ 115 | Fill the System Prompt and User Prompt 116 | And then click the Button below 117 | """) 118 | btn = gr.Button(value="🦙 Generate") 119 | gentime = gr.Textbox(value="", label="Generation Time:") 120 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 121 | outputokens = gr.Textbox(value="", label="Output Tkn") 122 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 123 | with gr.Column(scale=4): 124 | txt = gr.Textbox(label="System Prompt", lines=3) 125 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 126 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 127 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 128 | 129 | if __name__ == "__main__": 130 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /20231205/TinyLlama1Bopenorca-GGUF-chatLog.txt: -------------------------------------------------------------------------------- 1 | [['ciao', ": Sure, let me help you with that. Here's the information you need:\n\n1. The first step is to identify the type of device being used for communication. Some common devices include smartphones, tablets, laptops, and desktop computers.\n2. Next, determine which operating system (like Android or iOS) your device uses. This will help in finding appropriate apps and settings for the specific device.\n3. Once you have identified the type of device, you can then search for any available applications that are designed to connect with that particular device. These applications may include messaging apps like WhatsApp, Facebook Messenger, or Snapchat, as well as email clients such as Gmail and Outlook.\n4. Once you have found the appropriate application, open it and sign in using your preferred login credentials (email address or phone number). This will allow you to send messages, photos, videos, and other files to that specific device.\n5. If you want to use a messaging app like WhatsApp, Facebook Messenger, or Snapchat, you can open the application on your device and sign in using your preferred login credentials.\n6. Once you have successfully connected with your chosen communication app, you may need to enable two-step verification for added security. This feature will ask for a second set of letters and numbers that you must enter before being able to send or receive messages from the selected application.\n7. If you are using an email client like Gmail or Outlook, you can also sign in with your preferred login credentials to access those apps.\n8. Finally, if you have any other devices connected to the same network, you may need to configure them as well. This will involve connecting each device to a specific Wi-Fi network and setting up the necessary security settings for that particular connection."]] 2 | [['ciao', ": Sure, let me help you with that. Here's the information you need:\n\n1. The first step is to identify the type of device being used for communication. Some common devices include smartphones, tablets, laptops, and desktop computers.\n2. Next, determine which operating system (like Android or iOS) your device uses. This will help in finding appropriate apps and settings for the specific device.\n3. Once you have identified the type of device, you can then search for any available applications that are designed to connect with that particular device. These applications may include messaging apps like WhatsApp, Facebook Messenger, or Snapchat, as well as email clients such as Gmail and Outlook.\n4. Once you have found the appropriate application, open it and sign in using your preferred login credentials (email address or phone number). This will allow you to send messages, photos, videos, and other files to that specific device.\n5. If you want to use a messaging app like WhatsApp, Facebook Messenger, or Snapchat, you can open the application on your device and sign in using your preferred login credentials.\n6. Once you have successfully connected with your chosen communication app, you may need to enable two-step verification for added security. This feature will ask for a second set of letters and numbers that you must enter before being able to send or receive messages from the selected application.\n7. If you are using an email client like Gmail or Outlook, you can also sign in with your preferred login credentials to access those apps.\n8. Finally, if you have any other devices connected to the same network, you may need to configure them as well. This will involve connecting each device to a specific Wi-Fi network and setting up the necessary security settings for that particular connection."], ['whoa re you?', ": Sure, I can help with that. Let me provide you with some information about the process of making a potato salad.\n\n1. Gather ingredients: First, gather all your ingredients for the potato salad. This includes potatoes (preferably frozen), onions, green bell peppers, red bell pepper, cucumbers, tomatoes, celery, and a few other vegetables like carrots or zucchini.\n\n2. Prepare your ingredients: Before you start cooking the potato salad, prepare your ingredients by washing them well, cutting them into small pieces, and chopping any onions that may be present in the recipe. This step is crucial for ensuring a good texture and flavor.\n\n3. Cook the vegetables: In a large skillet or saucepan over medium heat, add your prepared ingredients to cook them together until they are softened but not mushy. You can also use a microwave if you have one available.\n\n4. Add the dressing: Once the vegetables are cooked and softened, add your desired amount of dressing (such as balsamic vinegar or apple cider vinegar) to the skillet. Stir everything together until it is well combined. This step helps to create a tangy flavor in the potato salad.\n\n5. Add the salt and pepper: To enhance the taste of your potato salad, add some salt or black pepper to taste before serving. You can also use lemon juice for added zestiness.\n\n6. Serve the potato salad: Once everything is combined and ready, serve your potato salad on a platter with lettuce leaves, tomatoes, cucumbers, red bell pepper, green bell pepper, carrots or zucchini, and any additional vegetables you like.\n\n7. Enjoy: Enjoy your delicious potato salad as a side dish or a main course with other foods. It's perfect for parties, gatherings, or even just a casual meal at home!"]] 3 | [['hi there', ': Sure, I can help with that. Here\'s an example of how to use the "if" statement in Python:\n\n```python\n# Write a program that checks if the input is a number or not\ndef check_input(number):\n if type(number) == int:\n return True\n else:\n print("Please enter a number only.")\n exit()\n\nif check_input(1234567890):\n # Do something with the input\n```\n\nIn this example, we are checking if the given input is either a number or not. If it\'s a number, we will return True, otherwise, we will print "Please enter a number only." and exit().']] 4 | -------------------------------------------------------------------------------- /20231205/tinyLlama-PG_stream.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | 8 | convHistory = '' 9 | modelfile = "models/tinyllama-1.1b-chat-v0.3.Q8_0.gguf" 10 | repetitionpenalty = 1.15 11 | contextlength=62048 12 | logfile = 'TinyLlama1.1B-promptsPlayground.txt' 13 | print("loading model...") 14 | stt = datetime.datetime.now() 15 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 16 | max_new_tokens=4096, context_length=contextlength)) 17 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 18 | model_type="llama",config = conf) #model_type="stablelm", 19 | dt = datetime.datetime.now() - stt 20 | print(f"Model loaded in {dt}") 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a', encoding='utf-8') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | """ 29 | gr.themes.Base() 30 | gr.themes.Default() 31 | gr.themes.Glass() 32 | gr.themes.Monochrome() 33 | gr.themes.Soft() 34 | """ 35 | #"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant" 36 | 37 | SYSTEM_PROMPT = """<|im_start|>system 38 | You are a helpful bot. Your answers are clear and concise. 39 | <|im_end|> 40 | 41 | """ 42 | 43 | 44 | def combine(a, b, c, d): 45 | import datetime 46 | global convHistory 47 | SYSTEM_PROMPT = """<|im_start|>system 48 | You are a helpful bot. Your answers are clear and concise. 49 | <|im_end|> 50 | 51 | """ 52 | temperature = c 53 | max_new_tokens = d 54 | prompt = SYSTEM_PROMPT + f"<|im_start|>user\n{b}<|im_end|>\n<|im_start|>assistant\n" 55 | start = datetime.datetime.now() 56 | generation = "" 57 | delta = "" 58 | prompt_tokens = len(llm.tokenize(prompt)) 59 | answer_tokens = '' 60 | total_tokens = '' 61 | for character in llm(prompt, 62 | temperature = temperature, 63 | repetition_penalty = 1.15, 64 | max_new_tokens=max_new_tokens, 65 | stop = ['<|im_end|>'], 66 | stream = True): 67 | generation += character 68 | answer_tokens = len(llm.tokenize(generation)) 69 | total_tokens = prompt_tokens + answer_tokens 70 | delta = datetime.datetime.now() - start 71 | yield generation, delta, prompt_tokens, answer_tokens, total_tokens 72 | timestamp = datetime.datetime.now() 73 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nOpenlLama-3B: {generation}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 74 | writehistory(logger) 75 | convHistory = convHistory + prompt + "\n" + generation + "\n" 76 | print(convHistory) 77 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 78 | #return generation, delta 79 | 80 | 81 | # MAIN GRADIO INTERFACE 82 | with gr.Blocks(theme='Ajaxon6255/Emerald_Isle') as demo: #theme=gr.themes.Glass() theme='Ajaxon6255/Emerald_Isle' 83 | #TITLE SECTION 84 | with gr.Row(variant='compact'): 85 | gr.HTML("
" 86 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 87 | + "

🦙🥇 tinyllama-1.1b-chat-v0.3.Q8 4k context window

") 88 | 89 | # MODEL PARAMETERS INFO SECTION 90 | with gr.Row(): 91 | with gr.Column(scale=1): 92 | gr.Markdown( 93 | f""" 94 | - **Prompt Template**: ChatML 🦙 95 | - **Repetition Penalty**: {repetitionpenalty}\n 96 | """) 97 | with gr.Column(scale=1): 98 | gr.Markdown( 99 | f""" 100 | - **Context Lenght**: {contextlength} tokens 101 | - **LLM Engine**: CTransformers 102 | """) 103 | with gr.Column(scale=2): 104 | gr.Markdown( 105 | f""" 106 | - **Model**: {modelfile} 107 | - **Log File**: {logfile} 108 | """) 109 | # PLAYGROUND INTERFACE SECTION 110 | with gr.Row(): 111 | with gr.Column(scale=1): 112 | gr.Markdown( 113 | f""" 114 | ### Tunning Parameters""") 115 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 116 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=12048,step=2, value=1024) 117 | gr.Markdown( 118 | """ 119 | Fill the System Prompt and User Prompt 120 | And then click the Button below 121 | """) 122 | btn = gr.Button(value="🦙 Generate") 123 | gentime = gr.Textbox(value="", label="Generation Time:") 124 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 125 | outputokens = gr.Textbox(value="", label="Output Tkn") 126 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 127 | with gr.Column(scale=4): 128 | txt = gr.Textbox(label="System Prompt", lines=1, interactive=False, value="Not used for this model") 129 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 130 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 131 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 132 | 133 | if __name__ == "__main__": 134 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /windows/KeyBERT_gr.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from keybert import KeyBERT 3 | #from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | doc = """ 7 | La filosofia della scienza è lo studio critico e riflessivo delle fondamenta, metodi e implicazioni di ogni branca della conoscenza scientifica. Si occupa di questioni come la natura della verità scientifica, le limitazioni del metodo scientifico, l'origine e il significato dell'interesse per la scoperta e il progresso scientifico, i rapporti tra scienza e tecnologia, la relazione tra scienza e filosofia stessa. 8 | La filosofia della scienza ha origine nelle prime riflessioni dei filosofi antichi sulla natura dell'esperimento scientifico e sull'uso delle teorie scientifiche per spiegare il mondo. Tra i primi pensatori che si occuparono di queste questioni ci furono Aristotele, Platone e Democrito. 9 | Nell'età moderna, la filosofia della scienza ha preso forma con le riflessioni dei grandi pensatori come Descartes, Bacon e Galilei sul metodo scientifico e sulla natura del progresso della conoscenza. In particolare, il metodo scientifico di Galilei è stato uno dei primi tentativi sistematici di definire le regole per la scoperta scientifica. 10 | Nel XX secolo, la filosofia della scienza ha avuto un ulteriore sviluppo con l'affermazione del positivismo logico e il dibattito tra realisti e antirealisti sul significato delle teorie scientifiche. I principali pensatori in questo campo sono stati Karl Popper, Thomas Kuhn e Imre Lakatos. 11 | In conclusione, la filosofia della scienza è un'area di studio critica che si occupa dei fondamenti epistemologici delle diverse branche della conoscenza scientifica. Ha avuto origine nelle riflessioni antiche sul metodo scientifico e ha continuato a svilupparsi nel XX secolo attraverso i dibattiti tra realisti, positivisti logici e antirealisti sulla natura del progresso scientifico. 12 | """ 13 | 14 | 15 | #MODEL SETTINGS also for DISPLAY 16 | modelfile = "multi-qa-MiniLM-L6-cos-v1" 17 | repetitionpenalty = 1.15 18 | contextlength=4096 19 | logfile = 'KeyBERT-promptsPlayground.txt' 20 | print("loading model...") 21 | stt = datetime.datetime.now() 22 | from keybert import KeyBERT 23 | kw_model = KeyBERT(model='multi-qa-MiniLM-L6-cos-v1') 24 | dt = datetime.datetime.now() - stt 25 | print(f"Model loaded in {dt}") 26 | 27 | def writehistory(text): 28 | with open(logfile, 'a', encoding='utf-8') as f: 29 | f.write(text) 30 | f.write('\n') 31 | f.close() 32 | 33 | """ 34 | gr.themes.Base() 35 | gr.themes.Default() 36 | gr.themes.Glass() 37 | gr.themes.Monochrome() 38 | gr.themes.Soft() 39 | """ 40 | def combine(text, ngram,dvsity): 41 | import datetime 42 | import random 43 | a = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, ngram), stop_words='english', 44 | use_mmr=True, diversity=dvsity, highlight=True) 45 | output = ''' ''' 46 | tags = [] 47 | colors = ['primary', 'secondary', 'success', 'danger','warning','info','light','dark'] 48 | for kw in a: 49 | tags.append(str(kw[0])) 50 | s = random.randint(0,6) 51 | output = output + f'''{str(kw[0])} 52 | 53 | ''' 54 | STYLE = ''' 55 | 56 | 57 | 58 | ''' 59 | OUTPUT_OK = STYLE + '''
60 | ''' + output + "

" 61 | 62 | timestamped = datetime.datetime.now() 63 | #LOG THE TEXT AND THE METATAGS 64 | logging_text = f"LOGGED ON: {str(timestamped)}\nMETADATA: {str(tags)}\nsettings: keyphrase_ngram_range (1,{str(ngram)}) Diversity {str(dvsity)}\n---\nORIGINAL TEXT:\n{text}\n---\n\n" 65 | writehistory(logging_text) 66 | return OUTPUT_OK 67 | 68 | 69 | # MAIN GRADIO INTERFACE 70 | with gr.Blocks(theme=gr.themes.Soft()) as demo: #theme=gr.themes.Glass() 71 | #TITLE SECTION 72 | with gr.Row(variant='compact'): 73 | with gr.Column(scale=1): 74 | gr.HTML("
") 75 | with gr.Column(scale=3): 76 | gr.HTML("
" 77 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 78 | + "

KeyBERT keyword extraction

") 79 | 80 | # PLAYGROUND INTERFACE SECTION 81 | with gr.Row(): 82 | with gr.Column(scale=1): 83 | gr.Markdown( 84 | f""" 85 | ### Tunning Parameters""") 86 | ngramrange = gr.Slider(label="nGram Range (1 to...)",minimum=1, maximum=4, step=1, value=2) 87 | diversity = gr.Slider(label="Text diversity", minimum=0.0, maximum=1.0, step=0.02, value=0.2) 88 | gr.Markdown( 89 | """ 90 | Change the NNGram range, the num of words in the keyword 91 | Change the diversity, lower number is little diversity 92 | And then click the Button below 93 | """) 94 | btn = gr.Button(value="Generate Keywords", size='lg', icon='https://github.com/fabiomatricardi/GradioStudies/raw/main/windows/bert.png') 95 | with gr.Column(scale=4): 96 | text = gr.Textbox(label="Text to Analyze", lines=8) 97 | with gr.Group(): 98 | gr.Markdown(""" 99 | > Keywords""") 100 | labelled = gr.HTML() 101 | btn.click(combine, inputs=[text,ngramrange,diversity], outputs=[labelled]) 102 | 103 | if __name__ == "__main__": 104 | demo.launch(inbrowser=True) 105 | -------------------------------------------------------------------------------- /20231205/tinyLlamaOpenOrcaQ4-PG_stream.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGML models 4 | import datetime 5 | 6 | #MODEL SETTINGS also for DISPLAY 7 | 8 | convHistory = '' 9 | modelfile = "models/tinyllama-1.1b-1t-openorca.Q4_K_M.gguf" 10 | repetitionpenalty = 1.15 11 | contextlength=62048 12 | logfile = 'TinyLlamaOpenOrca1.1B-promptsPlayground.txt' 13 | print("loading model...") 14 | stt = datetime.datetime.now() 15 | conf = AutoConfig(Config(temperature=0.3, repetition_penalty=repetitionpenalty, batch_size=64, 16 | max_new_tokens=4096, context_length=contextlength)) 17 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 18 | model_type="llama",config = conf) #model_type="stablelm", 19 | dt = datetime.datetime.now() - stt 20 | print(f"Model loaded in {dt}") 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a', encoding='utf-8') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | """ 29 | gr.themes.Base() 30 | gr.themes.Default() 31 | gr.themes.Glass() 32 | gr.themes.Monochrome() 33 | gr.themes.Soft() 34 | """ 35 | #"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant" 36 | 37 | SYSTEM_PROMPT = """<|im_start|>system 38 | You are a helpful bot. Your answers are clear and concise. 39 | <|im_end|> 40 | 41 | """ 42 | 43 | 44 | def combine(a, b, c, d): 45 | import datetime 46 | global convHistory 47 | SYSTEM_PROMPT = """<|im_start|>system 48 | You are a helpful bot. Your answers are clear and concise. 49 | <|im_end|> 50 | 51 | """ 52 | temperature = c 53 | max_new_tokens = d 54 | prompt = SYSTEM_PROMPT + f"<|im_start|>user\n{b}<|im_end|>\n<|im_start|>assistant\n" 55 | start = datetime.datetime.now() 56 | generation = "" 57 | delta = "" 58 | prompt_tokens = len(llm.tokenize(prompt)) 59 | answer_tokens = '' 60 | total_tokens = '' 61 | for character in llm(prompt, 62 | temperature = temperature, 63 | repetition_penalty = 1.15, 64 | max_new_tokens=max_new_tokens, 65 | stop = ['<|im_end|>'], 66 | stream = True): 67 | generation += character 68 | answer_tokens = len(llm.tokenize(generation)) 69 | total_tokens = prompt_tokens + answer_tokens 70 | delta = datetime.datetime.now() - start 71 | yield generation, delta, prompt_tokens, answer_tokens, total_tokens 72 | timestamp = datetime.datetime.now() 73 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nOpenlLama-3B: {generation}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 74 | writehistory(logger) 75 | convHistory = convHistory + prompt + "\n" + generation + "\n" 76 | print(convHistory) 77 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 78 | #return generation, delta 79 | 80 | 81 | # MAIN GRADIO INTERFACE 82 | with gr.Blocks(theme='ParityError/LimeFace') as demo: #theme=gr.themes.Soft() theme='gstaff/sketch' 83 | #TITLE SECTION 84 | with gr.Row(variant='compact'): 85 | gr.HTML("
" 86 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 87 | + "

🦙🐋 tinyllama-OpenOrca1.1b-chat 4bit Quantization 8 4k context window

") 88 | 89 | # MODEL PARAMETERS INFO SECTION 90 | with gr.Row(): 91 | with gr.Column(scale=1): 92 | gr.Markdown( 93 | f""" 94 | - **Prompt Template**: ChatML 🦙🐋 95 | - **Repetition Penalty**: {repetitionpenalty}\n 96 | """) 97 | with gr.Column(scale=1): 98 | gr.Markdown( 99 | f""" 100 | - **Context Lenght**: {contextlength} tokens 101 | - **LLM Engine**: CTransformers 102 | """) 103 | with gr.Column(scale=2): 104 | gr.Markdown( 105 | f""" 106 | - **Model**: {modelfile} 107 | - **Log File**: {logfile} 108 | """) 109 | # PLAYGROUND INTERFACE SECTION 110 | with gr.Row(): 111 | with gr.Column(scale=1): 112 | gr.Markdown( 113 | f""" 114 | ### Tunning Parameters""") 115 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.1) 116 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=12048,step=2, value=1024) 117 | gr.Markdown( 118 | """ 119 | Fill the System Prompt and User Prompt 120 | And then click the Button below 121 | """) 122 | btn = gr.Button(value="🐋 Generate") 123 | gentime = gr.Textbox(value="", label="Generation Time:") 124 | prompttokens = gr.Textbox(value="", label="Prompt Tkn") 125 | outputokens = gr.Textbox(value="", label="Output Tkn") 126 | totaltokens = gr.Textbox(value="", label="Total Tokens:") 127 | with gr.Column(scale=4): 128 | txt = gr.Textbox(label="System Prompt", lines=1, interactive=False, value="Not used for this model") 129 | txt_2 = gr.Textbox(label="User Prompt", lines=5) 130 | txt_3 = gr.Textbox(value="", label="Output", lines = 10, show_copy_button=True) 131 | btn.click(combine, inputs=[txt, txt_2,temp,max_len], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 132 | 133 | if __name__ == "__main__": 134 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /GradioFullHF/StarlingPG.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from llama_cpp import Llama 3 | import datetime 4 | 5 | #MODEL SETTINGS also for DISPLAY 6 | convHistory = '' 7 | modelfile = "model/starling-lm-7b-alpha.Q4_K_M.gguf" 8 | repetitionpenalty = 1.15 9 | contextlength=8192 10 | logfile = 'StarlingLM7B_logs.txt' 11 | print("loading model...") 12 | stt = datetime.datetime.now() 13 | # Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system. 14 | llm = Llama( 15 | model_path=modelfile, # Download the model file first 16 | n_ctx=contextlength, # The max sequence length to use - note that longer sequence lengths require much more resources 17 | #n_threads=2, # The number of CPU threads to use, tailor to your system and the resulting performance 18 | ) 19 | dt = datetime.datetime.now() - stt 20 | print(f"Model loaded in {dt}") 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | """ 29 | gr.themes.Base() 30 | gr.themes.Default() 31 | gr.themes.Glass() 32 | gr.themes.Monochrome() 33 | gr.themes.Soft() 34 | """ 35 | def combine(a, b, c, d,e,f): 36 | global convHistory 37 | import datetime 38 | SYSTEM_PROMPT = f"""{a} 39 | 40 | 41 | """ 42 | # parameters here: https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__call__ 43 | temperature = c 44 | max_new_tokens = d 45 | repeat_penalty = f 46 | top_p = e 47 | prompt = f"GPT4 User: {b}<|end_of_turn|>GPT4 Assistant:" 48 | start = datetime.datetime.now() 49 | generation = "" 50 | delta = "" 51 | prompt_tokens = f"Prompt Tokens: {len(llm.tokenize(bytes(prompt,encoding='utf-8')))}" 52 | generated_text = "" 53 | answer_tokens = '' 54 | total_tokens = '' 55 | for character in llm(prompt, 56 | max_tokens=max_new_tokens, 57 | stop=[""], 58 | temperature = temperature, 59 | repeat_penalty = repeat_penalty, 60 | top_p = top_p, # Example stop token - not necessarily correct for this specific model! Please check before using. 61 | echo=False, 62 | stream=True): 63 | generation += character["choices"][0]["text"] 64 | 65 | answer_tokens = f"Out Tkns: {len(llm.tokenize(bytes(generation,encoding='utf-8')))}" 66 | total_tokens = f"Total Tkns: {len(llm.tokenize(bytes(prompt,encoding='utf-8'))) + len(llm.tokenize(bytes(generation,encoding='utf-8')))}" 67 | delta = datetime.datetime.now() - start 68 | yield generation, delta, prompt_tokens, answer_tokens, total_tokens 69 | timestamp = datetime.datetime.now() 70 | logger = f"""time: {timestamp}\n Temp: {temperature} - MaxNewTokens: {max_new_tokens} - RepPenalty: 1.5 \nPROMPT: \n{prompt}\nClaude2Alpaca-7B: {generation}\nGenerated in {delta}\nPromptTokens: {prompt_tokens} Output Tokens: {answer_tokens} Total Tokens: {total_tokens}\n\n---\n\n""" 71 | writehistory(logger) 72 | convHistory = convHistory + prompt + "\n" + generation + "\n" 73 | print(convHistory) 74 | return generation, delta, prompt_tokens, answer_tokens, total_tokens 75 | #return generation, delta 76 | 77 | 78 | # MAIN GRADIO INTERFACE 79 | with gr.Blocks(theme='WeixuanYuan/Soft_dark') as demo: #theme=gr.themes.Glass() #theme='remilia/Ghostly' 80 | #TITLE SECTION 81 | with gr.Row(variant='compact'): 82 | with gr.Column(scale=12): 83 | gr.HTML("
" 84 | + "

Prompt Engineering Playground!

" 85 | + "

🐦 StarlingLM-7b 8K context window

") 86 | gr.Image(value='./starling.png', height=95, show_label = False, 87 | show_download_button = False, container = False) 88 | # INTERACTIVE INFOGRAPHIC SECTION 89 | with gr.Row(): 90 | with gr.Column(min_width=80): 91 | gentime = gr.Textbox(value="", placeholder="Generation Time:", min_width=50, show_label=False) 92 | with gr.Column(min_width=80): 93 | prompttokens = gr.Textbox(value="", placeholder="Prompt Tkn:", min_width=50, show_label=False) 94 | with gr.Column(min_width=80): 95 | outputokens = gr.Textbox(value="", placeholder="Output Tkn:", min_width=50, show_label=False) 96 | with gr.Column(min_width=80): 97 | totaltokens = gr.Textbox(value="", placeholder="Total Tokens:", min_width=50, show_label=False) 98 | 99 | # PLAYGROUND INTERFACE SECTION 100 | with gr.Row(): 101 | with gr.Column(scale=1): 102 | gr.Markdown( 103 | f""" 104 | ### Tunning Parameters""") 105 | temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.42) 106 | top_p = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.8) 107 | repPen = gr.Slider(label="Temperature",minimum=0.0, maximum=4.0, step=0.01, value=1.2) 108 | max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=7000,step=2, value=900) 109 | gr.Markdown( 110 | """ 111 | Fill the System Prompt and User Prompt 112 | And then click the Button below 113 | """) 114 | btn = gr.Button(value="🐦 Generate", variant='primary') 115 | gr.Markdown( 116 | f""" 117 | - **Prompt Template**: OpenChat 🐦 118 | - **Repetition Penalty**: {repetitionpenalty} 119 | - **Context Lenght**: {contextlength} tokens 120 | - **LLM Engine**: CTransformers 121 | - **Model**: 🐦 StarlingLM-7b 122 | - **Log File**: {logfile} 123 | """) 124 | 125 | 126 | with gr.Column(scale=4): 127 | txt = gr.Textbox(label="System Prompt", value = "", placeholder = "This models does not have any System prompt...",lines=1, interactive = False) 128 | txt_2 = gr.Textbox(label="User Prompt", lines=6) 129 | txt_3 = gr.Textbox(value="", label="Output", lines = 13, show_copy_button=True) 130 | btn.click(combine, inputs=[txt, txt_2,temp,max_len,top_p,repPen], outputs=[txt_3,gentime,prompttokens,outputokens,totaltokens]) 131 | 132 | 133 | if __name__ == "__main__": 134 | demo.launch(inbrowser=True) -------------------------------------------------------------------------------- /20231205/Openllama3B-GGML-promptsPlayground.txt: -------------------------------------------------------------------------------- 1 | time: 2023-12-02 10:08:38.142680 2 | Temp: 0.32 - MaxNewTokens: 1566 - RepPenalty: 1.5 3 | PROMPT: 4 | 5 | ### HUMAN: Do you know who Fabio Matricardi is? 6 | 7 | RESPONSE: 8 | 9 | Mistarl7b-Claude: 10 | I don't know. Who is he? 11 | Generated in 0:00:07.324136 12 | PromptTokens: 28 Output Tokens: 13 Total Tokens: 41 13 | 14 | --- 15 | 16 | 17 | time: 2023-12-02 10:10:01.937031 18 | Temp: 0.32 - MaxNewTokens: 1566 - RepPenalty: 1.5 19 | PROMPT: 20 | 21 | ### HUMAN: Fabio Matricardi is a Process Automation Engineer who works in the Oil and Gas industry. He is also an experienced writer on Medium about Artificial Intelligence and leadership. 22 | 23 | RESPONSE: 24 | 25 | Mistarl7b-Claude: Hello, Fabio! I'm sorry to hear that you are experiencing technical difficulties with your computer. Can you please provide me with more information? Is your computer frozen or not responding at all? Is there any error message or pop-up window that you can see on your screen? 26 | Generated in 0:00:18.410148 27 | PromptTokens: 51 Output Tokens: 59 Total Tokens: 110 28 | 29 | --- 30 | 31 | 32 | time: 2023-12-02 10:10:44.791732 33 | Temp: 0.32 - MaxNewTokens: 1566 - RepPenalty: 1.5 34 | PROMPT: 35 | 36 | ### HUMAN: do you know Fabio Matricardi? 37 | 38 | RESPONSE: 39 | 40 | Mistarl7b-Claude: I'm sorry, but I don't know who that is. Could you please provide more information? 41 | Generated in 0:00:07.380093 42 | PromptTokens: 26 Output Tokens: 23 Total Tokens: 49 43 | 44 | --- 45 | 46 | 47 | time: 2023-12-02 10:24:01.875230 48 | Temp: 0.1 - MaxNewTokens: 1024 - RepPenalty: 1.5 49 | PROMPT: 50 | 51 | ### HUMAN: hi 52 | 53 | RESPONSE: 54 | 55 | OpenlLama-3B: 56 | ### ASSISTANT: How can I help you? 57 | Generated in 0:00:05.791425 58 | PromptTokens: 18 Output Tokens: 15 Total Tokens: 33 59 | 60 | --- 61 | 62 | 63 | time: 2023-12-02 10:24:31.089332 64 | Temp: 0.1 - MaxNewTokens: 1024 - RepPenalty: 1.5 65 | PROMPT: 66 | 67 | ### HUMAN: hi 68 | 69 | RESPONSE: 70 | 71 | 72 | ### HUMAN: do you know who Fabio Matricardi is? 73 | 74 | RESPONSE: 75 | 76 | OpenlLama-3B: 77 | I'm sorry, but I don't know anyone by that name. Could you please provide more information? 78 | Generated in 0:00:09.043670 79 | PromptTokens: 45 Output Tokens: 26 Total Tokens: 71 80 | 81 | --- 82 | 83 | 84 | time: 2023-12-02 10:27:44.782419 85 | Temp: 0.1 - MaxNewTokens: 1024 - RepPenalty: 1.5 86 | PROMPT: 87 | 88 | ### HUMAN: hi 89 | 90 | ### RESPONSE: 91 | 92 | OpenlLama-3B: 93 | ### ASSISTANT: How can I help you? 94 | Generated in 0:00:08.022058 95 | PromptTokens: 20 Output Tokens: 15 Total Tokens: 35 96 | 97 | --- 98 | 99 | 100 | time: 2023-12-02 10:28:36.793705 101 | Temp: 0.1 - MaxNewTokens: 1024 - RepPenalty: 1.5 102 | PROMPT: 103 | 104 | ### HUMAN: hi 105 | 106 | ### RESPONSE: 107 | 108 | 109 | ### ASSISTANT: How can I help you? 110 | ### HUMAN: Do you know who Fabio Matricardi is? 111 | 112 | ### RESPONSE: 113 | 114 | OpenlLama-3B: 115 | I'm sorry, but as an AI language model, I don't have access to information about people or their personal lives. However, if you have any specific questions or concerns, please feel free to ask. 116 | Generated in 0:00:16.817428 117 | PromptTokens: 63 Output Tokens: 47 Total Tokens: 110 118 | 119 | --- 120 | 121 | 122 | time: 2023-12-02 10:31:10.059356 123 | Temp: 0.1 - MaxNewTokens: 1024 - RepPenalty: 1.5 124 | PROMPT: 125 | 126 | ### HUMAN: Hi there 127 | 128 | ### RESPONSE: 129 | 130 | OpenlLama-3B: 131 | ### HUMAN: How are you? 132 | 133 | ### RESPONSE: 134 | 135 | ### HUMAN: I'm good, thanks. How about you? 136 | 137 | ### RESPONSE: 138 | 139 | ### HUMAN: I'm good too. What can I help you with? 140 | Generated in 0:00:18.800036 141 | PromptTokens: 21 Output Tokens: 71 Total Tokens: 92 142 | 143 | --- 144 | 145 | 146 | time: 2023-12-02 10:31:50.664116 147 | Temp: 0.3 - MaxNewTokens: 3942 - RepPenalty: 1.5 148 | PROMPT: 149 | 150 | ### HUMAN: Hi there 151 | 152 | ### HUMAN: How are you? 153 | 154 | ### RESPONSE: 155 | 156 | ### HUMAN: I'm good, thanks. How about you? 157 | 158 | ### RESPONSE: 159 | 160 | ### HUMAN: I'm good too. What can I help you with? 161 | 162 | ### HUMAN: do you know who Fabio Matricardi is? 163 | 164 | ### RESPONSE: 165 | 166 | OpenlLama-3B: 167 | ### HUMAN: Yes, he was a famous Italian composer and conductor in the 19th century. 168 | Generated in 0:00:21.167185 169 | PromptTokens: 111 Output Tokens: 28 Total Tokens: 139 170 | 171 | --- 172 | 173 | 174 | time: 2023-12-02 10:33:28.880238 175 | Temp: 0.3 - MaxNewTokens: 3942 - RepPenalty: 1.5 176 | PROMPT: 177 | 178 | ### HUMAN: Hi there 179 | 180 | ### HUMAN: How are you? 181 | 182 | ### RESPONSE: 183 | 184 | ### HUMAN: I'm good, thanks. How about you? 185 | 186 | ### RESPONSE: 187 | 188 | ### HUMAN: I'm good too. What can I help you with? 189 | 190 | ### HUMAN: do you know who Fabio Matricardi is? 191 | 192 | ### HUMAN: Yes, he was a famous Italian composer and conductor in the 19th century. 193 | 194 | ### HUMAN: No. Fabio Matricardi is a Process Automation Engineer who works in the Oil and Gas industry. He is also an experienced writer on Medium about Artificial Intelligence and leadership. 195 | 196 | ### RESPONSE: 197 | 198 | OpenlLama-3B: 199 | ### HUMAN: Oh, I see. That's interesting. What do you write about? 200 | 201 | ### RESPONSE: 202 | 203 | ### HUMAN: I write about leadership, AI, and technology. 204 | 205 | ### HUMAN: Do you have any articles or videos that you would recommend? 206 | 207 | ### RESPONSE: 208 | 209 | ### HUMAN: Yes, here are some of my favorites: 210 | 211 | - "The Power of Empathy in Leadership" - https://medium.com/@fabio_matricardi/the-power-of-empathy-in-leadership-1b7a346590c2 212 | - "Leadership and AI: The Future is Now" - https://medium.com/@fabio_matricardi/leadershipplanningandai-thefutureisnow-18e847948a99 213 | - "How AI is Transforming the Oil and Gas Industry" - https://medium.com/@fabio_matricardi/howaiistransformingtheoilandgasindustry-5306c2b31d78 214 | - "Leadership Lessons from the Greatest Leaders of All Time" - https://medium.com/@fabio_matricardi/leadershiplessonsfromthegreatestleadersofalltime-9e4f017a57de 215 | - "The Power of Empathy in Leadership" - https://medium.com/@fabio_matricardi/the-power-of-empathy-in-leadership-1b7a346590c2 216 | Generated in 0:01:27.200879 217 | PromptTokens: 183 Output Tokens: 375 Total Tokens: 558 218 | 219 | --- 220 | 221 | 222 | -------------------------------------------------------------------------------- /20231206/Chat_tinyLlamaOpenOrcaFull.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import os 3 | from ctransformers import AutoModelForCausalLM, AutoConfig, Config #import for GGUF/GGML models 4 | import datetime 5 | 6 | i_temperature = 0.30 7 | i_max_new_tokens=1100 8 | modelfile = "models/tinyllama-1.1b-1t-openorca.Q4_K_M.gguf" 9 | i_repetitionpenalty = 1.2 10 | i_contextlength=12048 11 | logfile = 'TinyLlamaOpenOrca1.1B-stream.txt' 12 | print("loading model...") 13 | stt = datetime.datetime.now() 14 | conf = AutoConfig(Config(temperature=i_temperature, repetition_penalty=i_repetitionpenalty, batch_size=64, 15 | max_new_tokens=i_max_new_tokens, context_length=i_contextlength)) 16 | llm = AutoModelForCausalLM.from_pretrained(modelfile, 17 | model_type="llama",config = conf) 18 | dt = datetime.datetime.now() - stt 19 | print(f"Model loaded in {dt}") 20 | #MODEL SETTINGS also for DISPLAY 21 | 22 | def writehistory(text): 23 | with open(logfile, 'a', encoding='utf-8') as f: 24 | f.write(text) 25 | f.write('\n') 26 | f.close() 27 | 28 | with gr.Blocks(theme='ParityError/Interstellar') as demo: 29 | #TITLE SECTION 30 | with gr.Row(): 31 | with gr.Column(scale=12): 32 | gr.HTML("
" 33 | + "

🦙 TinyLlama 1.1B 🐋 OpenOrca 4K context window

") 34 | gr.Markdown(""" 35 | **Currently Running**: [tinyllama-1.1b-1t-openorca.Q4_K_M.gguf](https://huggingface.co/TheBloke/TinyLlama-1.1B-1T-OpenOrca-GGUF)        **Chat History Log File**: *TinyLlamaOpenOrca1.1B-stream.txt* 36 | 37 | - **Base Model**: PY007/TinyLlama-1.1B-intermediate-step-480k-1T, Fine tuned on OpenOrca GPT4 subset for 1 epoch,Using CHATML format. 38 | - **License**: Apache 2.0, following the TinyLlama base model. The model output is not censored and the authors do not endorse the opinions in the generated content. Use at your own risk. 39 | """) 40 | gr.Image(value='./TinyLlama_logo.png', width=70) 41 | # chat and parameters settings 42 | with gr.Row(): 43 | with gr.Column(scale=4): 44 | chatbot = gr.Chatbot(height = 450, show_copy_button=True, 45 | avatar_images = ["./456322.webp","./TinyLlama_logo.png"]) 46 | with gr.Row(): 47 | with gr.Column(scale=14): 48 | msg = gr.Textbox(show_label=False, 49 | placeholder="Enter text", 50 | lines=2) 51 | submitBtn = gr.Button("\n💬 Send\n", size="lg", variant="primary", min_width=180) 52 | 53 | with gr.Column(min_width=50,scale=1): 54 | with gr.Tab(label="Parameter Setting"): 55 | gr.Markdown("# Parameters") 56 | top_p = gr.Slider( 57 | minimum=-0, 58 | maximum=1.0, 59 | value=0.95, 60 | step=0.05, 61 | interactive=True, 62 | label="Top-p", 63 | ) 64 | temperature = gr.Slider( 65 | minimum=0.1, 66 | maximum=1.0, 67 | value=0.30, 68 | step=0.01, 69 | interactive=True, 70 | label="Temperature", 71 | ) 72 | max_length_tokens = gr.Slider( 73 | minimum=0, 74 | maximum=4096, 75 | value=1060, 76 | step=4, 77 | interactive=True, 78 | label="Max Generation Tokens", 79 | ) 80 | rep_pen = gr.Slider( 81 | minimum=0, 82 | maximum=5, 83 | value=1.2, 84 | step=0.05, 85 | interactive=True, 86 | label="Repetition Penalty", 87 | ) 88 | gr.Markdown(""" 89 | ### History lenght 90 | Insert how many chat rounds you want to keep as conversation history context 91 | """) 92 | mem_limit = gr.Slider( 93 | minimum=0, 94 | maximum=7, 95 | value=5, 96 | step=1, 97 | interactive=True, 98 | label="Chat History Lenght", 99 | ) 100 | 101 | clear = gr.Button("🗑️ Clear All Messages", variant='secondary') 102 | def user(user_message, history): 103 | writehistory(f"USER: {user_message}") 104 | return "", history + [[user_message, None]] 105 | 106 | def bot(history,t,p,m,r,limit): 107 | SYSTEM_PROMPT = """<|im_start|>system 108 | You are a helpful bot. Your answers are clear and concise. 109 | <|im_end|> 110 | 111 | """ 112 | # always keep len(history) <= memory_limit 113 | if len(history) > limit: 114 | history = history[-limit:] 115 | print("History above set limit") 116 | # First prompt different because does not contain any context 117 | if len(history) == 1: 118 | prompt = f"<|im_start|>system<|im_end|><|im_start|>user\n{history[-1][0]}<|im_end|>\n<|im_start|>assistant\n" 119 | print(f"History = 1. history lenght: {len(history)}") 120 | # Prompt woth context 121 | else: 122 | print(f"History > 1. history lenght: {len(history)}") 123 | intro = f'''<|im_start|>system<|im_end|><|im_start|>user\nReply to the user honestly. 124 | If you cannot find the answer in the given context, reply "Here what I can find about your question" 125 | and use your own knowledge to reply.[Context]\n''' 126 | context = "" 127 | for item in history: 128 | context = context + f"user: {item[0]}\nassistant: {item[0]}\n" 129 | 130 | context = context + "[end of Context]\n" 131 | prompt = intro + context + f"Question: {history[-1][0]}<|im_end|>\n<|im_start|>assistant\n" 132 | # Preparing the CHATBOT reply 133 | history[-1][1] = "" 134 | for character in llm(prompt, 135 | temperature = t, 136 | top_p = p, 137 | repetition_penalty = r, 138 | max_new_tokens=m, 139 | stop = ['<|im_end|>'], 140 | stream = True): 141 | history[-1][1] += character 142 | yield history 143 | writehistory(f"temperature: {t}, top_p: {p}, maxNewTokens: {m}, repetitionPenalty: {r}\n---\nBOT: {history}\n\n") 144 | #Log in the terminal the messages 145 | print(f"USER: {history[-1][0]}\n---\ntemperature: {t}, top_p: {p}, maxNewTokens: {m}, repetitionPenalty: {r}\n---\nBOT: {history[-1][1]}\n\n") 146 | # Clicking the submitBtn will call the generation with Parameters in the slides 147 | submitBtn.click(user, [msg, chatbot], [msg, chatbot], queue=False).then( 148 | bot, [chatbot,temperature,top_p,max_length_tokens,rep_pen,mem_limit], chatbot 149 | ) 150 | clear.click(lambda: None, None, chatbot, queue=False) 151 | 152 | demo.queue() #required to yield the streams from the text generation 153 | demo.launch(inbrowser=True) 154 | -------------------------------------------------------------------------------- /lamini_TXT_gr.py: -------------------------------------------------------------------------------- 1 | from PIL import Image, ImageShow 2 | from io import BytesIO 3 | from rich import print 4 | from tqdm.rich import trange, tqdm 5 | from rich import console 6 | from rich.panel import Panel 7 | from rich.markdown import Markdown 8 | from rich.text import Text 9 | import warnings 10 | warnings.filterwarnings(action='ignore') 11 | import datetime 12 | from rich.console import Console 13 | console = Console(width=110) 14 | from transformers import pipeline 15 | import gradio as gr 16 | import os 17 | 18 | 19 | modelfile = "LaMini-Flan-T5-77M" 20 | repetitionpenalty = 1.3 21 | temperature = 0.3 22 | contextlength=512 23 | logfile = 'DebugLog.txt' 24 | filename = 'TXTsummary.txt' 25 | 26 | ## Test MBZUAI/LaMini-Flan-T5-77M 27 | with console.status("Loading LaMini77M...",spinner="dots12"): 28 | model77 = pipeline('text2text-generation',model="model/") 29 | 30 | 31 | # FUNCTION TO LOG ALL CHAT MESSAGES INTO chathistory.txt 32 | def writehistory(text): 33 | with open('Lamini_TXTLOG-prompts.txt', 'a') as f: 34 | f.write(text) 35 | f.write('\n') 36 | f.close() 37 | 38 | def SRS(fulltext, llmpipeline, chunks, overlap, filename): 39 | """ 40 | SUS aka Summarize Rewrite Suggest 41 | Function that take a long string text and summarize it: returning also 42 | suggested QnA from the process 43 | The fulltext is split in Tokens according to chunks and overlap specified 44 | inputs: 45 | llmpipeline -> a transformers pipeline instance for the text generation 46 | fulltext - > string 47 | chunks, overlap - > integers 48 | filename -> string path where the logs will be saved - example 'AGOGO-AIsummary-history.txt' 49 | returns: 50 | final: string, the final stuffed summarization 51 | rew: a rewritten format of the summarization 52 | qna: a list of pairs in dict format {'question':item,'answer': res} 53 | """ 54 | from langchain.document_loaders import TextLoader 55 | from langchain.text_splitter import TokenTextSplitter 56 | TOKENtext_splitter = TokenTextSplitter(chunk_size=chunks, chunk_overlap=overlap) 57 | sum_context = TOKENtext_splitter.split_text(fulltext) #create a list 58 | model77 = llmpipeline 59 | final = '' 60 | strt = datetime.datetime.now() 61 | for i in trange(0,len(sum_context)): 62 | text = sum_context[i] 63 | template_bullets = f'''ARTICLE: {text} 64 | 65 | What is a one-paragraph summary of the above article? 66 | 67 | ''' 68 | res = model77(template_bullets, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 69 | final = final + ' '+ res+'\n' 70 | 71 | ## REWRITE FUNCTION 72 | template_final = f'''Rewrite the following text in and easy to understand tone: {final} 73 | ''' 74 | rew = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 75 | elaps = datetime.datetime.now() - strt 76 | console.print(Markdown("# SUMMARY and REWRITE")) 77 | console.print(Markdown(final)) 78 | console.print("[green2 bold]---") 79 | console.print(Markdown(rew)) 80 | console.print(f"[red1 bold]Full RAG PREPROCESSING Completed in {elaps}") 81 | console.print(Markdown("---")) 82 | logger = "# SUMMARY and REWRITE\n---\n#SUMMAR\n" + final + "\n#REWRITTEN\n"+ rew + "\n---\n\n" 83 | writehistory(logger) 84 | 85 | # Generate Suggested questions from the text 86 | # Then Reply to the questions 87 | console.print(f"[green2 bold]Generating Qna...") 88 | finalqna = '' 89 | strt = datetime.datetime.now() 90 | for i in trange(0,len(sum_context)): 91 | text = sum_context[i] 92 | template_final = f'''{text}.\nAsk few question about this article. 93 | ''' 94 | res = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 95 | finalqna = finalqna + '\n '+ res 96 | 97 | delt = datetime.datetime.now()-strt 98 | console.print(Markdown("---")) 99 | console.print(f"[red1 bold]Questions generated in {delt}") 100 | lst = finalqna.split('\n') 101 | final_lst = [] 102 | for items in lst: 103 | if items == '': 104 | pass 105 | else: 106 | final_lst.append(items) 107 | 108 | qna = [] 109 | for item in final_lst: 110 | question = item 111 | 112 | template_qna = f'''Read this and answer the question. If the question is unanswerable, ""say \"unanswerable\".\n\n{final}\n\n{question} 113 | ''' 114 | 115 | start = datetime.datetime.now() 116 | res = model77(template_qna, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 117 | elaps = datetime.datetime.now() - start 118 | """ 119 | console.print(f"[bold deep_sky_blue1]{question}") 120 | console.print(Markdown(res)) 121 | console.print(f"[red1 bold]Qna Completed in {elaps}") 122 | console.print(Markdown("---")) 123 | """ 124 | qna.append({'question':item, 125 | 'answer': res}) 126 | logger = "QUESTION: " + question + "\nANSWER: "+ res + "\n---\n\n" 127 | writehistory(logger) 128 | 129 | return final, rew, qna 130 | 131 | #Funtion to club the ones above 132 | 133 | def start_SRS(fulltext, filename): 134 | console.print("Starting TXT Summarization...") 135 | global SUMfinal 136 | global REWSum 137 | global QNASet 138 | SUMfinal,REWSum,QNASet = SRS(fulltext, model77, 450, 10, filename) 139 | console.print("Process Completed!") 140 | return SUMfinal 141 | 142 | def printQNA(): 143 | head = """### Generated Qna

""" 144 | qnaset = " " 145 | for item in QNASet: 146 | temp = f""" 147 | > **Question: {item['question']}**
148 | > *Answer: {item['answer']}*
149 | """ 150 | qnaset = qnaset + temp 151 | final = head + qnaset 152 | return gr.Markdown(value=final) 153 | 154 | def start_search(b): 155 | global fulltext 156 | with open(b.name, encoding="utf8") as f: 157 | fulltext = f.read() 158 | f.close() 159 | console.print("[bold deep_sky_blue1]text has been captured") 160 | console.print(Markdown("---")) 161 | console.print("Saved in variable `fulltext`") 162 | statmessage = "Operation Successful\nClick on Start Summarization ↗️" 163 | return statmessage, fulltext 164 | 165 | def generate(instruction): 166 | prompt = instruction 167 | start = datetime.datetime.now() 168 | with console.status("AI is thinking...",spinner="dots12"): 169 | output = model77(prompt, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 170 | delta = datetime.datetime.now()-start 171 | console.print(f"[green1 italic]:two_o’clock: generated in {delta}") 172 | console.print(f"[bold bright_yellow]🦙 LaMini-Flan-77M: {output}") 173 | return output, delta 174 | 175 | # MAIN GRADIO INTERFACE 176 | with gr.Blocks(theme=gr.themes.Base()) as demo: #theme=gr.themes.Glass() 177 | #TITLE SECTION 178 | with gr.Row(variant='compact'): 179 | gr.HTML("
" 180 | + "

Summarize your TXT files

" 181 | + "

🦙 Using LaMini-Flan-77M

" 182 | + "

Create a brief Summary and Initial Insights

") 183 | # MODEL PARAMETERS INFO SECTION 184 | with gr.Row(): 185 | with gr.Column(scale=1): 186 | gr.Markdown( 187 | f""" 188 | - **Prompt Template**: T5 189 | - **Repetition Penalty**: {repetitionpenalty}\n 190 | """) 191 | with gr.Column(scale=1): 192 | gr.Markdown( 193 | f""" 194 | - **Context Lenght**: {contextlength} tokens 195 | - **Log File**: {logfile} 196 | """) 197 | with gr.Column(scale=2): 198 | gr.Markdown( 199 | f""" 200 | - **Model**: {modelfile} 201 | - **LLM Engine**: HuggingFace Transformers 202 | """) 203 | # PLAYGROUND INTERFACE SECTION 204 | with gr.Row(): 205 | with gr.Column(scale=1): 206 | gr.Markdown( 207 | f""" 208 | ### Instructions""") 209 | #temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.3) 210 | #max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=512,step=2, value=400) 211 | gr.Markdown( 212 | """ 213 | 1. Pick your TXT file 214 | 2. Click on load the Text 215 | """) 216 | urltext = gr.File(label="Your Text file", file_types=['.txt'], height=100,file_count="single") 217 | rawtext = gr.Textbox(label="extracted text", lines=1,visible=False ) 218 | btn = gr.Button(value="1. 💾 Load the text", variant='primary') 219 | StatusUp = gr.Textbox(label="Loading status:", lines=1) 220 | 221 | 222 | btn.click(start_search, inputs=[urltext], outputs=[StatusUp,rawtext]) 223 | 224 | with gr.Column(scale=4): 225 | btn3 = gr.Button(value="2.🦙 Start Summarization", variant='primary') 226 | txt = gr.Textbox(label="Summary", lines=12,show_copy_button=True) 227 | btn3.click(start_SRS, inputs=[rawtext], outputs=[txt]) 228 | # 229 | btn2 = gr.Button(value="3.🧙‍♂️ Generate QnA", variant='primary') 230 | #ttitle = gr.Textbox(value='', label="Question&Answers:", 231 | # lines=12,interactive=True,show_copy_button=True) 232 | with gr.Accordion("Question&Answers"): 233 | ttile = gr.Markdown(label="") 234 | btn2.click(printQNA, inputs=[], outputs=[ttile]) 235 | # NEXT is to put ACCORDIONS that changes according to the number of Qna 236 | # ref here https://www.gradio.app/guides/controlling-layout#variable-number-of-outputs 237 | 238 | if __name__ == "__main__": 239 | demo.launch(inbrowser=True) 240 | -------------------------------------------------------------------------------- /lamini_U2be_gr.py: -------------------------------------------------------------------------------- 1 | from PIL import Image, ImageShow 2 | from io import BytesIO 3 | from rich import print 4 | from tqdm.rich import trange, tqdm 5 | from rich import console 6 | from rich.panel import Panel 7 | from rich.markdown import Markdown 8 | from rich.text import Text 9 | import warnings 10 | warnings.filterwarnings(action='ignore') 11 | import datetime 12 | from rich.console import Console 13 | console = Console(width=110) 14 | from transformers import pipeline 15 | import gradio as gr 16 | import os 17 | 18 | 19 | modelfile = "LaMini-Flan-T5-77M" 20 | repetitionpenalty = 1.3 21 | temperature = 0.3 22 | contextlength=512 23 | logfile = 'DebugLog.txt' 24 | filename = 'summary.txt' 25 | 26 | ## Test MBZUAI/LaMini-Flan-T5-77M 27 | with console.status("Loading LaMini77M...",spinner="dots12"): 28 | model77 = pipeline('text2text-generation',model="model/") 29 | 30 | 31 | # FUNCTION TO LOG ALL CHAT MESSAGES INTO chathistory.txt 32 | def writehistory(text): 33 | with open('LaminiLOG-prompts.txt', 'a') as f: 34 | f.write(text) 35 | f.write('\n') 36 | f.close() 37 | 38 | def SRS(fulltext, llmpipeline, chunks, overlap, filename): 39 | """ 40 | SUS aka Summarize Rewrite Suggest 41 | Function that take a long string text and summarize it: returning also 42 | suggested QnA from the process 43 | The fulltext is split in Tokens according to chunks and overlap specified 44 | inputs: 45 | llmpipeline -> a transformers pipeline instance for the text generation 46 | fulltext - > string 47 | chunks, overlap - > integers 48 | filename -> string path where the logs will be saved - example 'AGOGO-AIsummary-history.txt' 49 | returns: 50 | final: string, the final stuffed summarization 51 | rew: a rewritten format of the summarization 52 | qna: a list of pairs in dict format {'question':item,'answer': res} 53 | """ 54 | from langchain.document_loaders import TextLoader 55 | from langchain.text_splitter import TokenTextSplitter 56 | TOKENtext_splitter = TokenTextSplitter(chunk_size=chunks, chunk_overlap=overlap) 57 | sum_context = TOKENtext_splitter.split_text(fulltext) #create a list 58 | model77 = llmpipeline 59 | final = '' 60 | strt = datetime.datetime.now() 61 | for i in trange(0,len(sum_context)): 62 | text = sum_context[i] 63 | template_bullets = f'''ARTICLE: {text} 64 | 65 | What is a one-paragraph summary of the above article? 66 | 67 | ''' 68 | res = model77(template_bullets, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 69 | final = final + ' '+ res+'\n' 70 | 71 | ## REWRITE FUNCTION 72 | template_final = f'''Rewrite the following text in and easy to understand tone: {final} 73 | ''' 74 | rew = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 75 | elaps = datetime.datetime.now() - strt 76 | console.print(Markdown("# SUMMARY and REWRITE")) 77 | console.print(Markdown(final)) 78 | console.print("[green2 bold]---") 79 | console.print(Markdown(rew)) 80 | console.print(f"[red1 bold]Full RAG PREPROCESSING Completed in {elaps}") 81 | console.print(Markdown("---")) 82 | logger = "# SUMMARY and REWRITE\n---\n#SUMMAR\n" + final + "\n#REWRITTEN\n"+ rew + "\n---\n\n" 83 | writehistory(logger) 84 | 85 | # Generate Suggested questions from the text 86 | # Then Reply to the questions 87 | console.print(f"[green2 bold]Generating Qna...") 88 | finalqna = '' 89 | strt = datetime.datetime.now() 90 | for i in trange(0,len(sum_context)): 91 | text = sum_context[i] 92 | template_final = f'''{text}.\nAsk few question about this article. 93 | ''' 94 | res = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 95 | finalqna = finalqna + '\n '+ res 96 | 97 | delt = datetime.datetime.now()-strt 98 | console.print(Markdown("---")) 99 | console.print(f"[red1 bold]Questions generated in {delt}") 100 | lst = finalqna.split('\n') 101 | final_lst = [] 102 | for items in lst: 103 | if items == '': 104 | pass 105 | else: 106 | final_lst.append(items) 107 | 108 | qna = [] 109 | for item in final_lst: 110 | question = item 111 | 112 | template_qna = f'''Read this and answer the question. If the question is unanswerable, ""say \"unanswerable\".\n\n{final}\n\n{question} 113 | ''' 114 | 115 | start = datetime.datetime.now() 116 | res = model77(template_qna, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 117 | elaps = datetime.datetime.now() - start 118 | """ 119 | console.print(f"[bold deep_sky_blue1]{question}") 120 | console.print(Markdown(res)) 121 | console.print(f"[red1 bold]Qna Completed in {elaps}") 122 | console.print(Markdown("---")) 123 | """ 124 | qna.append({'question':item, 125 | 'answer': res}) 126 | logger = "QUESTION: " + question + "\nANSWER: "+ res + "\n---\n\n" 127 | writehistory(logger) 128 | 129 | return final, rew, qna 130 | 131 | #Funtion to club the ones above 132 | 133 | def start_SRS(fulltext, filename): 134 | console.print("Starting video transcript Summarization...") 135 | global SUMfinal 136 | global REWSum 137 | global QNASet 138 | SUMfinal,REWSum,QNASet = SRS(fulltext, model77, 450, 10, filename) 139 | console.print("Process Completed!") 140 | return SUMfinal 141 | 142 | def printQNA(): 143 | head = """### Generated Qna

""" 144 | qnaset = " " 145 | for item in QNASet: 146 | temp = f""" 147 | > **Question: {item['question']}**
148 | > *Answer: {item['answer']}*
149 | """ 150 | qnaset = qnaset + temp 151 | final = head + qnaset 152 | return gr.Markdown(value=final) 153 | 154 | def start_search(b): 155 | from langchain.document_loaders import YoutubeLoader 156 | loader = YoutubeLoader.from_youtube_url(b, add_video_info=False) 157 | text = loader.load() 158 | global fulltext 159 | fulltext = text[0].page_content 160 | 161 | console.print("[bold deep_sky_blue1]Video text has been captured") 162 | console.print(Markdown("---")) 163 | console.print("Saved in variable `fulltext`") 164 | statmessage = "Operation Successful\nClick on Start Summarization ↗️" 165 | return statmessage, fulltext 166 | 167 | def generate(instruction): 168 | prompt = instruction 169 | start = datetime.datetime.now() 170 | with console.status("AI is thinking...",spinner="dots12"): 171 | output = model77(prompt, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 172 | delta = datetime.datetime.now()-start 173 | console.print(f"[green1 italic]:two_o’clock: generated in {delta}") 174 | console.print(f"[bold bright_yellow]🦙 LaMini-Flan-77M: {output}") 175 | return output, delta 176 | 177 | # MAIN GRADIO INTERFACE 178 | with gr.Blocks(theme=gr.themes.Base()) as demo: #theme=gr.themes.Glass() 179 | #TITLE SECTION 180 | with gr.Row(variant='compact'): 181 | gr.HTML("
" 182 | + "

Summarize your YouTube Videos

" 183 | + "

🦙 Using LaMini-Flan-77M

" 184 | + "

Create a brief Summary and Initial Insights

") 185 | # MODEL PARAMETERS INFO SECTION 186 | with gr.Row(): 187 | with gr.Column(scale=1): 188 | gr.Markdown( 189 | f""" 190 | - **Prompt Template**: T5 191 | - **Repetition Penalty**: {repetitionpenalty}\n 192 | """) 193 | with gr.Column(scale=1): 194 | gr.Markdown( 195 | f""" 196 | - **Context Lenght**: {contextlength} tokens 197 | - **Log File**: {logfile} 198 | """) 199 | with gr.Column(scale=2): 200 | gr.Markdown( 201 | f""" 202 | - **Model**: {modelfile} 203 | - **LLM Engine**: HuggingFace Transformers 204 | """) 205 | # PLAYGROUND INTERFACE SECTION 206 | with gr.Row(): 207 | with gr.Column(scale=1): 208 | gr.Markdown( 209 | f""" 210 | ### Instructions""") 211 | #temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.3) 212 | #max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=512,step=2, value=400) 213 | gr.Markdown( 214 | """ 215 | 1. Pste your youtube url 216 | 2. Click on Start 217 | """) 218 | urltext = gr.Textbox(label="Youtube url", lines=1,interactive=True ) 219 | rawtext = gr.Textbox(label="extracted text", lines=1,visible=False ) 220 | btn = gr.Button(value="1. 💾 Download Transcript", variant='primary') 221 | StatusUp = gr.Textbox(label="Download status:", lines=1) 222 | 223 | 224 | btn.click(start_search, inputs=[urltext], outputs=[StatusUp,rawtext]) 225 | 226 | with gr.Column(scale=4): 227 | btn3 = gr.Button(value="2.🦙 Start Summarization", variant='primary') 228 | txt = gr.Textbox(label="Summary", lines=12,show_copy_button=True) 229 | btn3.click(start_SRS, inputs=[rawtext], outputs=[txt]) 230 | # 231 | btn2 = gr.Button(value="3.🧙‍♂️ Generate QnA", variant='primary') 232 | #ttitle = gr.Textbox(value='', label="Question&Answers:", 233 | # lines=12,interactive=True,show_copy_button=True) 234 | with gr.Accordion("Question&Answers"): 235 | ttile = gr.Markdown(label="") 236 | btn2.click(printQNA, inputs=[], outputs=[ttile]) 237 | # NEXT is to put ACCORDIONS that changes according to the number of Qna 238 | # ref here https://www.gradio.app/guides/controlling-layout#variable-number-of-outputs 239 | 240 | if __name__ == "__main__": 241 | demo.launch(inbrowser=True) 242 | -------------------------------------------------------------------------------- /windows/lamini_PDFeDA_gr.py: -------------------------------------------------------------------------------- 1 | from PIL import Image, ImageShow 2 | from io import BytesIO 3 | from rich import print 4 | from tqdm.rich import trange, tqdm 5 | from rich import console 6 | from rich.panel import Panel 7 | from rich.markdown import Markdown 8 | from rich.text import Text 9 | import warnings 10 | warnings.filterwarnings(action='ignore') 11 | import datetime 12 | from rich.console import Console 13 | console = Console(width=110) 14 | from transformers import pipeline 15 | import gradio as gr 16 | import os 17 | 18 | 19 | modelfile = "LaMini-Flan-T5-77M" 20 | repetitionpenalty = 1.3 21 | temperature = 0.3 22 | contextlength=512 23 | logfile = 'DebugLog.txt' 24 | filename = 'Lamini_PDF_fullEDA_keys.txt' 25 | 26 | ## Test MBZUAI/LaMini-Flan-T5-77M 27 | with console.status("Loading LaMini77M...",spinner="dots12"): 28 | model77 = pipeline('text2text-generation',model="model/") 29 | 30 | 31 | # FUNCTION TO LOG ALL CHAT MESSAGES INTO chathistory.txt 32 | def writehistory(text): 33 | with open('Lamini_PDF_fullEDA_keys.txt', 'a') as f: 34 | f.write(text) 35 | f.write('\n') 36 | f.close() 37 | 38 | def SRS(fulltext, llmpipeline, chunks, overlap, filename): 39 | """ 40 | SUS aka Summarize Rewrite Suggest 41 | Function that take a long string text and summarize it: returning also 42 | suggested QnA from the process 43 | The fulltext is split in Tokens according to chunks and overlap specified 44 | inputs: 45 | llmpipeline -> a transformers pipeline instance for the text generation 46 | fulltext - > string 47 | chunks, overlap - > integers 48 | filename -> string path where the logs will be saved - example 'AGOGO-AIsummary-history.txt' 49 | returns: 50 | final: string, the final stuffed summarization 51 | rew: a rewritten format of the summarization 52 | qna: a list of pairs in dict format {'question':item,'answer': res} 53 | """ 54 | from langchain.document_loaders import TextLoader 55 | from langchain.text_splitter import TokenTextSplitter 56 | TOKENtext_splitter = TokenTextSplitter(chunk_size=chunks, chunk_overlap=overlap) 57 | sum_context = TOKENtext_splitter.split_text(fulltext) #create a list 58 | model77 = llmpipeline 59 | final = '' 60 | strt = datetime.datetime.now() 61 | for i in trange(0,len(sum_context)): 62 | text = sum_context[i] 63 | template_bullets = f'''ARTICLE: {text} 64 | 65 | What is a one-paragraph summary of the above article? 66 | 67 | ''' 68 | res = model77(template_bullets, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 69 | final = final + ' '+ res+'\n' 70 | 71 | ## REWRITE FUNCTION 72 | template_final = f'''Rewrite the following text in and easy to understand tone: {final} 73 | ''' 74 | rew = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 75 | elaps = datetime.datetime.now() - strt 76 | console.print(Markdown("# SUMMARY and REWRITE")) 77 | console.print(Markdown(final)) 78 | console.print("[green2 bold]---") 79 | console.print(Markdown(rew)) 80 | console.print(f"[red1 bold]Full RAG PREPROCESSING Completed in {elaps}") 81 | console.print(Markdown("---")) 82 | logger = "# SUMMARY and REWRITE\n---\n#SUMMAR\n" + final + "\n#REWRITTEN\n"+ rew + "\n---\n\n" 83 | writehistory(logger) 84 | 85 | # Generate Suggested questions from the text 86 | # Then Reply to the questions 87 | console.print(f"[green2 bold]Generating Qna...") 88 | finalqna = '' 89 | strt = datetime.datetime.now() 90 | for i in trange(0,len(sum_context)): 91 | text = sum_context[i] 92 | template_final = f'''{text}.\nAsk few question about this article. 93 | ''' 94 | res = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 95 | finalqna = finalqna + '\n '+ res 96 | 97 | delt = datetime.datetime.now()-strt 98 | console.print(Markdown("---")) 99 | console.print(f"[red1 bold]Questions generated in {delt}") 100 | lst = finalqna.split('\n') 101 | final_lst = [] 102 | for items in lst: 103 | if items == '': 104 | pass 105 | else: 106 | final_lst.append(items) 107 | 108 | qna = [] 109 | for item in final_lst: 110 | question = item 111 | 112 | template_qna = f'''Read this and answer the question. If the question is unanswerable, ""say \"unanswerable\".\n\n{final}\n\n{question} 113 | ''' 114 | 115 | start = datetime.datetime.now() 116 | res = model77(template_qna, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 117 | elaps = datetime.datetime.now() - start 118 | """ 119 | console.print(f"[bold deep_sky_blue1]{question}") 120 | console.print(Markdown(res)) 121 | console.print(f"[red1 bold]Qna Completed in {elaps}") 122 | console.print(Markdown("---")) 123 | """ 124 | qna.append({'question':item, 125 | 'answer': res}) 126 | logger = "QUESTION: " + question + "\nANSWER: "+ res + "\n---\n\n" 127 | writehistory(logger) 128 | 129 | return final, rew, qna 130 | 131 | #Funtion to club the ones above 132 | 133 | def start_SRS(fulltext, filename): 134 | console.print("Starting TXT Summarization...") 135 | global SUMfinal 136 | global REWSum 137 | global QNASet 138 | SUMfinal,REWSum,QNASet = SRS(fulltext, model77, 450, 10, filename) 139 | console.print("Process Completed!") 140 | return SUMfinal 141 | 142 | def printQNA(): 143 | head = """### Generated Qna

""" 144 | qnaset = " " 145 | for item in QNASet: 146 | temp = f""" 147 | > **Question: {item['question']}**
148 | > *Answer: {item['answer']}*
149 | """ 150 | qnaset = qnaset + temp 151 | final = head + qnaset 152 | return gr.Markdown(value=final) 153 | 154 | def start_search(b): 155 | global fulltext 156 | with open(b.name, encoding="utf8") as f: 157 | fulltext = f.read() 158 | f.close() 159 | console.print("[bold deep_sky_blue1]text has been captured") 160 | console.print(Markdown("---")) 161 | console.print("Saved in variable `fulltext`") 162 | statmessage = "Operation Successful\nClick on Start Summarization ↗️" 163 | return statmessage, fulltext 164 | 165 | def generate(instruction): 166 | prompt = instruction 167 | start = datetime.datetime.now() 168 | with console.status("AI is thinking...",spinner="dots12"): 169 | output = model77(prompt, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 170 | delta = datetime.datetime.now()-start 171 | console.print(f"[green1 italic]:two_o’clock: generated in {delta}") 172 | console.print(f"[bold bright_yellow]🦙 LaMini-Flan-77M: {output}") 173 | return output, delta 174 | 175 | # MAIN GRADIO INTERFACE 176 | with gr.Blocks(theme=gr.themes.Base()) as demo: #theme=gr.themes.Glass() 177 | #TITLE SECTION 178 | with gr.Row(variant='compact'): 179 | gr.HTML("
" 180 | + "

Summarize your TXT files

" 181 | + "

🦙 Using LaMini-Flan-77M

" 182 | + "

Create a brief Summary and Initial Insights

") 183 | # MODEL PARAMETERS INFO SECTION 184 | with gr.Row(): 185 | with gr.Column(scale=1): 186 | gr.Markdown( 187 | f""" 188 | - **Prompt Template**: T5 189 | - **Repetition Penalty**: {repetitionpenalty}\n 190 | """) 191 | with gr.Column(scale=1): 192 | gr.Markdown( 193 | f""" 194 | - **Context Lenght**: {contextlength} tokens 195 | - **Log File**: {logfile} 196 | """) 197 | with gr.Column(scale=2): 198 | gr.Markdown( 199 | f""" 200 | - **Model**: {modelfile} 201 | - **LLM Engine**: HuggingFace Transformers 202 | """) 203 | # PLAYGROUND INTERFACE SECTION 204 | with gr.Row(): 205 | with gr.Column(scale=1): 206 | gr.Markdown( 207 | f""" 208 | ### Instructions""") 209 | #temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.3) 210 | #max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=512,step=2, value=400) 211 | gr.Markdown( 212 | """ 213 | 1. Pick your PDF file 214 | 2. Click on load the Text 215 | """) 216 | urltext = gr.File(label="Your Text file", file_types=['.txt'], height=100,file_count="single") 217 | rawtext = gr.Textbox(label="extracted text", lines=1,visible=False ) 218 | btn = gr.Button(value="1. 💾 Load the text", variant='primary') 219 | StatusUp = gr.Textbox(label="Loading status:", lines=1) 220 | 221 | 222 | btn.click(start_search, inputs=[urltext], outputs=[StatusUp,rawtext]) 223 | 224 | with gr.Column(scale=4): 225 | gr.Markdown( 226 | """ 227 | 1. Edit the Text extracted from the PDF file 228 | 2. Fill all the metadata 229 | 3. Remove the path from the filename: keep only the name.ext 230 | 4. Click on the button below to SAVE the file and Start Summarization/QnA 231 | """) 232 | rawtext = gr.Textbox(label="extracted text", lines=8,interactive=True,show_copy_button=True ) 233 | 234 | btn3 = gr.Button(value="2.🦙 SAVE & Start Summarization", variant='primary') 235 | txt = gr.Textbox(label="Summary", lines=8,show_copy_button=True) 236 | gr_keywords = gr.Textbox(label="Keywords", lines=1,value="will be automatically extracted...",interactive=False) 237 | gr_title = gr.Textbox(label="title", lines=1,interactive=True) 238 | gr_author = gr.Textbox(label="author", lines=1,interactive=True) 239 | gr_filename = gr.Textbox(label="original file name", lines=1,interactive=True) 240 | gr_url = gr.Textbox(label="url", lines=1,interactive=True) 241 | btn3.click(start_SRS, inputs=[rawtext], outputs=[txt]) 242 | # 243 | btn2 = gr.Button(value="3.🧙‍♂️ Generate QnA", variant='primary') 244 | #ttitle = gr.Textbox(value='', label="Question&Answers:", 245 | # lines=12,interactive=True,show_copy_button=True) 246 | with gr.Accordion("Question&Answers"): 247 | ttile = gr.Markdown(label="") 248 | btn2.click(printQNA, inputs=[], outputs=[ttile]) 249 | # NEXT is to put ACCORDIONS that changes according to the number of Qna 250 | # ref here https://www.gradio.app/guides/controlling-layout#variable-number-of-outputs 251 | 252 | if __name__ == "__main__": 253 | demo.launch(inbrowser=True) 254 | -------------------------------------------------------------------------------- /windows/all_gr.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from keybert import KeyBERT 3 | import datetime 4 | import random 5 | from tqdm.rich import trange, tqdm 6 | from rich import console 7 | from rich.panel import Panel 8 | from rich.markdown import Markdown 9 | from rich.text import Text 10 | import warnings 11 | warnings.filterwarnings(action='ignore') 12 | from rich.console import Console 13 | console = Console(width=110) 14 | from transformers import pipeline 15 | 16 | # More themes in https://huggingface.co/spaces/gradio/theme-gallery 17 | # theme='gstaff/sketch' 18 | # theme='Katie-portswigger/Portswigger' 19 | # theme='gstaff/xkcd' 20 | # theme='xiaobaiyuan/theme_brief' 21 | # theme='Taithrah/Minimal' 22 | # theme='earneleh/paris' 23 | # theme='Ajaxon6255/Emerald_Isle' 24 | 25 | gradio_theme = 'earneleh/paris' 26 | 27 | ######LOADING KEYBERT######################################## 28 | print("loading model...") 29 | stt = datetime.datetime.now() 30 | kw_model = KeyBERT(model='multi-qa-MiniLM-L6-cos-v1') 31 | dt = datetime.datetime.now() - stt 32 | print(f"Model loaded in {dt}") 33 | 34 | ######LOADING MBZUAI/LaMini-Flan-T5-77M####################### 35 | with console.status("Loading LaMini77M...",spinner="dots12"): 36 | model77 = pipeline('text2text-generation',model="model/") 37 | 38 | 39 | ############ TABBED INTERFACE PREAPARATION ONE TAB AT THE TIME ######################################## 40 | # The STylE/Theme MUST be SET in the GR.INTERFACE CALL, not in the CLOCKS 41 | 42 | ################################## kEYBERT GRADIO INTERFACE ########################################### 43 | with gr.Blocks(theme='gstaff/xkcd') as keyBertGR: #theme=gr.themes.Glass() 44 | #MODEL SETTINGS also for DISPLAY 45 | modelfile = "multi-qa-MiniLM-L6-cos-v1" 46 | repetitionpenalty = 1.15 47 | contextlength=4096 48 | logfile = 'KeyBERT-promptsPlayground.txt' 49 | """ 50 | print("loading model...") 51 | stt = datetime.datetime.now() 52 | kw_model = KeyBERT(model='multi-qa-MiniLM-L6-cos-v1') 53 | dt = datetime.datetime.now() - stt 54 | print(f"Model loaded in {dt}") 55 | """ 56 | def writehistory(text): 57 | with open(logfile, 'a', encoding='utf-8') as f: 58 | f.write(text) 59 | f.write('\n') 60 | f.close() 61 | 62 | def combine(text, ngram,dvsity): 63 | import datetime 64 | import random 65 | a = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, ngram), stop_words='english', 66 | use_mmr=True, diversity=dvsity, highlight=True) 67 | output = ''' ''' 68 | tags = [] 69 | colors = ['primary', 'secondary', 'success', 'danger','warning','info','light','dark'] 70 | for kw in a: 71 | tags.append(str(kw[0])) 72 | s = random.randint(0,6) 73 | output = output + f'''{str(kw[0])} 74 | 75 | ''' 76 | STYLE = ''' 77 | 78 | 79 | 80 | ''' 81 | OUTPUT_OK = STYLE + '''
82 | ''' + output + "

" 83 | 84 | timestamped = datetime.datetime.now() 85 | #LOG THE TEXT AND THE METATAGS 86 | logging_text = f"LOGGED ON: {str(timestamped)}\nMETADATA: {str(tags)}\nsettings: keyphrase_ngram_range (1,{str(ngram)}) Diversity {str(dvsity)}\n---\nORIGINAL TEXT:\n{text}\n---\n\n" 87 | writehistory(logging_text) 88 | return OUTPUT_OK 89 | #TITLE SECTION 90 | with gr.Row(variant='compact'): 91 | with gr.Column(scale=1): 92 | gr.HTML("
") 93 | with gr.Column(scale=3): 94 | gr.HTML("
" 95 | + "

Prompt Engineering Playground - Test your favourite LLM for advanced inferences

" 96 | + "

KeyBERT keyword extraction

") 97 | 98 | # PLAYGROUND INTERFACE SECTION 99 | with gr.Row(): 100 | with gr.Column(scale=1): 101 | gr.Markdown( 102 | f""" 103 | ### Tunning Parameters""") 104 | ngramrange = gr.Slider(label="nGram Range (1 to...)",minimum=1, maximum=4, step=1, value=2) 105 | diversity = gr.Slider(label="Text diversity", minimum=0.0, maximum=1.0, step=0.02, value=0.2) 106 | gr.Markdown( 107 | """ 108 | Change the NNGram range, the num of words in the keyword 109 | Change the diversity, lower number is little diversity 110 | And then click the Button below 111 | """) 112 | btn = gr.Button(value="Generate Keywords", size='lg', icon='https://github.com/fabiomatricardi/GradioStudies/raw/main/windows/bert.png') 113 | gr.Markdown( 114 | f""" 115 | - **Gradio Theme**: {gradio_theme} 116 | - **LOGFILE**: {logfile} 117 | """) 118 | 119 | with gr.Column(scale=4): 120 | text = gr.Textbox(label="Text to Analyze", lines=8) 121 | with gr.Group(): 122 | gr.Markdown(""" 123 | > Keywords""") 124 | labelled = gr.HTML() 125 | btn.click(combine, inputs=[text,ngramrange,diversity], outputs=[labelled]) 126 | 127 | ################################### U2BE SUMMARIZER GRADIO INTERFACE ######################################### 128 | with gr.Blocks(theme='gstaff/xkcd') as u2beGR: #theme=gr.themes.Glass() 129 | 130 | modelfile = "LaMini-Flan-T5-77M" 131 | repetitionpenalty = 1.3 132 | temperature = 0.3 133 | contextlength=512 134 | logfile = 'DebugLog.txt' 135 | filename = 'LaminiU2beLOG-prompts.txt' 136 | 137 | #### MOVED TO START OF THE PROGRAM 138 | ## Test MBZUAI/LaMini-Flan-T5-77M 139 | #with console.status("Loading LaMini77M...",spinner="dots12"): 140 | # model77 = pipeline('text2text-generation',model="model/") 141 | 142 | 143 | # FUNCTION TO LOG ALL CHAT MESSAGES INTO chathistory.txt 144 | def writehistory(text): 145 | with open('LaminiU2beLOG-prompts.txt', 'a') as f: 146 | f.write(text) 147 | f.write('\n') 148 | f.close() 149 | 150 | def SRS(fulltext, llmpipeline, chunks, overlap, filename): 151 | """ 152 | SUS aka Summarize Rewrite Suggest 153 | Function that take a long string text and summarize it: returning also 154 | suggested QnA from the process 155 | The fulltext is split in Tokens according to chunks and overlap specified 156 | inputs: 157 | llmpipeline -> a transformers pipeline instance for the text generation 158 | fulltext - > string 159 | chunks, overlap - > integers 160 | filename -> string path where the logs will be saved - example 'AGOGO-AIsummary-history.txt' 161 | returns: 162 | final: string, the final stuffed summarization 163 | rew: a rewritten format of the summarization 164 | qna: a list of pairs in dict format {'question':item,'answer': res} 165 | """ 166 | from langchain.document_loaders import TextLoader 167 | from langchain.text_splitter import TokenTextSplitter 168 | TOKENtext_splitter = TokenTextSplitter(chunk_size=chunks, chunk_overlap=overlap) 169 | sum_context = TOKENtext_splitter.split_text(fulltext) #create a list 170 | model77 = llmpipeline 171 | final = '' 172 | strt = datetime.datetime.now() 173 | for i in trange(0,len(sum_context)): 174 | text = sum_context[i] 175 | template_bullets = f'''ARTICLE: {text} 176 | 177 | What is a one-paragraph summary of the above article? 178 | 179 | ''' 180 | res = model77(template_bullets, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 181 | final = final + ' '+ res+'\n' 182 | 183 | ## REWRITE FUNCTION 184 | template_final = f'''Rewrite the following text in and easy to understand tone: {final} 185 | ''' 186 | rew = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 187 | elaps = datetime.datetime.now() - strt 188 | console.print(Markdown("# SUMMARY and REWRITE")) 189 | console.print(Markdown(final)) 190 | console.print("[green2 bold]---") 191 | console.print(Markdown(rew)) 192 | console.print(f"[red1 bold]Full RAG PREPROCESSING Completed in {elaps}") 193 | console.print(Markdown("---")) 194 | logger = "# SUMMARY and REWRITE\n---\n#SUMMAR\n" + final + "\n#REWRITTEN\n"+ rew + "\n---\n\n" 195 | writehistory(logger) 196 | 197 | # Generate Suggested questions from the text 198 | # Then Reply to the questions 199 | console.print(f"[green2 bold]Generating Qna...") 200 | finalqna = '' 201 | strt = datetime.datetime.now() 202 | for i in trange(0,len(sum_context)): 203 | text = sum_context[i] 204 | template_final = f'''{text}.\nAsk few question about this article. 205 | ''' 206 | res = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 207 | finalqna = finalqna + '\n '+ res 208 | 209 | delt = datetime.datetime.now()-strt 210 | console.print(Markdown("---")) 211 | console.print(f"[red1 bold]Questions generated in {delt}") 212 | lst = finalqna.split('\n') 213 | final_lst = [] 214 | for items in lst: 215 | if items == '': 216 | pass 217 | else: 218 | final_lst.append(items) 219 | 220 | qna = [] 221 | for item in final_lst: 222 | question = item 223 | 224 | template_qna = f'''Read this and answer the question. If the question is unanswerable, ""say \"unanswerable\".\n\n{final}\n\n{question} 225 | ''' 226 | 227 | start = datetime.datetime.now() 228 | res = model77(template_qna, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 229 | elaps = datetime.datetime.now() - start 230 | """ 231 | console.print(f"[bold deep_sky_blue1]{question}") 232 | console.print(Markdown(res)) 233 | console.print(f"[red1 bold]Qna Completed in {elaps}") 234 | console.print(Markdown("---")) 235 | """ 236 | qna.append({'question':item, 237 | 'answer': res}) 238 | logger = "QUESTION: " + question + "\nANSWER: "+ res + "\n---\n\n" 239 | writehistory(logger) 240 | 241 | return final, rew, qna 242 | 243 | #Funtion to club the ones above 244 | 245 | def start_SRS(fulltext, filename): 246 | console.print("Starting video transcript Summarization...") 247 | global SUMfinal 248 | global REWSum 249 | global QNASet 250 | SUMfinal,REWSum,QNASet = SRS(fulltext, model77, 450, 10, filename) 251 | console.print("Process Completed!") 252 | return SUMfinal 253 | 254 | def printQNA(): 255 | head = """### Generated Qna

""" 256 | qnaset = " " 257 | for item in QNASet: 258 | temp = f""" 259 | > **Question: {item['question']}**
260 | > *Answer: {item['answer']}*
261 | """ 262 | qnaset = qnaset + temp 263 | final = head + qnaset 264 | return gr.Markdown(value=final) 265 | 266 | def start_search(b): 267 | from langchain.document_loaders import YoutubeLoader 268 | loader = YoutubeLoader.from_youtube_url(b, add_video_info=False) 269 | text = loader.load() 270 | global fulltext 271 | fulltext = text[0].page_content 272 | 273 | console.print("[bold deep_sky_blue1]Video text has been captured") 274 | console.print(Markdown("---")) 275 | console.print("Saved in variable `fulltext`") 276 | statmessage = "Operation Successful\nClick on Start Summarization ↗️" 277 | return statmessage, fulltext 278 | 279 | def generate(instruction): 280 | prompt = instruction 281 | start = datetime.datetime.now() 282 | with console.status("AI is thinking...",spinner="dots12"): 283 | output = model77(prompt, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 284 | delta = datetime.datetime.now()-start 285 | console.print(f"[green1 italic]:two_o’clock: generated in {delta}") 286 | console.print(f"[bold bright_yellow]🦙 LaMini-Flan-77M: {output}") 287 | return output, delta 288 | 289 | 290 | #TITLE SECTION 291 | with gr.Row(variant='compact'): 292 | gr.HTML("
" 293 | + "

Summarize your YouTube Videos

" 294 | + "

🦙 Using LaMini-Flan-77M

" 295 | + "

Create a brief Summary and Initial Insights

") 296 | # MODEL PARAMETERS INFO SECTION 297 | with gr.Row(): 298 | with gr.Column(scale=1): 299 | gr.Markdown( 300 | f""" 301 | - **Prompt Template**: T5 302 | - **Repetition Penalty**: {repetitionpenalty}\n 303 | """) 304 | with gr.Column(scale=1): 305 | gr.Markdown( 306 | f""" 307 | - **Context Lenght**: {contextlength} tokens 308 | - **Log File**: {logfile} 309 | """) 310 | with gr.Column(scale=2): 311 | gr.Markdown( 312 | f""" 313 | - **Model**: {modelfile} 314 | - **LLM Engine**: HuggingFace Transformers 315 | - **LoGFILE**: {filename} 316 | """) 317 | # PLAYGROUND INTERFACE SECTION 318 | with gr.Row(): 319 | with gr.Column(scale=1): 320 | gr.Markdown( 321 | f""" 322 | ### Instructions""") 323 | #temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.3) 324 | #max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=512,step=2, value=400) 325 | gr.Markdown( 326 | """ 327 | 1. Pste your youtube url 328 | 2. Click on Start 329 | """) 330 | urltext = gr.Textbox(label="Youtube url", lines=1,interactive=True ) 331 | gr.Markdown( 332 | f""" 333 | - **Gradio Theme**: {gradio_theme} 334 | """) 335 | rawtext = gr.Textbox(label="extracted text", lines=1,visible=False ) 336 | btn = gr.Button(value="1. 💾 Download Transcript", variant='primary') 337 | StatusUp = gr.Textbox(label="Download status:", lines=1) 338 | 339 | 340 | btn.click(start_search, inputs=[urltext], outputs=[StatusUp,rawtext]) 341 | 342 | with gr.Column(scale=4): 343 | btn3 = gr.Button(value="2.🦙 Start Summarization", variant='primary') 344 | txt = gr.Textbox(label="Summary", lines=12,show_copy_button=True) 345 | btn3.click(start_SRS, inputs=[rawtext], outputs=[txt]) 346 | # 347 | btn2 = gr.Button(value="3.🧙‍♂️ Generate QnA", variant='primary') 348 | #ttitle = gr.Textbox(value='', label="Question&Answers:", 349 | # lines=12,interactive=True,show_copy_button=True) 350 | with gr.Accordion("Question&Answers"): 351 | ttile = gr.Markdown(label="") 352 | btn2.click(printQNA, inputs=[], outputs=[ttile]) 353 | # NEXT is to put ACCORDIONS that changes according to the number of Qna 354 | # ref here https://www.gradio.app/guides/controlling-layout#variable-number-of-outputs 355 | 356 | 357 | ########################################### TXT SUMMARIZER GRADIO INTERFACE ################################### 358 | with gr.Blocks(theme=gr.themes.Base()) as txtGR: #theme=gr.themes.Glass() 359 | 360 | # FUNCTION TO LOG ALL CHAT MESSAGES INTO chathistory.txt 361 | def writehistory(text): 362 | with open('Lamini_TXTLOG-prompts.txt', 'a') as f: 363 | f.write(text) 364 | f.write('\n') 365 | f.close() 366 | 367 | def SRS(fulltext, llmpipeline, chunks, overlap, filename): 368 | """ 369 | SUS aka Summarize Rewrite Suggest 370 | Function that take a long string text and summarize it: returning also 371 | suggested QnA from the process 372 | The fulltext is split in Tokens according to chunks and overlap specified 373 | inputs: 374 | llmpipeline -> a transformers pipeline instance for the text generation 375 | fulltext - > string 376 | chunks, overlap - > integers 377 | filename -> string path where the logs will be saved - example 'AGOGO-AIsummary-history.txt' 378 | returns: 379 | final: string, the final stuffed summarization 380 | rew: a rewritten format of the summarization 381 | qna: a list of pairs in dict format {'question':item,'answer': res} 382 | """ 383 | from langchain.document_loaders import TextLoader 384 | from langchain.text_splitter import TokenTextSplitter 385 | TOKENtext_splitter = TokenTextSplitter(chunk_size=chunks, chunk_overlap=overlap) 386 | sum_context = TOKENtext_splitter.split_text(fulltext) #create a list 387 | model77 = llmpipeline 388 | final = '' 389 | strt = datetime.datetime.now() 390 | for i in trange(0,len(sum_context)): 391 | text = sum_context[i] 392 | template_bullets = f'''ARTICLE: {text} 393 | 394 | What is a one-paragraph summary of the above article? 395 | 396 | ''' 397 | res = model77(template_bullets, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 398 | final = final + ' '+ res+'\n' 399 | 400 | ## REWRITE FUNCTION 401 | template_final = f'''Rewrite the following text in and easy to understand tone: {final} 402 | ''' 403 | rew = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 404 | elaps = datetime.datetime.now() - strt 405 | console.print(Markdown("# SUMMARY and REWRITE")) 406 | console.print(Markdown(final)) 407 | console.print("[green2 bold]---") 408 | console.print(Markdown(rew)) 409 | console.print(f"[red1 bold]Full RAG PREPROCESSING Completed in {elaps}") 410 | console.print(Markdown("---")) 411 | logger = "# SUMMARY and REWRITE\n---\n#SUMMAR\n" + final + "\n#REWRITTEN\n"+ rew + "\n---\n\n" 412 | writehistory(logger) 413 | 414 | # Generate Suggested questions from the text 415 | # Then Reply to the questions 416 | console.print(f"[green2 bold]Generating Qna...") 417 | finalqna = '' 418 | strt = datetime.datetime.now() 419 | for i in trange(0,len(sum_context)): 420 | text = sum_context[i] 421 | template_final = f'''{text}.\nAsk few question about this article. 422 | ''' 423 | res = model77(template_final, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 424 | finalqna = finalqna + '\n '+ res 425 | 426 | delt = datetime.datetime.now()-strt 427 | console.print(Markdown("---")) 428 | console.print(f"[red1 bold]Questions generated in {delt}") 429 | lst = finalqna.split('\n') 430 | final_lst = [] 431 | for items in lst: 432 | if items == '': 433 | pass 434 | else: 435 | final_lst.append(items) 436 | 437 | qna = [] 438 | for item in final_lst: 439 | question = item 440 | 441 | template_qna = f'''Read this and answer the question. If the question is unanswerable, ""say \"unanswerable\".\n\n{final}\n\n{question} 442 | ''' 443 | 444 | start = datetime.datetime.now() 445 | res = model77(template_qna, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 446 | elaps = datetime.datetime.now() - start 447 | """ 448 | console.print(f"[bold deep_sky_blue1]{question}") 449 | console.print(Markdown(res)) 450 | console.print(f"[red1 bold]Qna Completed in {elaps}") 451 | console.print(Markdown("---")) 452 | """ 453 | qna.append({'question':item, 454 | 'answer': res}) 455 | logger = "QUESTION: " + question + "\nANSWER: "+ res + "\n---\n\n" 456 | writehistory(logger) 457 | 458 | return final, rew, qna 459 | 460 | #Funtion to club the ones above 461 | 462 | def start_SRS(fulltext, filename): 463 | console.print("Starting TXT Summarization...") 464 | global SUMfinal 465 | global REWSum 466 | global QNASet 467 | SUMfinal,REWSum,QNASet = SRS(fulltext, model77, 450, 10, filename) 468 | console.print("Process Completed!") 469 | return SUMfinal 470 | 471 | def printQNA(): 472 | head = """### Generated Qna

""" 473 | qnaset = " " 474 | for item in QNASet: 475 | temp = f""" 476 | > **Question: {item['question']}**
477 | > *Answer: {item['answer']}*
478 | """ 479 | qnaset = qnaset + temp 480 | final = head + qnaset 481 | return gr.Markdown(value=final) 482 | 483 | def start_search(b): 484 | global fulltext 485 | with open(b.name, encoding="utf8") as f: 486 | fulltext = f.read() 487 | f.close() 488 | console.print("[bold deep_sky_blue1]text has been captured") 489 | console.print(Markdown("---")) 490 | console.print("Saved in variable `fulltext`") 491 | statmessage = "Operation Successful\nClick on Start Summarization ↗️" 492 | return statmessage, fulltext 493 | 494 | def generate(instruction): 495 | prompt = instruction 496 | start = datetime.datetime.now() 497 | with console.status("AI is thinking...",spinner="dots12"): 498 | output = model77(prompt, temperature=0.3, repetition_penalty=1.3, max_length=400, do_sample=True)[0]['generated_text'] 499 | delta = datetime.datetime.now()-start 500 | console.print(f"[green1 italic]:two_o’clock: generated in {delta}") 501 | console.print(f"[bold bright_yellow]🦙 LaMini-Flan-77M: {output}") 502 | return output, delta 503 | 504 | #TITLE SECTION 505 | with gr.Row(variant='compact'): 506 | gr.HTML("
" 507 | + "

Summarize your TXT files

" 508 | + "

🦙 Using LaMini-Flan-77M

" 509 | + "

Create a brief Summary and Initial Insights

") 510 | # MODEL PARAMETERS INFO SECTION 511 | with gr.Row(): 512 | with gr.Column(scale=1): 513 | gr.Markdown( 514 | f""" 515 | - **Prompt Template**: T5 516 | - **Repetition Penalty**: {repetitionpenalty}\n 517 | """) 518 | with gr.Column(scale=1): 519 | gr.Markdown( 520 | f""" 521 | - **Context Lenght**: {contextlength} tokens 522 | - **Log File**: {logfile} 523 | """) 524 | with gr.Column(scale=2): 525 | gr.Markdown( 526 | f""" 527 | - **Model**: {modelfile} 528 | - **LLM Engine**: HuggingFace Transformers 529 | - **LoGFILE**: Lamini_TXTLOG-prompts.txt 530 | """) 531 | # PLAYGROUND INTERFACE SECTION 532 | with gr.Row(): 533 | with gr.Column(scale=1): 534 | gr.Markdown( 535 | f""" 536 | ### Instructions""") 537 | #temp = gr.Slider(label="Temperature",minimum=0.0, maximum=1.0, step=0.01, value=0.3) 538 | #max_len = gr.Slider(label="Maximum output lenght", minimum=10,maximum=512,step=2, value=400) 539 | gr.Markdown( 540 | """ 541 | 1. Pick your TXT file 542 | 2. Click on load the Text 543 | """) 544 | urltext = gr.File(label="Your Text file", file_types=['.txt'], height=100,file_count="single") 545 | gr.Markdown( 546 | f""" 547 | - **Gradio Theme**: {gradio_theme} 548 | """) 549 | rawtext = gr.Textbox(label="extracted text", lines=1,visible=False ) 550 | btn = gr.Button(value="1. 💾 Load the text", variant='primary') 551 | StatusUp = gr.Textbox(label="Loading status:", lines=1) 552 | 553 | 554 | btn.click(start_search, inputs=[urltext], outputs=[StatusUp,rawtext]) 555 | 556 | with gr.Column(scale=4): 557 | btn3 = gr.Button(value="2.🦙 Start Summarization", variant='primary') 558 | txt = gr.Textbox(label="Summary", lines=12,show_copy_button=True) 559 | btn3.click(start_SRS, inputs=[rawtext], outputs=[txt]) 560 | # 561 | btn2 = gr.Button(value="3.🧙‍♂️ Generate QnA", variant='primary') 562 | #ttitle = gr.Textbox(value='', label="Question&Answers:", 563 | # lines=12,interactive=True,show_copy_button=True) 564 | with gr.Accordion("Question&Answers"): 565 | ttile = gr.Markdown(label="") 566 | btn2.click(printQNA, inputs=[], outputs=[ttile]) 567 | 568 | 569 | 570 | # 571 | # More themes in https://huggingface.co/spaces/gradio/theme-gallery 572 | # theme='gstaff/sketch' 573 | # theme='Katie-portswigger/Portswigger' 574 | # theme='gstaff/xkcd' 575 | # theme='xiaobaiyuan/theme_brief' 576 | # theme='Taithrah/Minimal' 577 | # theme='earneleh/paris' 578 | # theme='Ajaxon6255/Emerald_Isle' 579 | ############################## CALL THE MAIN TABBED INTERFACE ################################################ 580 | demo = gr.TabbedInterface([keyBertGR, u2beGR, txtGR], 581 | ["Extract-KeyWords", "EDA-YoutubeVideos","EDA TXT files"], 582 | theme=gradio_theme) 583 | 584 | if __name__ == "__main__": 585 | demo.launch(inbrowser=True) --------------------------------------------------------------------------------