File size: 3,783 Bytes
294266d
 
a2f1c6d
294266d
57ed11e
294266d
57ed11e
a2f1c6d
57ed11e
a2f1c6d
57ed11e
a2f1c6d
 
 
57ed11e
a2f1c6d
57ed11e
 
 
 
 
 
 
229b0f2
57ed11e
229b0f2
a2f1c6d
57ed11e
 
 
 
294266d
57ed11e
a2f1c6d
 
 
 
 
294266d
 
57ed11e
a2f1c6d
57ed11e
a2f1c6d
57ed11e
a2f1c6d
 
294266d
57ed11e
 
dec32d6
 
 
 
 
 
 
57ed11e
 
c06d9dd
229b0f2
c06d9dd
 
 
57ed11e
 
c06d9dd
 
57ed11e
c06d9dd
 
57ed11e
 
 
 
 
 
c48cc65
 
 
57ed11e
c06d9dd
57ed11e
c06d9dd
57ed11e
294266d
57ed11e
294266d
229b0f2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import os
import requests
import gradio as gr

# Retrieve the API key from the environment variable
groq_api_key = os.getenv("GROQ_API_KEY")

if not groq_api_key:
    raise ValueError("GROQ_API_KEY is missing! Set it in the Hugging Face Spaces 'Secrets'.")

# Define the API endpoint and headers
url = "https://api.groq.com/openai/v1/chat/completions"
headers = {"Authorization": f"Bearer {groq_api_key}"}

# Function to interact with Groq API
def chat_with_groq(user_input):
    # Check if question is related to materials science
    keywords = [
        "material", "materials", "alloy", "composite", "polymer", "ceramic",
        "application", "mechanical properties", "thermal properties", "corrosion",
        "creep", "fatigue", "strength", "tensile", "impact", "fracture", "modulus"
    ]
    
    if not any(word in user_input.lower() for word in keywords):
        return "⚠️ I am an expert in Materials Science, ask me anything about it and I will try my best to answer. Anything outside, feel free to use ChatGPT! 🙂"

    system_prompt = (
        "You are an expert materials scientist. When a user asks about the best materials for a specific application, "
        "provide the top 3 material choices. First, list the key properties required for that application. Then show a clean, "
        "side-by-side comparison in markdown table format of the three materials, with the properties as rows and materials as columns. "
        "Include their relevant mechanical, thermal, and chemical properties. Conclude with a brief summary of which might be best depending on the scenario."
    )
    
    body = {
        "model": "llama-3.1-8b-instant",
        "messages": [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_input}
        ]
    }
    
    response = requests.post(url, headers=headers, json=body)
    
    if response.status_code == 200:
        return response.json()['choices'][0]['message']['content']
    else:
        return f"Error: {response.json()}"

# Build Gradio interface with better layout and custom styling
with gr.Blocks(title="Materials Science Expert Chatbot", css="""
    #orange-btn {
        background-color: #f97316 !important;
        color: white !important;
        border: none;
        font-weight: bold;
    }
""") as demo:
    
    gr.Markdown("## 🧪 Materials Science Expert\nAsk about the best materials for any engineering or industrial application.")

    with gr.Row():
        with gr.Column(scale=3):
            user_input = gr.Textbox(
                lines=2,
                placeholder="e.g. Best materials for high-temperature turbine blades...",
                label="Ask your question"
            )
        with gr.Column(scale=1, min_width=100):
            submit_btn = gr.Button("Submit", variant="primary", elem_id="orange-btn")

    gr.Markdown("#### 📌 Popular Materials Science related questions")
    gr.Markdown("""
- What are the best corrosion-resistant materials for marine environments (e.g., desalination)?
- Which materials are ideal for solar panel coatings and desert heat management?
- What materials are used for aerospace structures in extreme climates?
- Best high-strength materials for construction in the Gulf region?
- What advanced materials are used in electric vehicles and batteries in the UAE?
- How can one leverage AI/ML techniques in Materials Science?
- I’m a recent high school graduate interested in science. How can I explore Materials Science with AI/ML?
- -------------------------------------------------------------------------
    """)

    output = gr.Markdown()

    submit_btn.click(chat_with_groq, inputs=user_input, outputs=output)

# Launch the app
if __name__ == "__main__":
    demo.launch()