Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from huggingface_hub import InferenceClient | |
| from sentence_transformers import SentenceTransformer | |
| import torch | |
| import numpy as np | |
| import random | |
| import requests | |
| #LLM we are using | |
| client = InferenceClient("Qwen/Qwen2.5-72B-Instruct") | |
| #adding text file | |
| with open("be_a_better_you.txt", "r", encoding="utf-8") as file1, open("journal_prompts.txt", "r", encoding="utf-8") as file2: | |
| wellness_text = file1.read() + "\n" + file2.read() | |
| #cleaning up the text | |
| cleaned_text = wellness_text.strip() | |
| chunks = cleaned_text.split("\n") | |
| cleaned_chunks = [] | |
| #putting text in chunks | |
| for chunk in chunks: | |
| stripped_chunk = chunk.strip() | |
| if stripped_chunk: | |
| cleaned_chunks.append(stripped_chunk) | |
| #import model for embeddings | |
| model = SentenceTransformer('all-MiniLM-L6-v2') | |
| chunk_embeddings = model.encode(cleaned_chunks, convert_to_tensor=True) | |
| def get_top_chunks(query): | |
| # creating a function taking query as my parameter | |
| query_embedding = model.encode(query, convert_to_tensor=True) | |
| # encode query to vector embedding for comparison | |
| query_embedding_normalized = query_embedding / query_embedding.norm() | |
| # normalize query to 1: allows for comparison of meaning | |
| chunk_embeddings_normalized = chunk_embeddings / chunk_embeddings.norm(dim=1, keepdim=True) | |
| # normalizing chunks for comparison of meaning | |
| similarities = torch.matmul(chunk_embeddings_normalized, query_embedding_normalized) | |
| # using matmul (matrix multiplication) method to compare query to chunks | |
| top_indices = torch.topk(similarities, k=3).indices | |
| # get the indices of the chunks thart are most similar to my query | |
| top_chunks = [] | |
| for i in top_indices: | |
| chunk = cleaned_chunks[i] | |
| # for each index number in top_indices, get back the text | |
| top_chunks.append(chunk) | |
| return top_chunks | |
| def get_nutrition_info(food_query): | |
| url = "https://trackapi.nutritionix.com/v2/natural/nutrients" | |
| headers = { | |
| } | |
| def respond(message, history): | |
| messages = [{"role": "system", "content": "You are a big sister chatbot named, Nessie. You help people feel better in a simple manner."}] | |
| # change the personality | |
| context = get_top_chunks(message) | |
| if history: | |
| messages.extend(history) | |
| messages.append({"role": "user", "content": message}) | |
| user_context = f"{message}\nInformation: {context}" | |
| messages.append({"role": "user", "content": user_context}) | |
| response = "" | |
| for messages in client.chat_completion( | |
| messages, | |
| max_tokens = 200, | |
| stream = True, | |
| ): | |
| token = messages.choices[0].delta.content | |
| response+= token | |
| yield response | |
| custom_pink = gr.themes.Color( | |
| c50="#fff0f5", # very light pink | |
| c100="#ffe4e1", | |
| c200="#ffccd5", | |
| c300="#fbb6ce", | |
| c400="#f687b3", | |
| c500="#ed64a6", # main pink | |
| c600="#d53f8c", | |
| c700="#b83280", | |
| c800="#97266d", | |
| c900="#702459", | |
| c950="#521b41" # darkest shade | |
| ) | |
| theme = gr.themes.Soft( | |
| primary_hue=custom_pink, | |
| secondary_hue="zinc", | |
| neutral_hue="pink", | |
| ) | |
| with gr.Blocks(theme=theme) as demo: | |
| chatbot = gr.ChatInterface( | |
| fn=respond, | |
| type='messages', | |
| title="Hi! I'm Nessie, your personal wellness assistant. What can I assist you with today?", | |
| examples=[ | |
| "Can you help me with my dietary goals? I want to track my calories, macros, and get advice based on myself.", | |
| "Can you help me reach my fitness goals? I would like guidance and recommendations on workouts based on my goals.", | |
| "Can you give me some journal prompts? I want to start journaling to help myself reflect on my goals and have some daily affirmations. " | |
| ] | |
| ) | |
| #chatbot = gr.ChatInterface(respond, type = 'messages', title= "Hi! I'm Nessie, your personal wellness assistant. What can I assist you with today?",examples=["Can I help you with your dietary goals? I can help you track your calories, macros, and give advice based on personal goals, height, and weight.","Can I help you with your physical health and help you reach your fitness goals? I can give guidance and recommendations for specific workouts based on personal goals.","If you are struggling, I am here. You are so beautiful and so loved! I'm here for whatever you need. "]) | |
| demo.launch(debug=True) |