CosmickVisions's picture
Create backend/app.py
9bd2734 verified
Raw
History Blame Contribute Delete
2.44 kB
from flask import Flask, request, jsonify
import mlflow
import pandas as pd
from pycaret.classification import *
from pycaret.regression import *
from pycaret.clustering import *
import json
import os
import groq
app = Flask(__name__)
# Initialize GROQ client
groq_client = groq.Client(api_key=os.getenv("GROQ_API_KEY"))
# MLflow Configuration
mlflow.set_tracking_uri("http://127.0.0.1:5000")
mlflow.set_experiment("Neural-Vision Enhanced")
@app.route('/analyze', methods=['POST'])
def analyze():
try:
data = request.json
prompt = data.get('prompt')
context = json.loads(data.get('context'))
metrics = data.get('metrics', {})
# Create GROQ prompt with context
system_prompt = f"""
You are a data science assistant analyzing model metrics and data.
Context: {json.dumps(context, indent=2)}
Metrics: {json.dumps(metrics, indent=2)}
"""
# Get GROQ response
response = groq_client.chat.completions.create(
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt}
],
model="mixtral-8x7b-32768",
temperature=0.7,
max_tokens=1024
)
return jsonify({
"analysis": response.choices[0].message.content
})
except Exception as e:
return jsonify({"error": str(e)}), 500
@app.route('/train', methods=['POST'])
def train_model():
try:
data = request.json
df = pd.DataFrame(data['data'])
problem_type = data['problem_type']
target = data.get('target')
if problem_type == "Classification":
setup(df, target=target, session_id=42)
elif problem_type == "Regression":
setup(df, target=target, session_id=42)
else:
setup(df, session_id=42)
best_model = compare_models()
metrics = pull().to_dict()
# Log to MLflow
with mlflow.start_run():
mlflow.log_metrics(metrics)
mlflow.sklearn.log_model(best_model, "model")
return jsonify({
"model": str(best_model),
"metrics": metrics
})
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5001)