rogerkoranteng's picture
Upload folder using huggingface_hub
3506b46 verified
import gradio as gr
import os
import requests
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Define endpoints and securely load API keys from environment variables
model_config = {
"gpt-4": {
"endpoint": "https://roger-m38jr9pd-eastus2.openai.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-08-01-preview",
"api_key": os.getenv("GPT4_API_KEY")
},
"gpt-4o": {
"endpoint": "https://roger-m38jr9pd-eastus2.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview",
"api_key": os.getenv("GPT4O_API_KEY")
},
"gpt-35-turbo": {
"endpoint": "https://rogerkoranteng.openai.azure.com/openai/deployments/gpt-35-turbo/chat/completions?api-version=2024-08-01-preview",
"api_key": os.getenv("GPT35_TURBO_API_KEY")
},
"gpt-4-32k": {
"endpoint": "https://roger-m38orjxq-australiaeast.openai.azure.com/openai/deployments/gpt-4-32k/chat/completions?api-version=2024-08-01-preview",
"api_key": os.getenv("GPT4_32K_API_KEY")
}
}
# Function to generate a response from Azure OpenAI
def generate_response(model_choice, user_message, chat_history):
model_info = model_config.get(model_choice)
if not model_info:
return "Invalid model selection. Please choose a valid model.", chat_history
chat_history.append({"role": "user", "content": user_message})
headers = {
"Content-Type": "application/json",
"api-key": model_info['api_key'],
}
data = {
"messages": chat_history,
"max_tokens": 150,
"temperature": 0.7,
}
try:
response = requests.post(
model_info["endpoint"],
headers=headers,
json=data
)
response.raise_for_status()
response_data = response.json()
assistant_message = response_data['choices'][0]['message']['content']
chat_history.append({"role": "assistant", "content": assistant_message})
return assistant_message, chat_history
except requests.exceptions.RequestException as e:
return f"Error: {e}", chat_history
# Function to format chat history with improved readability
def format_chat_history(history):
formatted_history = ""
for message in history:
role = "User:" if message["role"] == "user" else "Sage:"
formatted_history += f"{role} {message['content']}\n\n" # Message content with a line break
return formatted_history.strip() # Remove any trailing whitespace
# List of available models
azure_models = [
"gpt-4",
"gpt-4o",
"gpt-35-turbo",
"gpt-4-32k"
]
# Function to handle model change status update
def change_model(model_choice):
return f"Selected model: {model_choice}"
# Create the Gradio interface
with gr.Blocks() as interface:
gr.Markdown("## Sage - Your Mental Health Advisor")
with gr.Tab("Model Selection"):
gr.Markdown("### Select Model for Chat")
model_dropdown = gr.Dropdown(
choices=azure_models,
label="Choose a Model",
value=azure_models[0], # Default model
interactive=True
)
# Add status update on model change
status_textbox = gr.Textbox(label="Model Selection Status", value="Selected model: gpt-4", interactive=False)
model_dropdown.change(change_model, inputs=model_dropdown, outputs=status_textbox)
gr.Markdown("The selected model will be used for chat interaction.")
with gr.Tab("Chat Interface"):
gr.Markdown("### Chat with Sage - Your Mental Health Advisor")
chat_history_state = gr.State([]) # Store chat history
model_choice_state = gr.State(azure_models[0]) # Default model
user_message = gr.Textbox(
placeholder="Hello, I am Sage. How can I assist you today?",
label="Your Message",
lines=2,
scale=7
)
model_dropdown.change(
lambda x: x, inputs=model_dropdown, outputs=model_choice_state
)
assistant_response = gr.Textbox(label="Assistant's Response")
submit_button = gr.Button("Send Message")
submit_button.click(
generate_response,
inputs=[model_choice_state, user_message, chat_history_state],
outputs=[assistant_response, chat_history_state]
)
# Chat History Tab
with gr.Tab("Chat History"):
gr.Markdown("### Chat History")
# Add the fetch history button inside the "Chat History" tab
fetch_history_button = gr.Button("Fetch Chat History")
chat_history_display = gr.Textbox(label="Chat History", interactive=False, lines=10)
# Function to fetch and display chat history
def fetch_chat_history(chat_history):
return format_chat_history(chat_history)
# Bind the fetch history button to fetch the chat history
fetch_history_button.click(
fetch_chat_history,
inputs=chat_history_state,
outputs=chat_history_display
)
# Launch the Gradio app
interface.launch(server_name="0.0.0.0", server_port=8080, share=True)