from http.server import HTTPServer, SimpleHTTPRequestHandler
# from pyngrok import ngrok
import os
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
import json
# Mistral AI setup
api_key = os.getenv("MISTRAL_API_KEY")
if not api_key:
raise ValueError("MISTRAL_API_KEY environment variable not set")
model = "mistral-tiny"
client = MistralClient(api_key=api_key)
def generate_goals(input_var):
messages = [
ChatMessage(role="user", content=f"Generate 5 specific, industry relevant goals for {input_var} using Python and Pandas in exam data analysis. Each goal should include a brief name and a one-sentence description of the task or skill.")
]
try:
response = client.chat(model=model, messages=messages)
return response.choices[0].message.content
except Exception as e:
return f"An error occurred: {str(e)}"
html_content = """
Exam Data Analysis Goals Generator
Exam Data Analysis Goals Generator
"""
class MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(html_content.encode())
def do_POST(self):
if self.path == '/generate_goals':
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
data = json.loads(post_data.decode('utf-8'))
input_var = data['input_var']
goals = generate_goals(input_var)
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps({'goals': goals}).encode())
else:
self.send_error(404)
if __name__ == '__main__':
port = 7860
server = HTTPServer(('', port), MyHandler)
# public_url = ngrok.connect(port).public_url
# print(f" * ngrok tunnel \"{public_url}\" -> \"http://127.0.0.1:{port}\"")
server.serve_forever()