Construya un asistente de investigación de descubrimiento de fármacos utilizando agentes de hilos y roca madre de Amazon

El descubrimiento de fármacos es un proceso complejo y intensivo en el tiempo que requiere que los investigadores naveguen enormes cantidades de literatura científica, datos de ensayos clínicos y bases de datos moleculares. A los clientes de ciencias de la vida les gusta Genentech y Astrazeneca están utilizando agentes de IA y otras herramientas generativas de IA para aumentar la velocidad del descubrimiento científico. Los constructores de estas organizaciones ya están utilizando las características totalmente administradas de Roca madre de Amazon para implementar rápidamente flujos de trabajo específicos del dominio Para una variedad de casos de uso, desde la identificación del objetivo del fármaco temprano hasta la participación del proveedor de atención médica.

Sin embargo, los casos de uso más complejos podrían beneficiarse al usar el código abierto Strands Agentes SDK. Los agentes de Strands adoptan un enfoque impulsado por el modelo para desarrollar y ejecutar agentes de IA. Funciona con la mayoría de los proveedores de modelos, incluidas las puertas de enlace del modelo de lenguaje grande personalizado e interno (LLM), y los agentes se pueden implementar donde aloje una aplicación de Python.

En esta publicación, demostramos cómo crear un poderoso asistente de investigación para el descubrimiento de drogas utilizando agentes de hilos y Roca madre de Amazon. Este asistente de IA puede buscar múltiples bases de datos científicas simultáneamente utilizando el Protocolo de contexto modelo (MCP)sintetice sus hallazgos y genere informes completos sobre objetivos farmacológicos, mecanismos de enfermedades y áreas terapéuticas. Este asistente está disponible como ejemplo en la fuente abierta. Kit de herramientas de agente de salud y ciencias de la vida para que lo uses y adaptas.

Descripción general de la solución

Esta solución utiliza agentes de hilos para conectar modelos de cimientos de alto rendimiento (FMS) con fuentes comunes de datos de ciencias de la vida como arxiv, Pubmedy Químico. Demuestra cómo crear servidores MCP rápidamente para consultar datos y ver los resultados en una interfaz de conversación.

Agentes de IA pequeños y enfocados que trabajan juntos a menudo puede producir mejores resultados que un solo agente monolítico. Esta solución utiliza un equipo de subgestados, cada uno con sus propios FM, instrucciones y herramientas. El siguiente diagrama de flujo muestra cómo el agente del orquestador (que se muestra en naranja) maneja las consultas de los usuarios y las enruta a los subgentales para recuperación de información (verde) o planificación, síntesis y generación de informes (púrpura).

Esta publicación se centra en la construcción con hilos agentes en su entorno de desarrollo local. Consulte el Documentación de agentes de hilos para desplegar agentes de producción en AWS Lambda, AWS Fargate, Servicio de Kubernetes de Amazon Elastic (Amazon EKS), o Nube de cómputo elástica de Amazon (Amazon EC2).

En las siguientes secciones, mostramos cómo crear el asistente de investigación en agentes de hilos definiendo una FM, herramientas de MCP y subciburentes.

Requisitos previos

Esta solución requiere Python 3.10+, hilosy varios paquetes adicionales de Python. Recomendamos encarecidamente usar un entorno virtual como Venv o uva para administrar estas dependencias.

Complete los siguientes pasos para implementar la solución a su entorno local:

  1. Clonar el repositorio de código de Github.
  2. Instale las dependencias de Python requeridas con pip install -r requirements.txt.
  3. Configure sus credenciales de AWS por establecerlos como variables de entorno, Agregarlos a un archivo de credencialeso siguiendo a otro proceso compatible.
  4. Guarde su clave API Tavily en un archivo .env en el siguiente formato: TAVILY_API_KEY="YOUR_API_KEY".

Tu también necesitas acceso A los siguientes FMS en su cuenta de Amazon Bedrock en su cuenta de AWS:

  • Soneto Claude 3.7 de Anthrope
  • Soneto Claude 3.5 de Anthrope
  • Claude 3.5 Haiku de Anthrope

Definir el modelo de base

Comenzamos definiendo una conexión con un FM en Amazon Bedrock usando los agentes de los hilos BedrockModel clase. Utilizamos el soneto Claude 3.7 de Anthrope como el modelo predeterminado. Vea el siguiente código:

from strands import Agent, tool
from strands.models import BedrockModel
from strands.agent.conversation_manager import SlidingWindowConversationManager
from strands.tools.mcp import MCPClient
# Model configuration with Strands using Amazon Bedrock's foundation models
def get_model():
    model = BedrockModel(
        boto_client_config=Config(
            read_timeout=900,
            connect_timeout=900,
            retries=dict(max_attempts=3, mode="adaptive"),
        ),
        model_id="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
        max_tokens=64000,
        temperature=0.1,
        top_p=0.9,
        additional_request_fields={
            "thinking": {
                "type": "disabled"  # Can be enabled for reasoning mode
            }
        }
    )
    return model

Definir herramientas de MCP

MCP proporciona un estándar sobre cómo las aplicaciones de IA interactúan con sus entornos externos. Ya existen miles de servidores MCP, incluidos los de herramientas y conjuntos de datos de ciencias de la vida. Esta solución proporciona servidores MCP de ejemplo para:

  • arxiv -Repositorio de artículos de acceso abierto de artículos académicos
  • Pubmed -Citas revisadas por pares para la literatura biomédica
  • Químico -Base de datos curada de moléculas bioactivas con propiedades de fármaco
  • Clinicaltrials.gov – Base de datos del gobierno de los Estados Unidos de estudios de investigación clínica
  • Búsqueda web tavily – API para encontrar noticias recientes y otros contenidos de la Internet pública

Los agentes de hilos racionalizan la definición de clientes de MCP para nuestro agente. En este ejemplo, se conecta a cada herramienta utilizando E/S estándar. Sin embargo, los agentes de hilos también admiten Servidores MCP remotos con transporte de eventos de HTTP transmitidos. Vea el siguiente código:

# MCP Clients for various scientific databases
tavily_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(command="python", args=["application/mcp_server_tavily.py"])
))
arxiv_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(command="python", args=["application/mcp_server_arxiv.py"])
))
pubmed_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(command="python", args=["application/mcp_server_pubmed.py"])
))
chembl_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(command="python", args=["application/mcp_server_chembl.py"])
))
clinicaltrials_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(command="python", args=["application/mcp_server_clinicaltrial.py"])
))

Definir sub-agentes especializados

El agente de planificación analiza las preguntas de los usuarios y crea un plan para el que los subcáscedes y herramientas para usar:

@tool
def planning_agent(query: str) -> str:
    """
    A specialized planning agent that analyzes the research query and determines
    which tools and databases should be used for the investigation.
    """
    planning_system = """
    You are a specialized planning agent for drug discovery research. Your role is to:
    
    1. Analyze research questions to identify target proteins, compounds, or biological mechanisms
    2. Determine which databases would be most relevant (Arxiv, PubMed, ChEMBL, ClinicalTrials.gov)
    3. Generate specific search queries for each relevant database
    4. Create a structured research plan
    """
    model = get_model()
    planner = Agent(
        model=model,
        system_prompt=planning_system,
    )
    response = planner(planning_prompt)
    return str(response)

Del mismo modo, el agente de síntesis integra los hallazgos de múltiples fuentes en un solo informe integral:

@tool
def synthesis_agent(research_results: str) -> str:
    """
    Specialized agent for synthesizing research findings into a comprehensive report.
    """
    system_prompt = """
    You are a specialized synthesis agent for drug discovery research. Your role is to:
    
    1. Integrate findings from multiple research databases
    2. Create a comprehensive, coherent scientific report
    3. Highlight key insights, connections, and opportunities
    4. Organize information in a structured format:
       - Executive Summary (300 words)
       - Target Overview
       - Research Landscape
       - Drug Development Status
       - References
    """
    model = get_model()
    synthesis = Agent(
        model=model,
        system_prompt=system_prompt,
    )
    response = synthesis(synthesis_prompt)
    return str(response)

Defina el agente de orquestación

También definimos un agente de orquestación para coordinar todo el flujo de trabajo de investigación. Este agente usa el SlidingWindowConversationManager Clase de los agentes de hilos para almacenar los últimos 10 mensajes en la conversación. Vea el siguiente código:

def create_orchestrator_agent(
    history_mode,
    tavily_client=None,
    arxiv_client=None,
    pubmed_client=None,
    chembl_client=None,
    clinicaltrials_client=None,
):
    system = """
    You are an orchestrator agent for drug discovery research. Your role is to coordinate a multi-agent workflow:
    
    1. COORDINATION PHASE:
       - For simple queries: Answer directly WITHOUT using specialized tools
       - For complex research requests: Initiate the multi-agent research workflow
    
    2. PLANNING PHASE:
       - Use the planning_agent to determine which databases to search and with what queries
    
    3. EXECUTION PHASE:
       - Route specialized search tasks to the appropriate research agents
    
    4. SYNTHESIS PHASE:
       - Use the synthesis_agent to integrate findings into a comprehensive report
       - Generate a PDF report when appropriate
    """
    # Aggregate all tools from specialized agents and MCP clients
    tools = [planning_agent, synthesis_agent, generate_pdf_report, file_write]
    # Dynamically load tools from each MCP client
    if tavily_client:
        tools.extend(tavily_client.list_tools_sync())
    # ... (similar for other clients)
    conversation_manager = SlidingWindowConversationManager(
        window_size=10,  # Maintains context for the last 10 exchanges
    )
    orchestrator = Agent(
        model=model,
        system_prompt=system,
        tools=tools,
        conversation_manager=conversation_manager
    )
    return orchestrator

Caso de uso de ejemplo: explore la investigación reciente del cáncer de mama

Para probar el nuevo asistente, inicie la interfaz de chat ejecutando Streamlit Ej. La siguiente captura de pantalla muestra una conversación típica con el agente de investigación. En este ejemplo, le preguntamos al asistente: “Genere un informe para HER2 que incluya noticias recientes, investigaciones recientes, compuestos relacionados y ensayos clínicos en curso”. El asistente primero desarrolla un plan de investigación integral utilizando las diversas herramientas a su disposición. Decide comenzar con una búsqueda web de noticias recientes sobre HER2, así como artículos científicos sobre PubMed y ARXIV. También analiza los compuestos relacionados con HER2 en ChemBL y ensayos clínicos en curso. Sintetiza estos resultados en un solo informe y genera un archivo de salida de sus hallazgos, incluidas las citas.

Chat de agente de descubrimiento de fármacos de fármacos de Amazon que muestra un enfoque sistemático para la generación de informes de investigación HER2

El siguiente es un extracto de un informe generado:

Comprehensive Scientific Report: HER2 in Breast Cancer Research and Treatment
1. Executive Summary
Human epidermal growth factor receptor 2 (HER2) continues to be a critical target in breast cancer research and treatment development. This report synthesizes recent findings across the HER2 landscape highlighting significant advances in understanding HER2 biology and therapeutic approaches. The emergence of antibody-drug conjugates (ADCs) represents a paradigm shift in HER2-targeted therapy, with trastuzumab deruxtecan (T-DXd, Enhertu) demonstrating remarkable efficacy in both early and advanced disease settings. The DESTINY-Breast11 trial has shown clinically meaningful improvements in pathologic complete response rates when T-DXd is followed by standard therapy in high-risk, early-stage HER2+ breast cancer, potentially establishing a new treatment paradigm.

En particular, no tiene que definir un proceso paso a paso para lograr esta tarea. Al proporcionar al asistente una lista bien documentada de herramientas, puede decidir qué usar y en qué orden.

Limpiar

Si siguió este ejemplo en su computadora local, no creará nuevos recursos en su cuenta de AWS que necesita limpiar. Si implementó el asistente de investigación utilizando uno de esos servicios, consulte la documentación del servicio relevante para obtener instrucciones de limpieza.

Conclusión

En esta publicación, mostramos cómo los agentes de Strands optimizan la creación de poderosos asistentes de IA específicos de dominio. Le recomendamos que pruebe esta solución con sus propias preguntas de investigación y la amplíe con nuevas herramientas científicas. La combinación de las capacidades de orquestación de los agentes de los Strands, las respuestas de transmisión y la configuración flexible con los potentes modelos de lenguaje de Amazon Bedrock crean un nuevo paradigma para la investigación asistida por AI-AI. A medida que el volumen de información científica continúa creciendo exponencialmente, marcos como los agentes de hilos se convertirán en herramientas esenciales para el descubrimiento de fármacos.

Para obtener más información sobre la construcción de agentes inteligentes con agentes de hilos, consulte Introducción de agentes de hilos, un código abierto de IA Agentes SDK, Strands Agentes SDKy el Repositorio de Github. También puedes encontrar más Agentes de muestra para la atención médica y las ciencias de la vida Construido en Amazon Bedrock.

Para obtener más información sobre la implementación de soluciones de IA para el descubrimiento de drogas en AWS, visítenos en AWS For Life Sciences.


Sobre los autores

Tiro en la cabeza de Hasun YuHasun Yu es un arquitecto de soluciones especializadas de IA/ML con una amplia experiencia en el diseño, el desarrollo y la implementación de soluciones de IA/ML para la atención médica y las ciencias de la vida. Apoya la adopción de servicios avanzados de AWS AI/ML, incluida la IA generativa y agente.

Totio de la cabeza de Brian LoyalBrian leal es un arquitecto principal de soluciones de IA/ML en el equipo mundial de ciencias de la salud y la vida en Amazon Web Services. Tiene más de 20 años de experiencia en biotecnología y aprendizaje automático y le apasiona usar la IA para mejorar la salud y el bienestar humano.