Spaces:
Sleeping
Sleeping
| 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() |