Creare agenti AI di intelligenza artificiale/Medico
Creazione dell'agente
[modifica | modifica sorgente]Volendo creare un agente AI che faccia da medico cardiologo rispondendo a domande sul referto_medico.txt, bisogna innnanzitutto creare un notebook Google Colab in cui installare la libreria litellm:
!pip install litellm
Poi caricare nel filesystem di Colab il file referto_medico.txt con il seguente codice:
from google.colab import files
uploaded = files.upload()
Poi bisogna importare l'API KEY dell'LLM prescelto, cliccando sull'immagine della chiave nella barra laterale di sinistra di Colab e abilitandola:
import os
from google.colab import userdata
api_key = userdata.get('GOOGLE_API_KEY')
os.environ['GOOGLE_API_KEY'] = api_key
Poi bisogna creare una funzione python per richiamare Google Gemini e ottenere la risposta tramite prompt programmatici e caricare il referto_medico:
from litellm import completion
# 1. Carica documento legale
with open("referto_medico.txt", "r", encoding="utf-8") as f:
referto_medico = f.read()
def generate_response(messages: str) -> str:
"""Call LLM to get response"""
response = completion(
model="gemini/gemini-2.0-flash",
messages=messages,
max_tokens=1024
)
return response.choices[0].message.content
Si crea un messaggio di sistema per l'agente in modo da impartire le istruzioni all'agente che deve essere un cardiologo che risponda sul referto_medico fornito:
agent_rules = [{
"role": "system",
"content": (
f"Comportati come un cardiologo. Riceverai un referto medico di un paziente. \n\n"
f"Compito: Esaminare gli esami cardiaci del paziente, inclusi ECG, esami del sangue, risultati del monitoraggio Holter ed ecocardiogramma. \n\n"
f"Obiettivo: Determinare se ci sono segni impercettibili di problemi cardiaci che potrebbero spiegare i sintomi del paziente. Escludere eventuali patologie cardiache sottostanti, come aritmie o anomalie strutturali, che potrebbero non essere rilevate dagli esami di routine. \n\n"
f"Raccomandazione: Fornire indicazioni su eventuali ulteriori esami o monitoraggi cardiaci necessari per garantire che non vi siano problemi cardiaci nascosti. Suggerire potenziali strategie di gestione se viene identificato un problema cardiaco. Si prega di restituire solo le possibili cause dei sintomi del paziente e i passaggi successivi raccomandati. \n\n"
f"Referto medico: {referto_medico}\n\n"
)
}]
Si costruisce un ciclo di 5 iterazioni in cui l'utente inserisce la domanda relativa al documento legale per l'agente, si passano al prompt programmatico di sistema agent_rules e domanda, in tal modo si ottiene risposta dall'agente:
iterations = 0
max_iterations = 5
while iterations < max_iterations:
domanda = input("Inserisci domanda relativa al referto medico: ")
user_input=[{"role": "user", "content": f"Domanda: {domanda}"}]
prompt = agent_rules + user_input
print("\n🤖 Agent thinking...")
response = generate_response(prompt)
print("\n📬 Agent response:\n", response)
iterations += 1
Referto medico fornito e inventato
[modifica | modifica sorgente]Referto Medico Paziente: M.F., uomo, 54 anni Motivo della visita: episodi ricorrenti di palpitazioni serali, lieve dispnea da sforzo, astenia. Anamnesi patologica remota: ipertensione arteriosa ben controllata con ACE-inibitori, nessuna storia di cardiopatia ischemica nota. Non fumatore, consumo occasionale di alcol. Familiarità positiva per cardiopatia ischemica (padre deceduto a 67 anni per infarto). Esami eseguiti: 1. **ECG a riposo**: ritmo sinusale, frequenza 78 bpm, lieve deviazione assiale sinistra, nessuna alterazione del tratto ST-T. 2. **Esami ematochimici**: emocromo, funzionalità renale ed epatica nella norma. Profilo lipidico: LDL 148 mg/dl (lievemente aumentato), HDL 42 mg/dl, trigliceridi 132 mg/dl. Elettroliti nella norma, troponina negativa. 3. **Holter 24h**: ritmo sinusale prevalente, rari episodi di tachicardia sopraventricolare parossistica di breve durata (4–6 battiti), assenza di aritmie ventricolari significative, singoli BESV isolati. Frequenza cardiaca media: 76 bpm, minima: 54 bpm, massima: 132 bpm. 4. **Ecocardiogramma transtoracico**: ventricolo sinistro di normali dimensioni, FE 58%, lieve ipertrofia concentrica, atrio sinistro lievemente dilatato. Valvole: minima insufficienza mitralica, nessuna stenosi. Funzione ventricolare destra normale. Nessun versamento pericardico. Conclusioni del referto: * Palpitazioni attribuibili a brevi episodi di tachicardia sopraventricolare parossistica. * Discreta ipertrofia ventricolare sinistra da ipertensione cronica. * Profilo lipidico meritevole di ottimizzazione.
Esecuzione dell'agente
[modifica | modifica sorgente]Inserisci domanda relativa al referto medico: Quali condizioni cardiache potrebbero spiegare le palpitazioni e la dispnea?
🤖 Agent thinking...
📬 Agent response:
Considerando il referto medico fornito, ecco le possibili cause dei sintomi di M.F. e i passi successivi raccomandati: **Possibili cause delle palpitazioni e della dispnea:** 1. **Tachicardia sopraventricolare parossistica (TSV):** * Il monitoraggio Holter ha rilevato brevi episodi di TSV, che sono una causa plausibile delle palpitazioni. La durata breve potrebbe spiegare perché non sempre vengono avvertite o catturate. 2. **Ipertrofia ventricolare sinistra (IVS):** * L'IVS lieve, probabilmente secondaria all'ipertensione cronica, può contribuire alla dispnea, soprattutto durante lo sforzo. L'IVS riduce la compliance ventricolare e può aumentare le pressioni di riempimento. 3. **Lieve insufficienza mitralica:** * Sebbene descritta come "minima", l'insufficienza mitralica può, in alcuni casi, contribuire alla dispnea, soprattutto se peggiora con lo sforzo. 4. **Ischemia silente:** * La familiarità positiva per cardiopatia ischemica è un fattore di rischio. Anche se l'ECG a riposo non mostra alterazioni ischemiche, l'ischemia non rilevata durante l'attività o durante la notte potrebbe contribuire ai sintomi. 5. **Aritmie non rilevate:** * Nonostante il monitoraggio Holter di 24 ore, aritmie intermittenti o che si verificano in orari diversi da quelli del monitoraggio potrebbero non essere state rilevate. La fibrillazione atriale parossistica, in particolare, può essere intermittente e presentarsi con palpitazioni e dispnea. **Passaggi successivi raccomandati:** 1. **Ulteriore monitoraggio cardiaco:** * **Monitoraggio ECG prolungato:** Considerare un monitoraggio ECG più lungo (come un monitoraggio ad eventi o un registratore impiantabile) per catturare eventuali aritmie intermittenti che potrebbero non essere state rilevate dal monitoraggio Holter di 24 ore. * **Test da sforzo:** Eseguire un test da sforzo (su tapis roulant o con stress ecocardiografico) per valutare la risposta del paziente all'esercizio fisico, la presenza di ischemia inducibile e le aritmie correlate allo sforzo. 2. **Ulteriore valutazione cardiaca:** * **Monitoraggio della pressione arteriosa:** Considerare un monitoraggio della pressione arteriosa delle 24 ore per valutare il controllo della pressione arteriosa e il modello di pressione arteriosa durante il giorno e la notte. 3. **Gestione dei fattori di rischio:** * **Modifica dello stile di vita:** Enfatizzare la modifica dello stile di vita, compresa una dieta sana per il cuore, l'esercizio fisico regolare, la perdita di peso (se necessario) e la limitazione dell'assunzione di alcol. * **Gestione dei lipidi:** Iniziare una terapia con statine per migliorare il profilo lipidico, data l'elevata LDL e la familiarità con cardiopatia ischemica. * **Controllo della pressione arteriosa:** Assicurarsi che la pressione arteriosa sia ben controllata con la terapia farmacologica. 4. **Valutare altre cause:** * **Funzione tiroidea:** Valutare la funzione tiroidea per escludere l'ipertiroidismo, che può causare palpitazioni. * **Anemia:** Escludere l'anemia, che può causare dispnea e astenia. 5. **Studio elettrofisiologico (EPS):** * Se i sintomi persistono e sono fortemente sospetti di aritmia ma non vengono catturati con un monitoraggio non invasivo, uno studio elettrofisiologico può essere preso in considerazione per identificare e trattare le aritmie, in particolare la TSV. 6. **Imaging cardiaco avanzato:** * Se sussiste il sospetto di ischemia, considerare un test di stress con imaging (stress ecocardiografico o SPECT cardiaco) o una coronarografia (CTA) per valutare le arterie coronarie. Queste raccomandazioni hanno lo scopo di escludere eventuali patologie cardiache sottostanti che potrebbero non essere rilevate dagli esami di routine ed evitare di perdere qualsiasi importante diagnosi cardiaca.
Inserisci domanda relativa al referto medico: L’ecocardiogramma mostra anomalie strutturali che richiedono follow-up ravvicinato?
🤖 Agent thinking...
📬 Agent response:
Basandomi sul referto fornito, l'ecocardiogramma mostra le seguenti anomalie strutturali: * **Lieve ipertrofia concentrica del ventricolo sinistro:** Probabilmente dovuta all'ipertensione cronica. * **Atrio sinistro lievemente dilatato:** Questo potrebbe essere secondario all'ipertrofia ventricolare sinistra e alla lieve insufficienza mitralica. * **Minima insufficienza mitralica:** Probabilmente non significativa, ma dovrebbe essere monitorata. Queste anomalie, in particolare l'ipertrofia ventricolare sinistra e la dilatazione atriale sinistra, **richiedono un follow-up**. Sebbene siano probabilmente correlate all'ipertensione cronica, contribuiscono ai sintomi del paziente e possono aumentare il rischio di future complicanze cardiache.