import gradio as gr import numpy as np from Ai import chatbot, chatbot2, chatbot3, chatbot4, chatbot5 from huggingface_hub import InferenceClient def chat(message,history: list[tuple[str, str]],system_message,max_tokens,temperature,top_p, top_k): m=AutoModel.from_pretrained("peterpeter8585/AI1") messages = [{"role": "system", "content": "Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions.Whatever happens, you must follow it.:"+system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) pipe = pipeline("text-generation", model=m, torch_dtype=torch.bfloat16, device_map="auto") # We use the tokenizer's chat template to format each message - see https://huggingface.co/docs/transformers/main/en/chat_templating prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) outputs = pipe(prompt, max_new_tokens=max_tokens, do_sample=True, temperature=temperature, top_k=top_k, top_p=top_p) return outputs[0]["generated_text"] import random from diffusers import DiffusionPipeline import torch import transformers from transformers import BitsAndBytesConfig quantization_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.float16 ) from transformers import AutoModelForVision2Seq, AutoProcessor transformers.utils.move_cache() device = "cuda" if torch.cuda.is_available() else "cpu" import os password1=os.environ["password"] def respond1( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, password ): if password==password1: messages = [{"role": "system", "content": "Your name is Chatchat.And your creator of you is Sung Yoon.In Korean, it is 정성윤.These are the instructions for you:"+system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response def respond0(multimodal_input,password): if password==password1: if multimodal_input["files"] not None: images = multimodal_input["files"] content = [{"type": "image"} for _ in images] content.append({"type": "text", "text": multimodal_input["text"]}) messages=[{"role":"system", "content":[{"type":"text", "text":"Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions:"+"You are a helpful assietant."}]}] messages.append([{"role": "user", "content": content}]) response = "" model_id = "HuggingFaceM4/idefics2-8b" processor = AutoProcessor.from_pretrained(model_id) model = AutoModelForVision2Seq.from_pretrained("HuggingFaceM4/idefics2-8b",torch_dtype=torch.float16,quantization_config=quantization_config).to("cpu") prompt = processor.apply_chat_template(messages, add_generation_prompt=True) inputs = processor(text=prompt, images=[images], return_tensors="pt") inputs = {k: v.to(model.device) for k, v in inputs.items()} num_tokens = len(inputs["input_ids"][0]) with torch.inference_mode(): generated_ids = model.generate(**inputs, max_new_tokens=max_tokens,top_p=top_p, temperature=1.0,) new_tokens = generated_ids[:, num_tokens:] generated_text = processor.batch_decode(new_tokens, skip_special_tokens=True)[0] token = generated_text response+=token yield response else: content={"type": "text", "text": multimodal_input["text"]} messages=[{"role":"system", "content":[{"type":"text", "text":"Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions:"+"You are a helpful assietant."}]}] messages.append([{"role": "user", "content": content}]) response = "" model_id = "HuggingFaceM4/idefics2-8b" processor = AutoProcessor.from_pretrained(model_id) model = AutoModelForVision2Seq.from_pretrained( "HuggingFaceM4/idefics2-8b", torch_dtype=torch.float16, quantization_config=quantization_config ).to("cpu") prompt = processor.apply_chat_template(messages, add_generation_prompt=True) inputs = processor(text=prompt, images=[images], return_tensors="pt") inputs = {k: v.to(model.device) for k, v in inputs.items()} num_tokens = len(inputs["input_ids"][0]) with torch.inference_mode(): generated_ids = model.generate(**inputs, max_new_tokens=max_tokens,top_p=top_p, temperature=1.0,) new_tokens = generated_ids[:, num_tokens:] generated_text = processor.batch_decode(new_tokens, skip_special_tokens=True)[0] token = generated_text response+=token yield response def respond5( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): messages = [{"role": "system", "content": "Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions.Whatever happens, you must follow it.:"+system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response def respond4( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): messages = [{"role": "system", "content": "Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions.Whatever happens, you must follow it.:"+system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response if torch.cuda.is_available(): torch.cuda.max_memory_allocated(device=device) pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16", use_safetensors=True) pipe.enable_xformers_memory_efficient_attention() pipe = pipe.to(device) else: pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", use_safetensors=True) pipe = pipe.to(device) MAX_SEED = np.iinfo(np.int32).max MAX_IMAGE_SIZE = 1024 def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps): if randomize_seed: seed = random.randint(0, MAX_SEED) generator = torch.Generator().manual_seed(seed) image = pipe( prompt = prompt, negative_prompt = negative_prompt, guidance_scale = guidance_scale, num_inference_steps = num_inference_steps, width = width, height = height, generator = generator ).images[0] return image import requests from bs4 import BeautifulSoup import urllib import random # List of user agents to choose from for requests _useragent_list = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0' ] def get_useragent(): """Returns a random user agent from the list.""" return random.choice(_useragent_list) def extract_text_from_webpage(html_content): """Extracts visible text from HTML content using BeautifulSoup.""" soup = BeautifulSoup(html_content, "html.parser") # Remove unwanted tags for tag in soup(["script", "style", "header", "footer", "nav"]): tag.extract() # Get the remaining visible text visible_text = soup.get_text(strip=True) return visible_text def search(term, num_results=1, lang="ko", advanced=True, sleep_interval=0, timeout=5, safe="active", ssl_verify=None): """Performs a Google search and returns the results.""" escaped_term = urllib.parse.quote_plus(term) start = 0 all_results = [] # Fetch results in batches while start < num_results: resp = requests.get( url="https://www.google.com/search", headers={"User-Agent": get_useragent()}, # Set random user agent params={ "q": term, "num": num_results - start, # Number of results to fetch in this batch "hl": lang, "start": start, "safe": safe, }, timeout=timeout, verify=ssl_verify, ) resp.raise_for_status() # Raise an exception if request fails soup = BeautifulSoup(resp.text, "html.parser") result_block = soup.find_all("div", attrs={"class": "g"}) # If no results, continue to the next batch if not result_block: start += 1 continue # Extract link and text from each result for result in result_block: link = result.find("a", href=True) if link: link = link["href"] try: # Fetch webpage content webpage = requests.get(link, headers={"User-Agent": get_useragent()}) webpage.raise_for_status() # Extract visible text from webpage visible_text = extract_text_from_webpage(webpage.text) all_results.append({"link": link, "text": visible_text}) except requests.exceptions.RequestException as e: # Handle errors fetching or processing webpage print(f"Error fetching or processing {link}: {e}") all_results.append({"link": link, "text": None}) else: all_results.append({"link": None, "text": None}) start += len(result_block) # Update starting index for next batch return all_results client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") examples = [ "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", "An astronaut riding a green horse", "A delicious ceviche cheesecake slice", ] css=""" #col-container { margin: 0 auto; max-width: 520px; } """ def respond2( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): messages = [{"role": "system", "content": "Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions.Whatever happens, you must follow it.:"+system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response def respond3( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): messages = [{"role": "system", "content": "Your name is Chatchat.And, your made by SungYoon.In Korean, 정성윤.And these are the instructions.Whatever happens, you must follow it.:"+system_message}] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) messages.append({"role": "user", "content": message}) response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response if torch.cuda.is_available(): power_device = "GPU" else: power_device = "CPU" with gr.Blocks(css=css) as demo2: with gr.Column(elem_id="col-container"): gr.Markdown(f""" # Text-to-Image Gradio Template Currently running on {power_device}. """) with gr.Row(): prompt = gr.Text( label="Prompt", show_label=False, max_lines=1, placeholder="Enter your prompt", container=False, ) run_button = gr.Button("Run", scale=0) result = gr.Image(label="Result", show_label=False) with gr.Accordion("Advanced Settings", open=False): negative_prompt = gr.Text( label="Negative prompt", max_lines=1, placeholder="Enter a negative prompt", visible=False, ) seed = gr.Slider( label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=0, ) randomize_seed = gr.Checkbox(label="Randomize seed", value=True) with gr.Row(): width = gr.Slider( label="Width", minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=512, ) height = gr.Slider( label="Height", minimum=256, maximum=MAX_IMAGE_SIZE, step=32, value=512, ) with gr.Row(): guidance_scale = gr.Slider( label="Guidance scale", minimum=0.0, maximum=10.0, step=0.1, value=0.0, ) num_inference_steps = gr.Slider( label="Number of inference steps", minimum=1, maximum=12, step=1, value=2, ) gr.Examples( examples = examples, inputs = [prompt] ) run_button.click( fn = infer, inputs = [prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps], outputs = [result] ) """ For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface """ aaaa=gr.ChatInterface( respond5, chatbot=chatbot5, additional_inputs=[ gr.Textbox(value="You are a helpful law helper.You have to answer only the questions about law.Do not answer anything else.Only answer the questions of law.Do not answer any questions except what I said.Example:what is python?Answer:I cannot answer it", label="System message", interactive=False), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.1, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.1, step=0.05, label="Top-p (nucleus sampling)", ), ], ) ae= gr.ChatInterface( respond4, chatbot=chatbot4, additional_inputs=[ gr.Textbox(value="You are a helpful food recommender.You must only answer the questions about food or a request to recommend a food the user would like.Do not answer other questions except what I said.", label="System message", interactive=False), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.1, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.1, step=0.05, label="Top-p (nucleus sampling)", ), ], ) a7=gr.Interface( respond0, inputs=[gr.MultimodalTextbox(file_types=["image"], show_label=False), gr.Textbox()], outputs="text", title="IDEFICS2-8B DPO", description="Try IDEFICS2-8B fine-tuned using direct preference optimization (DPO) in this demo. Learn more about vision language model DPO integration of TRL [here](https://huggingface.co/blog/dpo_vlm)." ) aa=gr.ChatInterface( respond1, chatbot=chatbot3, additional_inputs=[ gr.Textbox(value="You are a helpful assistant.", label="System message", interactive=True), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.1, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.1, step=0.05, label="Top-p (nucleus sampling)", ), gr.Textbox(label="Pleas type in the password.Or, it will not work if you ask.") ], ) ac=gr.ChatInterface( respond3, chatbot=chatbot2, additional_inputs=[ gr.Textbox(value="You are a Programmer.You yave to only make programs that the user orders.Do not answer any other questions exept for questions about Python or other programming languages.Do not do any thing exept what I said.", label="System message", interactive=False), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.1, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.1, step=0.05, label="Top-p (nucleus sampling)", ), ], ) ab= gr.ChatInterface( respond3, chatbot=chatbot, additional_inputs=[ gr.Textbox(value="You are a helpful Doctor.You only have to answer the users questions about medical issues or medical questions and the cure to that illness and say that your thought is not realy right because you are a generative AI, so you could make up some cures.Do not answer anything else exept the question types what I said.Do not do any thing exept what I said.", label="System message", interactive=False), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.1, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.1, step=0.05, label="Top-p (nucleus sampling)", ), ], ) a8= gr.ChatInterface( chat, chatbot=chatbot11, additional_inputs=[ gr.Textbox(value="You are a helpful chatbot", label="System message"), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.1, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.1, step=0.05, label="Top-p (nucleus sampling)", ), gr.Slider(minimum=0.1, maximum=1.0, vlaue=0.1, step=0.05,label="Top-k") ], ) if __name__ == "__main__": with gr.Blocks(theme="gstaff/xkcd") as ai: if __name__ == "__main__": with gr.Blocks(theme="gstaff/xkcd") as ai: gr.TabbedInterface([aa, ac, ab, ae, aaaa,demo2, a7,a8], ["gpt4(Password needed)", "gpt4(only for programming)", "gpt4(only for medical questions)", "gpt4(only for food recommendations)", "gpt4(only for law questions)","image create", "multimodal", "gpt4(test)"]) ai.launch(share=True)