Merge pull request #130 from Madhuvod/medical-agent-fix
Fixed an issue in ai medical imaging agent
This commit is contained in:
commit
58cb25c79b
2 changed files with 15 additions and 16 deletions
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue