Merge pull request #130 from Madhuvod/medical-agent-fix

Fixed an issue in ai medical imaging agent
This commit is contained in:
Shubham Saboo 2025-02-25 15:32:05 -06:00 committed by GitHub
commit 58cb25c79b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 16 deletions

View file

@ -1,6 +1,6 @@
# 🩻 Medical Imaging Diagnosis Agent # 🩻 Medical Imaging Diagnosis Agent
A Medical Imaging Diagnosis Agent build on agno powered by Gemini 2.0 Flash Experimental that provides AI-assisted analysis of medical images of various scans. The agent acts as a medical imaging diagnosis expert to analyze various types of medical images and videos, providing detailed diagnostic insights and explanations. A Medical Imaging Diagnosis Agent build on agno powered by Gemini 2.0 Flash that provides AI-assisted analysis of medical images of various scans. The agent acts as a medical imaging diagnosis expert to analyze various types of medical images and videos, providing detailed diagnostic insights and explanations.
## Features ## Features
@ -57,7 +57,7 @@ A Medical Imaging Diagnosis Agent build on agno powered by Gemini 2.0 Flash Expe
- Uses Gemini 2.0 Flash for analysis - Uses Gemini 2.0 Flash for analysis
- Requires stable internet connection - Requires stable internet connection
- API usage costs apply - Free API usage costs - 1,500 free requests per day by google!
- For educational and development purposes only - For educational and development purposes only
- Not a replacement for professional medical diagnosis - Not a replacement for professional medical diagnosis

View file

@ -1,9 +1,10 @@
import os import os
from PIL import Image from PIL import Image as PILImage
from agno.agent import Agent from agno.agent import Agent
from agno.models.google import Gemini from agno.models.google import Gemini
import streamlit as st import streamlit as st
from agno.tools.duckduckgo import DuckDuckGoTools from agno.tools.duckduckgo import DuckDuckGoTools
from agno.media import Image as AgnoImage
if "GOOGLE_API_KEY" not in st.session_state: if "GOOGLE_API_KEY" not in st.session_state:
st.session_state.GOOGLE_API_KEY = None st.session_state.GOOGLE_API_KEY = None
@ -42,8 +43,8 @@ with st.sidebar:
medical_agent = Agent( medical_agent = Agent(
model=Gemini( model=Gemini(
api_key=st.session_state.GOOGLE_API_KEY, id="gemini-2.0-flash",
id="gemini-2.0-flash-exp" api_key=st.session_state.GOOGLE_API_KEY
), ),
tools=[DuckDuckGoTools()], tools=[DuckDuckGoTools()],
markdown=True markdown=True
@ -108,11 +109,9 @@ with upload_container:
if uploaded_file is not None: if uploaded_file is not None:
with image_container: with image_container:
# Center the image using columns
col1, col2, col3 = st.columns([1, 2, 1]) col1, col2, col3 = st.columns([1, 2, 1])
with col2: with col2:
image = Image.open(uploaded_file) image = PILImage.open(uploaded_file)
# Calculate aspect ratio for resizing
width, height = image.size width, height = image.size
aspect_ratio = width / height aspect_ratio = width / height
new_width = 500 new_width = 500
@ -133,13 +132,16 @@ if uploaded_file is not None:
with analysis_container: with analysis_container:
if analyze_button: if analyze_button:
image_path = "temp_medical_image.png"
with open(image_path, "wb") as f:
f.write(uploaded_file.getbuffer())
with st.spinner("🔄 Analyzing image... Please wait."): with st.spinner("🔄 Analyzing image... Please wait."):
try: try:
response = medical_agent.run(query, images=[image_path]) temp_path = "temp_resized_image.png"
resized_image.save(temp_path)
# Create AgnoImage object
agno_image = AgnoImage(filepath=temp_path) # Adjust if constructor differs
# Run analysis
response = medical_agent.run(query, images=[agno_image])
st.markdown("### 📋 Analysis Results") st.markdown("### 📋 Analysis Results")
st.markdown("---") st.markdown("---")
st.markdown(response.content) st.markdown(response.content)
@ -150,8 +152,5 @@ if uploaded_file is not None:
) )
except Exception as e: except Exception as e:
st.error(f"Analysis error: {e}") st.error(f"Analysis error: {e}")
finally:
if os.path.exists(image_path):
os.remove(image_path)
else: else:
st.info("👆 Please upload a medical image to begin analysis") st.info("👆 Please upload a medical image to begin analysis")