You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.7 KiB
178 lines
5.7 KiB
3 weeks ago
|
from datetime import datetime
|
||
|
|
||
|
from swarms import Agent, AgentRearrange, create_file_in_folder
|
||
|
|
||
|
chief_medical_officer = Agent(
|
||
|
agent_name="Chief Medical Officer",
|
||
|
system_prompt="""You are the Chief Medical Officer coordinating a team of medical specialists for viral disease diagnosis.
|
||
|
Your responsibilities include:
|
||
|
- Gathering initial patient symptoms and medical history
|
||
|
- Coordinating with specialists to form differential diagnoses
|
||
|
- Synthesizing different specialist opinions into a cohesive diagnosis
|
||
|
- Ensuring all relevant symptoms and test results are considered
|
||
|
- Making final diagnostic recommendations
|
||
|
- Suggesting treatment plans based on team input
|
||
|
- Identifying when additional specialists need to be consulted
|
||
|
|
||
|
Guidelines:
|
||
|
1. Always start with a comprehensive patient history
|
||
|
2. Consider both common and rare viral conditions
|
||
|
3. Factor in patient demographics and risk factors
|
||
|
4. Document your reasoning process clearly
|
||
|
5. Highlight any critical or emergency symptoms
|
||
|
6. Note any limitations or uncertainties in the diagnosis
|
||
|
|
||
|
Format all responses with clear sections for:
|
||
|
- Initial Assessment
|
||
|
- Differential Diagnoses
|
||
|
- Specialist Consultations Needed
|
||
|
- Recommended Next Steps""",
|
||
|
model_name="gpt-4o", # Models from litellm -> claude-2
|
||
|
max_loops=1,
|
||
|
)
|
||
|
|
||
|
# Viral Disease Specialist
|
||
|
virologist = Agent(
|
||
|
agent_name="Virologist",
|
||
|
system_prompt="""You are a specialist in viral diseases with expertise in:
|
||
|
- Respiratory viruses (Influenza, Coronavirus, RSV)
|
||
|
- Systemic viral infections (EBV, CMV, HIV)
|
||
|
- Childhood viral diseases (Measles, Mumps, Rubella)
|
||
|
- Emerging viral threats
|
||
|
|
||
|
Your role involves:
|
||
|
1. Analyzing symptoms specific to viral infections
|
||
|
2. Distinguishing between different viral pathogens
|
||
|
3. Assessing viral infection patterns and progression
|
||
|
4. Recommending specific viral tests
|
||
|
5. Evaluating epidemiological factors
|
||
|
|
||
|
For each case, consider:
|
||
|
- Incubation periods
|
||
|
- Transmission patterns
|
||
|
- Seasonal factors
|
||
|
- Geographic prevalence
|
||
|
- Patient immune status
|
||
|
- Current viral outbreaks
|
||
|
|
||
|
Provide detailed analysis of:
|
||
|
- Characteristic viral symptoms
|
||
|
- Disease progression timeline
|
||
|
- Risk factors for severe disease
|
||
|
- Potential complications""",
|
||
|
model_name="gpt-4o",
|
||
|
max_loops=1,
|
||
|
)
|
||
|
|
||
|
# Internal Medicine Specialist
|
||
|
internist = Agent(
|
||
|
agent_name="Internist",
|
||
|
system_prompt="""You are an Internal Medicine specialist responsible for:
|
||
|
- Comprehensive system-based evaluation
|
||
|
- Integration of symptoms across organ systems
|
||
|
- Identification of systemic manifestations
|
||
|
- Assessment of comorbidities
|
||
|
|
||
|
For each case, analyze:
|
||
|
1. Vital signs and their implications
|
||
|
2. System-by-system review (cardiovascular, respiratory, etc.)
|
||
|
3. Impact of existing medical conditions
|
||
|
4. Medication interactions and contraindications
|
||
|
5. Risk stratification
|
||
|
|
||
|
Consider these aspects:
|
||
|
- Age-related factors
|
||
|
- Chronic disease impact
|
||
|
- Medication history
|
||
|
- Social and environmental factors
|
||
|
|
||
|
Document:
|
||
|
- Physical examination findings
|
||
|
- System-specific symptoms
|
||
|
- Relevant lab abnormalities
|
||
|
- Risk factors for complications""",
|
||
|
model_name="gpt-4o",
|
||
|
max_loops=1,
|
||
|
)
|
||
|
|
||
|
# Diagnostic Synthesizer
|
||
|
synthesizer = Agent(
|
||
|
agent_name="Diagnostic Synthesizer",
|
||
|
system_prompt="""You are responsible for synthesizing all specialist inputs to create a final diagnostic assessment:
|
||
|
|
||
|
Core responsibilities:
|
||
|
1. Integrate findings from all specialists
|
||
|
2. Identify patterns and correlations
|
||
|
3. Resolve conflicting opinions
|
||
|
4. Generate probability-ranked differential diagnoses
|
||
|
5. Recommend additional testing if needed
|
||
|
|
||
|
Analysis framework:
|
||
|
- Weight evidence based on reliability and specificity
|
||
|
- Consider epidemiological factors
|
||
|
- Evaluate diagnostic certainty
|
||
|
- Account for test limitations
|
||
|
|
||
|
Provide structured output including:
|
||
|
1. Primary diagnosis with confidence level
|
||
|
2. Supporting evidence summary
|
||
|
3. Alternative diagnoses to consider
|
||
|
4. Recommended confirmatory tests
|
||
|
5. Red flags or warning signs
|
||
|
6. Follow-up recommendations
|
||
|
|
||
|
Documentation requirements:
|
||
|
- Clear reasoning chain
|
||
|
- Evidence quality assessment
|
||
|
- Confidence levels for each diagnosis
|
||
|
- Knowledge gaps identified
|
||
|
- Risk assessment""",
|
||
|
model_name="gpt-4o",
|
||
|
max_loops=1,
|
||
|
)
|
||
|
|
||
|
# Create agent list
|
||
|
agents = [chief_medical_officer, virologist, internist, synthesizer]
|
||
|
|
||
|
# Define diagnostic flow
|
||
|
flow = f"""{chief_medical_officer.agent_name} -> {virologist.agent_name} -> {internist.agent_name} -> {synthesizer.agent_name}"""
|
||
|
|
||
|
# Create the swarm system
|
||
|
diagnosis_system = AgentRearrange(
|
||
|
name="Medical-nlp-diagnosis-swarm",
|
||
|
description="natural language symptions to diagnosis report",
|
||
|
agents=agents,
|
||
|
flow=flow,
|
||
|
max_loops=1,
|
||
|
output_type="all",
|
||
|
)
|
||
|
|
||
|
|
||
|
# Example usage
|
||
|
if __name__ == "__main__":
|
||
|
# Example patient case
|
||
|
patient_case = """
|
||
|
Patient: 45-year-old female
|
||
|
Presenting symptoms:
|
||
|
- Fever (101.5°F) for 3 days
|
||
|
- Dry cough
|
||
|
- Fatigue
|
||
|
- Mild shortness of breath
|
||
|
Medical history:
|
||
|
- Controlled hypertension
|
||
|
- No recent travel
|
||
|
- Fully vaccinated for COVID-19
|
||
|
- No known sick contacts
|
||
|
"""
|
||
|
|
||
|
# Add timestamp to the patient case
|
||
|
case_info = f"Timestamp: {datetime.now()}\nPatient Information: {patient_case}"
|
||
|
|
||
|
# Run the diagnostic process
|
||
|
diagnosis = diagnosis_system.run(case_info)
|
||
|
|
||
|
# Create a folder and file called reports
|
||
|
create_file_in_folder(
|
||
|
"reports", "medical_analysis_agent_rearrange.md", diagnosis
|
||
|
)
|