ThinkTank-AI / app.py
Anupam251272's picture
Create app.py
826ff58 verified
# First cell: Install required dependencies
#!pip install transformers accelerate gradio --quiet
# Second cell: Import required libraries and check GPU
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
import gradio as gr
# Check for GPU availability
if torch.cuda.is_available():
device = torch.device("cuda")
print("Using GPU:", torch.cuda.get_device_name(0))
print("Memory Available:", torch.cuda.get_device_properties(0).total_memory / 1e9, "GB")
else:
device = torch.device("cpu")
print("Using CPU")
# Third cell: Load model and tokenizer
def initialize_model():
model_name = "microsoft/Phi-3.5-mini-instruct"
print(f"Loading {model_name}...")
# Load with lower precision for GPU efficiency
if device.type == "cuda":
tokenizer = AutoTokenizer.from_pretrained(
model_name,
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
else:
tokenizer = AutoTokenizer.from_pretrained(
model_name,
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True
).to(device)
return model, tokenizer
try:
model, tokenizer = initialize_model()
# Create pipeline
problem_solver_pipeline = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device=0 if device.type == "cuda" else -1,
max_length=500
)
print("Model loaded successfully!")
except Exception as e:
print(f"Error loading model: {str(e)}")
raise
# Fourth cell: Define analysis function with improved prompting for Phi-3.5
def analyze_idea(idea, max_length=500, temperature=0.7):
"""
Analyze an input idea using the Phi-3.5 model.
"""
if not idea.strip():
return "Please enter an idea to analyze."
prompt = f"""Instruction: Analyze the following business idea and provide a structured analysis identifying core problems and their solutions.
Input idea: "{idea}"
Please structure your response in the following format:
1. List the main problems that could arise
2. Provide specific solutions for each problem
3. Give a brief summary of the overall analysis
Response:"""
try:
# Generate response with error handling
response = problem_solver_pipeline(
prompt,
max_length=max_length,
temperature=temperature,
num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id,
do_sample=True,
top_p=0.9
)
output = response[0]["generated_text"]
# Format the final output
formatted_output = f"""#### Input Idea:
"{idea}"
#### Analysis:
{output.replace(prompt, '')}""" # Remove the prompt from the output
return formatted_output
except Exception as e:
return f"An error occurred: {str(e)}"
# Fifth cell: Create and launch Gradio interface
def create_gradio_interface():
interface = gr.Interface(
fn=analyze_idea,
inputs=[
gr.Textbox(
lines=5,
placeholder="Enter your business idea here. For example: 'A mobile app that connects local food trucks with nearby customers in real-time.'",
label="Your Business Idea"
),
gr.Slider(
minimum=100,
maximum=1000,
value=500,
step=50,
label="Response Length"
),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.7,
step=0.1,
label="Creativity (Temperature)"
)
],
outputs=gr.Textbox(
label="Analysis Results",
lines=12
),
title="Business Idea Analyzer powered by Phi-3.5",
description="Enter your business idea, and this AI-powered tool will analyze potential problems, suggest solutions, and provide a summary.",
examples=[
["An AI-powered platform for personalized workout recommendations based on real-time fitness tracking data.", 500, 0.7],
["A subscription service for sustainable, package-free household products with local delivery.", 500, 0.7],
["A marketplace connecting local artists with businesses looking for unique office artwork.", 500, 0.7]
]
)
return interface
# Launch the interface
interface = create_gradio_interface()
interface.launch(share=True, debug=True)