Spaces:
Sleeping
Sleeping
# -*- coding: utf-8 -*- | |
"""Hello doctor skin.ipynb | |
Automatically generated by Colab. | |
Original file is located at | |
https://colab.research.google.com/drive/1OI0xTyanplOVAVOE0OmaZBoPmrFSS9tb | |
""" | |
!pip install --upgrade openai transformers gradio huggingface_hub | |
import os | |
from getpass import getpass | |
from huggingface_hub import login | |
# Securely input your keys | |
openai_api_key = getpass("Enter your OpenAI API key: ") | |
hf_token = getpass("Enter your Hugging Face token: ") | |
# Set environment variables (no keys shown in code) | |
os.environ["OPENAI_API_KEY"] = openai_api_key | |
# Login to Hugging Face | |
login(token=hf_token) | |
import openai | |
def analyze_symptoms(symptoms): | |
try: | |
client = openai.OpenAI(api_key=os.environ["OPENAI_API_KEY"]) | |
response = client.chat.completions.create( | |
model="gpt-4-turbo", | |
messages=[ | |
{"role": "system", "content": "You are a helpful medical assistant."}, | |
{"role": "user", "content": f"I have these symptoms: {symptoms}. What might be the cause?"} | |
] | |
) | |
return response.choices[0].message.content | |
except Exception as e: | |
return f"Error analyzing symptoms: {e}" | |
from transformers import AutoProcessor, AutoModelForImageClassification | |
from PIL import Image | |
import torch | |
# Load public image model | |
image_model_id = "microsoft/beit-base-patch16-224-pt22k-ft22k" | |
processor = AutoProcessor.from_pretrained(image_model_id, token=HF_TOKEN) | |
model = AutoModelForImageClassification.from_pretrained(image_model_id, token=HF_TOKEN) | |
def classify_image(image): | |
try: | |
img = image.convert("RGB") | |
inputs = processor(images=img, return_tensors="pt") | |
with torch.no_grad(): | |
outputs = model(**inputs) | |
predicted_class = outputs.logits.argmax(-1).item() | |
label = model.config.id2label[predicted_class] | |
return f"Predicted skin condition: {label}" | |
except Exception as e: | |
return f"Error classifying image: {e}" | |
import gradio as gr | |
iface = gr.Interface( | |
fn=lambda symptoms, img: ( | |
analyze_symptoms(symptoms), | |
classify_image(img) if img else "No image uploaded" | |
), | |
inputs=[ | |
gr.Textbox(label="Describe your symptoms"), | |
gr.Image(type="pil", label="Upload skin image") | |
], | |
outputs=[ | |
gr.Textbox(label="Symptom Analysis"), | |
gr.Textbox(label="Image Diagnosis") | |
], | |
title="AI Doctor", | |
description="Enter your symptoms and/or upload a skin image to get medical insights. Powered by GPT-4 and Hugging Face vision transformers." | |
) | |
iface.launch(share=True) |