Spaces:
Running
Running
import gradio as gr | |
import openai | |
import os | |
# Configure OpenAI API for Groq | |
openai.api_key = os.getenv("API_KEY") # Ensure the GROQ_API_KEY is set in the environment variables | |
openai.api_base = "https://api.groq.com/openai/v1" | |
# Function to fetch the AI's astrology response | |
def get_groq_response(name, dob, time_of_birth, place_of_birth, zodiac_sign, query): | |
try: | |
system_prompt = f"""You are Master Celestia, an AI astrologer. Analyze this birth chart: | |
Name: {name} | |
DOB: {dob} | |
Time: {time_of_birth} | |
Place: {place_of_birth} | |
Zodiac: {zodiac_sign} | |
Provide insights about: | |
1. Current planetary transits | |
2. Career and relationships | |
3. Personalized recommendations | |
""" | |
messages = [ | |
{"role": "system", "content": system_prompt}, | |
{"role": "user", "content": query} | |
] | |
response = openai.ChatCompletion.create( | |
model="llama3-70b-8192", | |
messages=messages, | |
temperature=0.7, | |
max_tokens=500 | |
) | |
return response.choices[0].message["content"] | |
except Exception as e: | |
return f"Error: {str(e)}" | |
# Function to handle chat interactions | |
def handle_chat(name, dob, time_of_birth, place_of_birth, zodiac, query, chat_history): | |
chat_history = chat_history or [] | |
if query: | |
# Get AI response | |
bot_response = get_groq_response(name, dob, time_of_birth, place_of_birth, zodiac, query) | |
chat_history.append((query, bot_response)) | |
return chat_history, chat_history | |
# Gradio interface for the app | |
with gr.Blocks(theme=gr.themes.Soft(), title="Astro Guide") as demo: | |
gr.Markdown("# π Astro Guide - AI Astrologer") | |
with gr.Row(): | |
with gr.Column(scale=1): | |
name = gr.Textbox(label="Full Name") | |
dob = gr.Textbox(label="DOB (DD-MM-YYYY)") | |
time_of_birth = gr.Textbox(label="Birth Time") | |
place_of_birth = gr.Textbox(label="Birth Place") | |
zodiac = gr.Dropdown( | |
choices=["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", | |
"Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], | |
label="Sun Sign" | |
) | |
with gr.Column(scale=2): | |
chat_interface = gr.Chatbot(height=500) | |
query = gr.Textbox(label="Your Question") | |
state = gr.State() | |
submit_btn = gr.Button("Ask the Stars", variant="primary") | |
clear_btn = gr.Button("Clear") | |
# Handlers for buttons and text submissions | |
submit_btn.click( | |
handle_chat, | |
inputs=[name, dob, time_of_birth, place_of_birth, zodiac, query, state], | |
outputs=[chat_interface, state] | |
) | |
query.submit( | |
handle_chat, | |
inputs=[name, dob, time_of_birth, place_of_birth, zodiac, query, state], | |
outputs=[chat_interface, state] | |
) | |
clear_btn.click( | |
lambda: (None, None, None, None, None, None, []), | |
outputs=[name, dob, time_of_birth, place_of_birth, zodiac, query, chat_interface], | |
show_progress=False | |
) | |
if __name__ == "__main__": | |
demo.launch() |