Spaces:
Sleeping
Sleeping
# app.py | |
import gradio as gr | |
import openai | |
import os | |
# Ensure you have set your OpenAI API key as an environment variable | |
# Example: export OPENAI_API_KEY='your-api-key-here' | |
openai.api_key = os.getenv("API_KEY") | |
openai.api_base = "https://openai.vocareum.com/v1" | |
def generate_investment_recommendation(age, income, investment_amount, risk_tolerance, investment_horizon, financial_goals): | |
""" | |
Generates personalized investment recommendations based on user inputs. | |
Args: | |
age (int): User's age. | |
income (float): Annual income in USD. | |
investment_amount (float): Amount to invest in USD. | |
risk_tolerance (str): User's risk tolerance ('Low', 'Medium', 'High'). | |
investment_horizon (str): Investment horizon ('Short-term', 'Mid-term', 'Long-term'). | |
financial_goals (str): User's financial goals (e.g., 'Retirement', 'Education'). | |
Returns: | |
str: AI-generated investment recommendations. | |
""" | |
try: | |
# Construct the prompt for the AI model | |
prompt = f""" | |
I am {age} years old with an annual income of ${income}. I want to invest ${investment_amount}. | |
My risk tolerance is {risk_tolerance}, and my investment horizon is {investment_horizon}. | |
My primary financial goals are: {financial_goals}. | |
Based on this information, please provide a personalized investment recommendation, including: | |
1. Portfolio Allocation (percentage in stocks, bonds, ETFs, etc.) | |
2. Suggested Investment Vehicles | |
3. Risk Management Strategies | |
4. Expected Returns | |
5. Diversification Tips | |
""" | |
# Call OpenAI's GPT model to generate the recommendation | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo", | |
messages=[ | |
{"role": "system", "content": "You are a financial advisor."}, | |
{"role": "user", "content": prompt} | |
], | |
max_tokens=500, | |
temperature=0.7, | |
n=1, | |
stop=None | |
) | |
recommendation = response.choices[0].message['content'].strip() | |
return recommendation | |
except Exception as e: | |
return f"An error occurred while generating the recommendation: {str(e)}" | |
# Define Gradio interface | |
def app_interface(): | |
with gr.Blocks() as demo: | |
gr.Markdown("# Personalized Investment Recommendation Engine") | |
gr.Markdown( | |
""" | |
**Enter your financial details below to receive personalized investment recommendations.** | |
""" | |
) | |
with gr.Row(): | |
with gr.Column(): | |
age = gr.Number(label="Age", value=30, precision=0) | |
income = gr.Number(label="Annual Income (USD)", value=60000) | |
investment_amount = gr.Number(label="Investment Amount (USD)", value=10000) | |
risk_tolerance = gr.Radio( | |
label="Risk Tolerance", | |
choices=["Low", "Medium", "High"], | |
value="Medium" | |
) | |
investment_horizon = gr.Radio( | |
label="Investment Horizon", | |
choices=["Short-term (1-3 years)", "Mid-term (3-7 years)", "Long-term (7+ years)"], | |
value="Long-term (7+ years)" | |
) | |
financial_goals = gr.Textbox( | |
label="Financial Goals", | |
placeholder="e.g., Retirement, Education, Wealth Accumulation", | |
lines=2 | |
) | |
submit = gr.Button("Get Recommendation") | |
with gr.Column(): | |
output = gr.Textbox(label="Investment Recommendation", lines=20) | |
submit.click( | |
fn=generate_investment_recommendation, | |
inputs=[age, income, investment_amount, risk_tolerance, investment_horizon, financial_goals], | |
outputs=output | |
) | |
gr.Markdown( | |
""" | |
**Instructions:** | |
1. **Age:** Enter your current age. | |
2. **Annual Income:** Enter your total annual income in USD. | |
3. **Investment Amount:** Specify the amount you wish to invest. | |
4. **Risk Tolerance:** Select your comfort level with investment risks. | |
5. **Investment Horizon:** Choose the timeframe for your investments. | |
6. **Financial Goals:** Describe your primary financial objectives. | |
Click on the "Get Recommendation" button to receive tailored investment strategies. | |
""" | |
) | |
demo.launch() | |
if __name__ == "__main__": | |
app_interface() |