SchoolWiz / app.py
Johnniewhite's picture
Update app.py
9b2bf6d verified
import os
import gradio as gr
import anthropic
from dotenv import load_dotenv
load_dotenv()
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
# Initialize the Anthropic language model
client = anthropic.Anthropic()
# Define the chatbot's initial prompt
initial_prompt = "Hello! I'm an AI chatbot that can help you find the best school for your child"
async def chatbot(child_age, child_grade, child_gender, child_ethnicity, child_talents, desired_location, school_size, school_types, more_options):
"""
Chatbot function that generates school recommendations directly.
"""
# Create a prompt with user information
user_info = {
"child_age": child_age,
"child_grade": child_grade,
"child_gender": child_gender,
"child_ethnicity": child_ethnicity,
"child_talents": child_talents,
"desired_location": desired_location,
"school_size": school_size,
"school_types": ", ".join(school_types),
"more_options": ", ".join(more_options),
}
user_info_str = "\n".join([f"{k}: {v}" for k, v in user_info.items()])
prompt = f"""
You are a helpful and knowledgeable AI assistant that specializes in providing school recommendations for children. Based on the following user information, provide at least 8 tailored school recommendations:
{user_info_str}
Follow these guidelines:
1. Provide at least 8 school recommendations that best match the user's criteria. Include relevant details such as school name, location, type, and size.
2. Along with the recommendations, provide additional information about each school, including school rating, parent testimonials, and pastoral care.
3. Always suggest at the bottom of the recommendations that you give, a one-to-one approach or personalized guidance, suggest that they send an email to hello@kiroti-konsult.com.
4. Always maintain a friendly, respectful, and professional tone when interacting with users.
Remember to focus on providing accurate, relevant, and up-to-date school recommendations that cater to the unique needs and preferences of each user.
"""
# Use the Anthropic API to generate school recommendations
response = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=2000,
temperature=0.0,
messages=[{"role": "user", "content": prompt}]
)
print("Response object:", response)
print("Type of response object:", type(response))
# Extract recommendations from the response
recommendations = response.content[0].text
return recommendations
# Create the Gradio interface
chatbot_interface = gr.Interface(
fn=chatbot,
inputs=[
gr.Textbox(lines=1, label="Child's Age"),
gr.Textbox(lines=1, label="Child's Grade/Year Group"),
gr.Textbox(lines=1, label="Child's Gender"),
gr.Textbox(lines=1, label="Child's Nationality"),
gr.Textbox(lines=5, label="Child's Talents/Interests"),
gr.Textbox(lines=1, label="Desired Location"),
gr.Dropdown(["50 - 200", "201 - 400", "400+"], label="School Size"),
gr.CheckboxGroup(
["Independent/Private", "Faith Schools", "Academies", "Grammar", "Comprehensive", "Free Schools", "State Schools", "Special Needs Schools",
"High School", "Elementary School", "Colleges", "6th Form", "Middle School", "Immersion School", "Government Schools"],
label="School Types"
),
gr.CheckboxGroup(
["Single Sex Schools", "Co-Educational Schools", "Day Schools",
"Boarding Schools", "City Schools", "Countryside Schools"],
label="More Options"
)
],
outputs=gr.Textbox(label="Recommendations"),
title="School Recommendation Chatbot",
description="I'll ask you some questions about your child, and then I'll provide school recommendations."
)
# Launch the Gradio app
chatbot_interface.launch(share=True)