Walid-Ahmed's picture
Update app.py
2d46fda verified
import gradio as gr
import requests
import os
# Hugging Face API Token (from secrets)
API_TOKEN = os.getenv("HF_API_KEY")
if not API_TOKEN:
print("Error: API token is missing! Please add it as a secret in Hugging Face Spaces.")
# Model Endpoint
model = "mistralai/Mixtral-8x7B-Instruct-v0.1" # Use a working instruct model
api_url = f"https://api-inference.huggingface.co/models/{model}"
# Headers
headers = {"Authorization": f"Bearer {API_TOKEN}"}
# Function to generate email response
def generate_email_response(received_email, additional_context, tone="Professional and Polite"):
# Construct the prompt with additional context
prompt = f"""
The following is an email I received:
{received_email}
Additional context to consider:
{additional_context}
Please draft a response that is {tone}. Keep it concise and appropriate.
My response:
"""
# API request payload
payload = {
"inputs": prompt,
"parameters": {"max_length": 400, "temperature": 0.7}
}
# Send request to HF API
response = requests.post(api_url, headers=headers, json=payload)
# Handle response
if response.status_code == 200:
generated_text = response.json()[0]["generated_text"]
# **Trim the response** to remove the echoed prompt
if "My response:" in generated_text:
generated_text = generated_text.split("My response:")[-1].strip()
return generated_text
else:
return "Error: " + response.json().get("error", "Unknown issue occurred.")
# Example email
example_email = """Subject: Request for Collaboration on AI Research
Dear Walid,
I hope you are doing well. My team and I have been following your recent work on hybrid neural networks and FLOPs-aware optimization. We are very interested in collaborating on a research project that explores the application of your techniques in low-resource environments.
Would you be available for a meeting next week to discuss potential collaboration opportunities? Please let us know your availability.
Looking forward to your response.
Best regards,
John Smith
AI Research Lead, Tech Innovations Inc."""
# Example additional context
example_context = """I am available on Monday, Wednesday, and Friday from 2 PM to 5 PM.
I prefer virtual meetings via Zoom or Google Meet."""
# Gradio Web Interface
with gr.Blocks() as demo:
gr.Markdown("## AI-Powered Email Responder (with Context)")
gr.Markdown("Enter an email, and the model will generate a response in your selected tone. You can also add additional context, such as your availability.")
with gr.Row():
received_email = gr.Textbox(label="Received Email", lines=10)
additional_context = gr.Textbox(label="Additional Context (Availability, Preferences, etc.)", lines=5)
tone = gr.Radio(
["Professional and Polite", "Friendly and Casual", "Formal and Concise"],
label="Tone of Response",
value="Professional and Polite"
)
output_response = gr.Textbox(label="Generated Response", lines=6)
generate_button = gr.Button("Generate Response")
generate_button.click(generate_email_response, inputs=[received_email, additional_context, tone], outputs=output_response)
# Add example input as a predefined example
gr.Examples(
examples=[
[example_email, example_context, "Professional and Polite"]
],
inputs=[received_email, additional_context, tone],
)
# Launch the Gradio app
demo.launch()