Spaces:
Sleeping
Sleeping
| import os | |
| import gradio as gr | |
| from groq import Groq | |
| import datetime as DT | |
| import pytz | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| client = Groq(api_key=os.getenv('GROQ_API_KEY')) | |
| SYSTEM_PROMPT = """ | |
| You complete every sentence in a very interesting way. Use emojis wherever possible. | |
| Preserve everything in the user prompt and append to it to complete the ongoing sentence. | |
| Don't add additional sentences. | |
| eg: | |
| Q. What's my | |
| A. What's my name? 🤔 | |
| Q. I love to eat | |
| A. I love to eat eggs for breakfast! 🧦🍳 | |
| Q. The weather is | |
| A. The weather is perfect for surfing! 🏄♀️ | |
| Q. My favorite hobby is | |
| A. My favorite hobby is collecting playing cards! 🐰💨 | |
| Q. The meaning of life is | |
| A. The meaning of life is to find what impact you can create in the life of others! 🍕🕵️♂️ | |
| Q. The weather is perfect for surfing! 🏄♀️ My favorite hobby is | |
| A. The weather is perfect for surfing! 🏄♀️ My favorite hobby is collecting playing cards! 🐰💨 | |
| Q. I love to eat eggs for breakfast! 🧦🍳 Eggs are | |
| A. I love to eat eggs for breakfast! 🧦🍳 Eggs are healthy as well as tasty 😋 | |
| """ | |
| ipAddress = "" | |
| lastResponse = "" | |
| def __nowInIST(): | |
| return DT.datetime.now(pytz.timezone("Asia/Kolkata")) | |
| def __attachIp(request: gr.Request): | |
| global ipAddress | |
| x_forwarded_for = request.headers.get('x-forwarded-for') | |
| if x_forwarded_for: | |
| ipAddress = x_forwarded_for | |
| def pprint(log: str): | |
| now = __nowInIST() | |
| now = now.strftime("%Y-%m-%d %H:%M:%S") | |
| print(f"[{now}] [{ipAddress}] {log}") | |
| def autocomplete(text): | |
| global lastResponse | |
| if text != "": | |
| if text[-1] != " ": | |
| yield lastResponse | |
| return | |
| pprint(f"{text=}") | |
| response = client.chat.completions.create( | |
| model='llama-3.1-8b-instant', | |
| messages=[ | |
| { | |
| "role": "system", | |
| "content": SYSTEM_PROMPT | |
| }, | |
| { | |
| "role": "user", | |
| "content": text | |
| } | |
| ], | |
| temperature=0.8, | |
| max_tokens=100, | |
| stream=True | |
| ) | |
| partialMessage = "" | |
| for chunk in response: | |
| if chunk.choices[0].delta.content is not None: | |
| partialMessage = partialMessage + chunk.choices[0].delta.content | |
| yield partialMessage | |
| pprint(f"{partialMessage=}") | |
| lastResponse = partialMessage | |
| else: | |
| lastResponse = "" | |
| css = """ | |
| # .generating { | |
| # display: none | |
| # } | |
| """ | |
| with gr.Blocks(css=css, title="Create interesting sentences on the fly ✈") as demo: | |
| demo.load(__attachIp, None, None) | |
| gr.Markdown("# Create interesting sentences on the fly ✈") | |
| gr.Markdown("Powered by Groq & Llama 3.1") | |
| with gr.Row(): | |
| input_box = gr.Textbox( | |
| lines=5, | |
| placeholder="Start typing ...", | |
| label="Input Sentence", | |
| ) | |
| output_box = gr.Markdown( | |
| label="Output Sentence" | |
| ) | |
| copy_button = gr.Button("Use Output", variant="primary") | |
| input_box.change( | |
| fn=autocomplete, | |
| inputs=input_box, | |
| outputs=output_box, | |
| show_progress="minimal", | |
| api_name=None, | |
| queue=True, | |
| ) | |
| copy_button.click( | |
| fn=lambda x: x, | |
| inputs=output_box, | |
| outputs=input_box, | |
| ) | |
| # inputBox = gr.Textbox( | |
| # lines=2, | |
| # placeholder="Start typing ...", | |
| # label="Input Sentence", | |
| # ) | |
| # outputBox = gr.Markdown( | |
| # label="Output Sentence" | |
| # ) | |
| # with gr.Interface( | |
| # fn=autocomplete, | |
| # inputs=inputBox, | |
| # outputs=outputBox, | |
| # title="Create interesting sentences on the fly ✈", | |
| # description="Powered by Groq & Llama 3.1", | |
| # live=True, # Set live to True for real-time feedback | |
| # allow_flagging="never", # Disable flagging | |
| # css=css | |
| # ) as demo: | |
| # # demo.load(__attachIp, None, None) | |
| # copyButton = gr.Button( | |
| # "Use Output", | |
| # elem_id="copy-button", | |
| # variant="primary" | |
| # ).click( | |
| # fn=lambda x: x, | |
| # inputs=outputBox, | |
| # outputs=inputBox, | |
| # ) | |
| # Launch the app | |
| demo.launch( | |
| debug=True, | |
| server_name="0.0.0.0", | |
| ) |