Una implementación de codificación para un marco de IA agente que realiza análisis de literatura, generación de hipótesis, planificación experimental, simulación e informes científicos

En este tutorial, construimos paso a paso un agente de descubrimiento científico completo y experimentamos cómo cada componente trabaja en conjunto para formar un flujo de trabajo de investigación coherente. Comenzamos cargando nuestro corpus de literatura, construyendo módulos de recuperación y LLM, y luego ensamblando agentes que buscan artículos, generan hipótesis, diseñan experimentos y producen informes estructurados. A través de los fragmentos que se mencionan a continuación, vemos cómo surge de forma natural un proceso de agencia que nos permite explorar una cuestión científica desde la curiosidad inicial hasta un análisis completo dentro de un sistema único e integrado. Consulta los CÓDIGOS COMPLETOS aquí.

importar sistema, subproceso def install_deps(): paquetes = [“transformers”, “scikit-learn”, “numpy”]
subproceso.check_call([sys.executable, “-m”, “pip”, “install”, “-q”] + paquetes) intente: desde transformadores importe AutoTokenizer, AutoModelForSeq2SeqLM desde sklearn.feature_extraction.text importe TfidfVectorizer desde sklearn.metrics.pairwise importe cosine_similarity importe numpy como np excepto ImportError: install_deps() desde transformadores importe AutoTokenizer, AutoModelForSeq2SeqLM desde sklearn.feature_extraction.text importar TfidfVectorizer desde sklearn.metrics.pairwise importar cosine_similarity importar numpy como np desde clases de datos importar clase de datos desde escribir importar Lista, Dict, Cualquier np.random.seed(42) LITERATURA = [
{“id”: “P1″,”title”: “Self-Supervised Protein Language Models for Structure Prediction”,”field”: “computational biology”,
“abstract”: “We explore transformer-based protein language models trained on millions of sequences. The models learn residue-level embeddings that improve secondary structure prediction and stability estimation.”},
{“id”: “P2″,”title”: “CRISPR Off-Target Detection Using Deep Learning”,”field”: “genome editing”,
“abstract”: “We propose a convolutional neural network architecture for predicting CRISPR-Cas9 off-target effects directly from genomic sequences, achieving state-of-the-art accuracy on GUIDE-seq datasets.”},
{“id”: “P3″,”title”: “Foundation Models for Scientific Equation Discovery”,”field”: “scientific ML”,
“abstract”: “Large language models are combined with symbolic regression to recover governing equations from noisy experimental observations in physics and fluid dynamics.”},
{“id”: “P4″,”title”: “Active Learning for Materials Property Optimization”,”field”: “materials science”,
“abstract”: “We integrate Bayesian optimization with graph neural networks to actively select candidate materials that maximize target properties while reducing experimental cost.”},
{“id”: “P5″,”title”: “Graph-Based Retrieval for Cross-Domain Literature Review”,”field”: “NLP for science”,
“abstract”: “We construct a heterogeneous citation and concept graph over multi-domain scientific papers and show that graph-aware retrieval improves cross-domain literature exploration.”},
]

corpus_textos = [p[“abstract”] + ” ” + p[“title”] para p en LITERATURA]vectorizer = TfidfVectorizer(stop_words=”english”) corpus_matrix = vectorizer.fit_transform(corpus_texts) MODEL_NAME = “google/flan-t5-small” tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME) def generate_text(prompt: str, max_new_tokens: int = 256) -> str: entradas = tokenizer(prompt, return_tensors=”pt”, truncation=True) salidas = model.generate(**inputs, max_new_tokens=max_new_tokens, num_beams=4, early_stopping=True) return tokenizer.decode(salidas[0]skip_special_tokens=Verdadero)

Sentamos las bases de nuestro agente científico cargando bibliotecas, preparando el corpus de literatura e inicializando nuestro modelo de lenguaje. Construimos el vectorizador TF-IDF e incorporamos todos los resúmenes para luego recuperar artículos relevantes. Con el modelo cargado y los datos estructurados, creamos la columna vertebral computacional para todo lo que sigue. Consulta los CÓDIGOS COMPLETOS aquí.

@dataclass clase PaperHit: papel: Dict[str, Any]
puntuación: clase flotante Agente de literatura: def __init__(self, vectorizer, corpus_matrix, papers: Lista[Dict[str, Any]]): self.vectorizer = vectorizer self.corpus_matrix = corpus_matrix self.papers = papers def search(self, query: str, k: int = 3) -> Lista[PaperHit]: q_vec = self.vectorizer.transform([query]) sims = coseno_similaridad(q_vec, self.corpus_matrix)[0]
idxs = np.argsort(-sims)[:k]
golpes = [PaperHit(self.papers[i]flotar (sims[i])) para i en idxs]devolver resultados

Implementamos el componente de búsqueda de literatura de nuestro agente. Convertimos las consultas de los usuarios en un espacio vectorial e identificamos los artículos científicos más relevantes mediante similitud de cosenos. A través de esto, le damos a nuestro sistema la capacidad de basar su razonamiento en el trabajo previo más parecido. Consulta los CÓDIGOS COMPLETOS aquí.

@dataclass clase ExperimentPlan: sistema: hipótesis str: variables str: Dict[str, Any]
protocolo: Lista[str]

@dataclass clase ExperimentResult: plan: Métricas de ExperimentPlan: Dict[str, float]

clase ExperimentAgent: def design_experiment(self, pregunta: str, hipótesis: str, visitas: Lista[PaperHit]) -> ExperimentPlan: top_field = visitas[0].papel[“field”] si golpea el protocolo “ciencia computacional” = [
f”Construct dataset combining ideas from: {‘, ‘.join(h.paper[‘id’] para h en visitas)}.”, “Dividir datos en tren/validación/prueba.”, “Comparar el modelo de referencia con el modelo aumentado que implementa la hipótesis.”, “Evaluar usando métricas apropiadas y realizar análisis de ablación.”, ]variables = { “baseline_model”: “sequence CNN”, “augmented_model”: “modelo de lenguaje de proteínas + CNN”, “n_train_samples”: 5000, “n_validation_samples”: 1000, “metric”: “AUROC”, } sistema = f”{top_field} sistema relacionado con: {pregunta}” return ExperimentPlan(sistema=sistema, hipótesis=hipótesis, variables=variables, protocolo=protocolo) def run_experiment(self, plan: ExperimentPlan) -> ExperimentResult: base = 0,78 + 0,02 * np.random.randn() ganancia = abs(0,05 + 0.01 * np.random.randn()) métricas = { “baseline_AUROC”: ronda(base, 3), “augmented_AUROC”: ronda(base + ganancia, 3), “estimated_gain”: ronda(ganancia, 3), } devuelve ExperimentResult(plan=plan, métricas=métricas)

Diseñamos y simulamos experimentos basados ​​en la literatura recuperada y las hipótesis generadas. Definimos variables automáticamente, construimos un protocolo y generamos métricas sintéticas que imitan la dinámica de una evaluación científica real. Esto nos permite pasar de ideas teóricas a un plan experimental viable. Consulta los CÓDIGOS COMPLETOS aquí.

clase ReportAgent: def write_report(self, pregunta: str, visitas: Lista[PaperHit]plan: ExperimentPlan, resultado: ExperimentResult) -> str: related_work = “\n”.join(f”- {h.paper[‘title’]} ({h.papel[‘field’]})” para h en visitas) protocol_str = “\n”.join(f”- {step}” para paso en plan.protocol) Prompt = f””” Usted es un asistente de investigación de IA que escribe un informe conciso de estilo investigación. Pregunta de investigación: {question} Hipótesis: {plan.hypothesis} Trabajo previo relevante: { related_work} Experimento planificado: Sistema: {plan.system} Variables: {plan.variables} Protocolo: {protocol_str} Resultados simulados: {result.metrics} Escriba un informe claro con las siguientes secciones: 1. Antecedentes 2. Enfoque propuesto 3. Configuración experimental 4. Resultados y discusión 5. Limitaciones y trabajo futuro “”” devolver generar_texto(prompt.strip(), max_new_tokens=320)

Generamos un informe completo de estilo investigación utilizando el LLM. Reunimos la hipótesis, el protocolo, los resultados y el trabajo relacionado en un documento estructurado con secciones claramente definidas. Esto nos permite convertir los resultados brutos del oleoducto en una comunicación científica refinada. Consulta los CÓDIGOS COMPLETOS aquí.

clase Agente científico: def __init__(self): self.lit_agent = Agente de literatura(vectorizador, corpus_matrix, LITERATURA) self.exp_agent = Agente de experimentos() self.report_agent = Agente de informes() def proponer_hipótesis(self, pregunta: str, visitas: Lista[PaperHit]) -> cadena: contexto = ” “.join(h.papel[“abstract”] for h in hits) Prompt = f””” Eres un científico de IA. Dada una pregunta de investigación y resúmenes relacionados, propone una hipótesis única y comprobable en 2 o 3 oraciones. Pregunta de investigación: {question} Resúmenes relacionados: {context} “”” return generate_text(prompt.strip(), max_new_tokens=96) def run_pipeline(self, question: str) -> str: hits = self.lit_agent.search(question, k=3) hipótesis = self.propose_hypothesis(pregunta, resultados) plan = self.exp_agent.design_experiment(pregunta, hipótesis, resultados) resultado = self.exp_agent.run_experiment(plan) report = self.report_agent.write_report(pregunta, resultados, plan, resultado) return report if __name__ == “__main__”: research_question = (“¿Cómo pueden mejorar las incrustaciones de modelos de lenguaje de proteínas? ¿Predicción ” “fuera del objetivo de CRISPR en comparación con líneas de base de CNN de solo secuencia?” ) agente = ScientificAgent() final_report = agent.run_pipeline(research_question) print(final_report)

Orquestamos todo el proceso, buscamos en la literatura, generamos una hipótesis, diseñamos el experimento, ejecutamos la simulación y redactamos el informe. Luego ejecutamos el sistema sobre una pregunta de investigación real y observamos el flujo de trabajo completo en acción. Este paso reúne todos los módulos en un agente científico unificado.

En conclusión, vemos cómo una base de código compacta puede evolucionar hasta convertirse en un co-investigador de IA funcional capaz de buscar, razonar, simular y resumir. Entendemos cómo cada fragmento contribuye al proceso completo y cómo los componentes agentes se amplifican entre sí cuando se combinan. Además, nos colocamos en una posición sólida para ampliar el agente con fuentes bibliográficas más ricas, modelos más realistas y una lógica experimental más sofisticada, impulsando nuestra exploración científica aún más con cada iteración.

Consulta los CÓDIGOS COMPLETOS aquí. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Asif Razzaq es el director ejecutivo de Marktechpost Media Inc.. Como empresario e ingeniero visionario, Asif está comprometido a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, Marktechpost, que se destaca por su cobertura en profundidad del aprendizaje automático y las noticias sobre aprendizaje profundo que es técnicamente sólida y fácilmente comprensible para una amplia audiencia. La plataforma cuenta con más de 2 millones de visitas mensuales, lo que ilustra su popularidad entre el público.

🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.