Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import os | |
| from openai import OpenAI | |
| # Set your OpenAI API key | |
| #openai.api_key = config.OPENAI_API_KEY | |
| client = OpenAI(api_key=os.environ['OPENAI_API_KEY']) | |
| def converse(x, y, z): | |
| return z | |
| def reset(z): | |
| return [], [] | |
| # Initial message | |
| messages = [{ | |
| "role": "system", | |
| "content": "You are a medical advisor specializing in humanitarian health. Familiar with all ICRC guidelines, \ | |
| your task is to methodically gather information about a patient's condition. When presented with partial or \ | |
| unclear information, ask clarifying questions one at a time (wait for an answer before asking another question) \ | |
| until you can make a well-informed suggestion. \ | |
| If, after several attempts, adequate details are still missing, advise the user on the next steps they \ | |
| should consider (e.g., lab tests, consultations). Once you believe you have all necessary details, \ | |
| provide treatment suggestions based on the information. Conclude each session by reminding users \ | |
| of the importance of consulting with medical professionals and offering a summary. Remind the users \ | |
| that you are an AI chatbot and cannot be held accountable for any mistakes that could lead to \ | |
| a patient hard. Patient safety is your priority so ensure that the users of the chatbot is aware. Avoid using \ | |
| quotation marks and always adhere to ICRC and medical guidelines. Do not reveal your nature \ | |
| as an AI language model." | |
| }] | |
| def provide_suggestions(user_message, history): | |
| global messages | |
| # Update the global messages list with the user's input | |
| messages.append({"role": "user", "content": user_message}) | |
| # Get a response from the model | |
| response = client.chat.completions.create(model="gpt-3.5-turbo", messages=messages) | |
| # Extract the model's message from the response | |
| system_message = response.choices[0].message.content | |
| # Update the messages list with the model's response | |
| messages.append({"role": "assistant", "content": system_message}) | |
| return system_message | |
| # Define and launch the Gradio Chat Interface | |
| iface = gr.ChatInterface(fn=provide_suggestions, title="MedGuide+", \ | |
| description="Introducing our AI medical advisor, an innovative and knowledgeable \ | |
| resource designed to provide prompt and reliable support in the field of healthcare \ | |
| and medicine, with extensive training on a wide range of medical literature and \ | |
| guidelines, offering valuable insights and recommendations while emphasizing the \ | |
| importance of consulting with qualified healthcare professionals for personalized medical advice and care. \ | |
| For more info, check out: https://github.com/jmesplana/MedGuide_Plus") | |
| # Rest of your Gradio Interface setup | |
| def get_medical_summary_from_chat(messages): | |
| if len(messages) <= 1: | |
| return "No consultation data available." | |
| extraction_prompt = { | |
| "role": "user", | |
| "content": "Based on the chat details, please provide a detailed summary following the international patient summary (IPS) format.\ | |
| break down the summary in categories following the IPS category. Put the content of each category in bullet points (if needed)." | |
| } | |
| messages.append(extraction_prompt) | |
| # Get a response from the model | |
| response = client.chat.completions.create(model="gpt-3.5-turbo", messages=messages) | |
| # Extract the model's message from the response | |
| system_message = response.choices[0].message.content | |
| return system_message | |
| # Rest of your Gradio summary interface and main execution block | |
| # Gradio function for the summary interface | |
| def show_summary(): | |
| consolidated_output = get_medical_summary_from_chat(messages) | |
| return consolidated_output | |
| # Create the secondary Gradio interface | |
| summary_layout = gr.Interface(fn=show_summary, | |
| inputs=[], | |
| outputs="text", # Single text output | |
| live=True, | |
| title="Chat Summary", | |
| description="Summary of the consultation based on the chat data." | |
| ) | |
| #summary_layout.launch() | |
| demo = gr.TabbedInterface([iface, summary_layout],tab_names=['chatbot','summary']) | |
| if __name__ == "__main__": | |
| demo.launch() |