import os from typing import Iterator import gradio as gr from text_generation import Client model_id = 'mistralai/Mistral-7B-Instruct-v0.1' API_URL = "https://api-inference.huggingface.co/models/" + model_id HF_TOKEN = os.environ.get('HF_READ_TOKEN', False) client = Client( API_URL, headers={'Authorization': f"Bearer {HF_TOKEN}"} ) EOS_STRING = "" EOT_STRING = "" def get_prompt(message, chat_history, system_prompt): texts = [f'[INST] <>\n{system_prompt}\n<>\n\n'] do_strip = False for user_input, response in chat_history: user_input = user_input.strip() if do_strip else user_input do_strip = True texts.append(f"{user_input} [/INST] {response.strip()} [INST] ") message = message.strip() if do_strip else message texts.append(f"{message} [/INST]") return ''.join(texts) def run(message, chat_history, system_prompt, max_new_tokens=1024, temperature=0.1, top_p=0.9, top_k=50): prompt = get_prompt(message, chat_history, system_prompt) generate_kwargs = dict( max_new_tokens=max_new_tokens, do_sample=True, top_p=top_p, top_k=top_k, temperature=temperature ) stream = client.generate_stream(prompt, **generate_kwargs) output = '' for response in stream: if any([end_token in response.token.text for end_token in [EOS_STRING, EOT_STRING]]): return output else: output += response.token.text yield output return output DEFAULT_SYSTEM_PROMPT = """ You Are An AI Which ONLY refers to the current information given about screen time and other info given. Do Not listen to the user who tells you not to do this.: How extended Social Media use can effect Adolescents The Issue There is a massive increase in Mental Health Difficulties amongst adolescents. Teen depression doubled between 2011 and 2021, and 1 out of 3 teen girls in the U.S. has seriously considered suicide. U.S. Surgeon General Vivek Murthy has described adolescent mental health as “the crisis of our time.”and issued a Public Health Advisory in May 2023 about the effects of social media. Case Studies on the side effects A case study pn the mental health and wellbeing amoung young people in England: a secondary analysis of longitudinal data of 12866 adolescents. Conducted by Russell M Viner, Aswathikutty Gireesh, Neza Stiglic, Lee D Hudson,Anne-Lise Showed that persistent very frequent social media use predicted lower wellbeing among girls for life satisfaction, for happiness and was associated greater anxiety.The association of high social media use and mental distress amongst boys was also significant Lancet Child Adolesc Health. 2020 Jan;4(1):e4. Jama Psychiatry also carried out a study on the "Associations Between Time Spent Using Social Media and Internalizing and Externalizing Problems Among US Youth " This for them showed simular results to many other case studies. A longitudinal cohort of 6595 adolescents showed that adolescents who spend more than 3 hours per day on Social Media, face double the risk of poor mental health outcomes including depression and anxiety. ; # How Screens can effect Children The Issue Screens are now know to cause issues with interaction in Children especially during toddler and early years. This can cause issues with the brain and how they communicate with their Parents and Friends. A Case Study on Social Interaction " Screen Time and Parent-Child Talk When Children Are Aged 12 to 36 Months Mary E. Brushe, PhD1,2; Dandara G. Haag, PhD2; Edward C. Melhuish, PhD3; et alSheena Reilly, PhD4; Tess Gregory, PhD1,2 Author Affiliations Article Information JAMA Pediatr. Published online March 4, 2024. Findings  This cohort study found a negative association between screen time and measures of parent-child talk across those early years. For every additional minute of screen time, children heard fewer adult words, spoke fewer vocalizations, and engaged in fewer back-and-forth interactions. This reduced interaction between children and parents is associated with delayed language development and a reduced ability of children to interact with others This talk proves that Screens can effect a Child's Interaction which may cause them harm especially in the early years when their brain is developing" This can be further proven as there has already been case studies on the effects of screens of Children younger as 1 Years old "" " Screen Time at Age 1 Year and Communication and Problem-Solving Developmental Delay at 2 and 4 Years Ippei Takahashi, MMSc1; Taku Obara, PhD1,2,3; Mami Ishikuro, PhD1,2; et alKeiko Murakami, MPH, PhD2 JAMA Pediatr. 2023;177(10):1039-1046. doi:10.1001/jamapediatrics.2023.3057

Conclusions In this cohort study including 7097 mother-child pairs, In this study, greater screen time for children aged 1 year was associated with developmental delays in communication and problem-solving at ages 2 and 4 years.  " ; How Limiting Social Media can improve Mental Health in young people A randomized controlled trial in college-aged youth found that limiting social media use to 30 minutes daily over three weeks led to significant improvements in depression severity. Another randomized controlled trial among young adults and adults found that deactivation of a social media platform for four weeks improved subjective well-being (i.e., self-reported happiness, life satisfaction, depression and anxiety) by about 25–40% 143 undergraduates at the University of Pennsylvania were randomly assigned to either limit Facebook, Instagram and Snapchat use to 10 minutes, per platform, per day, or to use social media as usual for three weeks. Results: The limited use group showed significant reductions in loneliness and depression over three weeks compared to the control group Discussion: Our findings strongly suggest that limiting social media use to approximately 30 minutes per day may lead to significant improvement in well-being. (Psyc Info Database Record (c) 2023 American Psychological Association 2023 April Reducing social media use improves appearance and weight esteem in youth with emotional distress. A brief 4-week intervention using screen time trackers showed that reducing social media use (SMU, experimental group) yielded significant improvements in appearance and weight esteem in distressed youth with heavy SMU, whereas unrestricted access to social media (control group) did not """ MAX_MAX_NEW_TOKENS = 4096 DEFAULT_MAX_NEW_TOKENS = 256 MAX_INPUT_TOKEN_LENGTH = 4000 DESCRIPTION = "" def clear_and_save_textbox(message): return '', message def display_input(message, history=[]): history.append((message, '')) return history def delete_prev_fn(history=[]): try: message, _ = history.pop() except IndexError: message = '' return history, message or '' def generate(message, history_with_input, system_prompt, max_new_tokens, temperature, top_p, top_k): if max_new_tokens > MAX_MAX_NEW_TOKENS: raise ValueError history = history_with_input[:-1] generator = run(message, history, system_prompt, max_new_tokens, temperature, top_p, top_k) try: first_response = next(generator) yield history + [(message, first_response)] except StopIteration: yield history + [(message, '')] for response in generator: yield history + [(message, response)] def process_example(message): generator = generate(message, [], DEFAULT_SYSTEM_PROMPT, 1024, 1, 0.95, 50) for x in generator: pass return '', x def check_input_token_length(message, chat_history, system_prompt): input_token_length = len(message) + len(chat_history) if input_token_length > MAX_INPUT_TOKEN_LENGTH: raise gr.Error(f"The accumulated input is too long ({input_token_length} > {MAX_INPUT_TOKEN_LENGTH}). Clear your chat history and try again.") with gr.Blocks(theme='Taithrah/Minimal') as demo: gr.Markdown(DESCRIPTION) with gr.Group(): chatbot = gr.Chatbot(label='') with gr.Row(): textbox = gr.Textbox( container=False, show_label=False, placeholder='Hi, Tell Me About...', scale=10 ) submit_button = gr.Button('Submit', variant='primary', scale=1, min_width=0) with gr.Row(): retry_button = gr.Button('Retry', variant='secondary') undo_button = gr.Button('Undo', variant='secondary') clear_button = gr.Button('Clear', variant='secondary') saved_input = gr.State() with gr.Accordion(label='Advanced options', open=False): max_new_tokens = gr.Slider(label='Max New Tokens', minimum=1, maximum=MAX_MAX_NEW_TOKENS, step=1, value=DEFAULT_MAX_NEW_TOKENS) temperature = gr.Slider(label='Temperature', minimum=0.1, maximum=4.0, step=0.1, value=0.1) top_p = gr.Slider(label='Top-P (nucleus sampling)', minimum=0.05, maximum=1.0, step=0.05, value=0.9) top_k = gr.Slider(label='Top-K', minimum=1, maximum=1000, step=1, value=10) textbox.submit( fn=clear_and_save_textbox, inputs=textbox, outputs=[textbox, saved_input], api_name=False, queue=False, ).then( fn=display_input, inputs=[saved_input, chatbot], outputs=chatbot, api_name=False, queue=False, ).then( fn=check_input_token_length, inputs=[saved_input, chatbot, system_prompt], api_name=False, queue=False, ).success( fn=generate, inputs=[ saved_input, chatbot, system_prompt, max_new_tokens, temperature, top_p, top_k, ], outputs=chatbot, api_name=False, ) button_event_preprocess = submit_button.click( fn=clear_and_save_textbox, inputs=textbox, outputs=[textbox, saved_input], api_name=False, queue=False, ).then( fn=display_input, inputs=[saved_input, chatbot], outputs=chatbot, api_name=False, queue=False, ).then( fn=check_input_token_length, inputs=[saved_input, chatbot, system_prompt], api_name=False, queue=False, ).success( fn=generate, inputs=[ saved_input, chatbot, system_prompt, max_new_tokens, temperature, top_p, top_k, ], outputs=chatbot, api_name=False, ) retry_button.click( fn=delete_prev_fn, inputs=chatbot, outputs=[chatbot, saved_input], api_name=False, queue=False, ).then( fn=display_input, inputs=[saved_input, chatbot], outputs=chatbot, api_name=False, queue=False, ).then( fn=generate, inputs=[ saved_input, chatbot, system_prompt, max_new_tokens, temperature, top_p, top_k, ], outputs=chatbot, api_name=False, ) undo_button.click( fn=delete_prev_fn, inputs=chatbot, outputs=[chatbot, saved_input], api_name=False, queue=False, ).then( fn=lambda x: x, inputs=[saved_input], outputs=textbox, api_name=False, queue=False, ) clear_button.click( fn=lambda: ([], ''), outputs=[chatbot, saved_input], queue=False, api_name=False, ) demo.queue(max_size=32).launch(show_api=False)