BioProAgent: Neuro-Symbolic Grounding for Constrained Scientific Planning
Organizations: School of AI for Science, Peking University · School of Electronic and Computer Engineering, Peking University · School of Computer Science, Peking University
Abstract
Large language models (LLMs) have demonstrated significant reasoning capabilities in scientific discovery but struggle to bridge the gap to physical execution in wet-labs. In these irreversible environments, probabilistic hallucinations are not merely incorrect; they can cause equipment damage or experimental failure. We propose BioProAgent, a neuro-symbolic framework that anchors probabilistic planning in a deterministic Finite State Machine (FSM). We introduce a State-Augmented Planning mechanism that enforces a rigorous Design-Verify-Rectify workflow, ensuring hardware compliance before execution. Furthermore, we address the context bottleneck inherent in complex device schemas by Semantic Symbol Grounding, reducing token consumption by ~6* through symbolic abstraction. In the extended BioProBench benchmark, BioProAgent achieves 95.6% physical compliance (compared to 21.0% for ReAct), demonstrating that neuro-symbolic constraints are essential for reliable autonomy in irreversible physical environments. Code: https://github.com/YuyangSunshine/bioproagent | Website: https://yuyangsunshine.github.io/BioPro-Project.
Figures & tables
| Signal Condition ( ) | Priority | Target State ( ) |
| 1 | RECTIFY_CODE | |
| 2 | RECTIFY_DRAFT | |
| 3 | DESIGN_DRAFT | |
| 4 | DESIGN_CODE | |
| 5 | VERIFY_DRAFT | |
| 6 | SUCCESS |
| Dimension | Evaluator | Key Metrics |
|---|---|---|
| Scientific | Semantic Match | ( ), ROUGE-L ( ) |
| LLM-as-a-Judge | ( ) | |
| Physical | Rule Engine | ( ), ( ) |
| Ground Truth | ( ), ( ) | |
| Efficiency | System Logs | ( ), Tokens ( ), Loop Rate ( ) |
| Subset A: Scientific Reasoning | Subset B: Hardware Execution | |||||||
| Method | Backbone | ROUGE-L | C_{s}{\color[rgb]{0,1,0}\dagger}\uparrow | Time (s) | ||||
| Direct | GPT-4o | 0.107 | 0.202 | 0.189 | 13.8 | 0.590 | 0.995 | 0.295 |
| Direct | Gemini-3-Flash | 0.130 | 0.247 | 0.322 | 12.1 | 0.576 | 0.996 | 0.287 |
| Direct | DeepSeek-V3 | 0.123 | 0.260 | 0.285 | 52.1 | 0.495 | 0.995 | 0.205 |
| Direct | Qwen3-30B-a3b | 0.124 | 0.249 | 0.201 | 20.0 | 0.509 | 0.988 | 0.222 |
| Direct | Kimi-k2-Instruct | 0.097 | 0.271 | 0.286 | 83.1 | 0.499 | 0.971 | 0.215 |
| Subset C: Long-Horizon Stability | Subset D: Error Correction | ||||||
|---|---|---|---|---|---|---|---|
| Method | Backbone | Succ. | Correction Succ. | Loop Rate | |||
| ReAct | Gemini-3-Flash | 88.9% | 0.114 | 0.217 | 0.0% | 0.000 | 40.0% |
| Reflexion | Gemini-3-Flash | 33.3% | 0.000 | 0.000 | 0.0% | 0.000 | 0.0% |
| AutoGPT | Gemini-3-Flash | 66.7% | 0.409 | 0.644 | 0.0% | 0.000 | 0.0% |
| BioProAgent | Gemini-3-Flash | 100.0% | 0.718 | 0.950 | 90.0% | 0.925 | 0.0% |
| Constraint | Design Violation ( ) | FSM Rectification ( ) |
|---|---|---|
| Physical ( ) | centrifuge(speed=‘25000g’) | centrifuge(speed=‘15000g’) |
| Trace | Exceeds rotor limit (15k) | Clamped to safety max |
| Symbol ( ) | transfer(source=‘buffer_x’) | transfer(source=‘trough_1’) |
| Trace | Grounding Fail (No ID) | Remapped to registry |
| Causal | seal_plate(); transfer(...) | transfer(...); seal_plate() |
| Trace | Blocked op (Sealed) | Reordered dependency |
| Subset A | Subset B | Subset C | Subset D | |
|---|---|---|---|---|
| Variant | ||||
| Full Model | 0.591 | 0.956 | 0.668 | 0.925 |
| w/o FSM | 0.262 | 0.049 | 0.000 | 0.782 |
| w/o Verification | 0.563 | 0.902 | 0.648 | 0.782 |
| w/o Knowledge | 0.561 | 0.889 | 0.657 | N/A |
| w/o Clarify | 0.403 | N/A | 0.632 | N/A |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Symbol | Definition | Description |
| Problem Formulation | ||
| Natural Language Intent | The initial user query describing the experimental objective. | |
| Environmental Context | The set of available lab hardware, reagents, and physical conditions. | |
| Protocol Space | The universal set of all possible protocol sequences. | |
| Optimal Protocol | The target executable sequence that maximizes scientific validity and physical compliance. | |
| Generation Probability | The probability distribution of generating the complete protocol sequence . | |
| Tool Name | Parameters | Function Description |
|---|---|---|
| Phase I: Design (Generation & Alignment) | ||
| generate_scientific_draft | query , exp_info , knowledge | Generates a natural language experimental protocol draft based on user intent. |
| align_draft_to_automation | draft , exp_info | Maps the approved draft to specific hardware operations (Intermediate step). |
| generate_machine_code | aligned_protocol , suggestion | Synthesizes executable JSON machine code. Accepts suggestions from the Rectify phase. |
| Phase II: Verify (Hierarchical Validation) | ||
| reflect_on_protocol | protocol_text , query | ( Scientific Reflector ) Reviews the draft for logic/controls via CoT. Output updates the ternary signal . |
| Priority | Signal Condition ( ) | Target State ( ) | Logic Description (DVR Flow) |
|---|---|---|---|
| 1 | RECTIFY_CODE | [Rectify] Safety Interlock : If Rule Engine ( ) detects a physical violation (Severity: HALT), immediately force a fix. | |
| 2 | RECTIFY_DRAFT | [Rectify] Scientific Review : If Reflector ( ) rejects the protocol logic (e.g., missing controls), require revision. | |
| 3 | DESIGN_DRAFT | [Design] Knowledge Ready : If knowledge is retrieved but no draft exists, enter drafting mode. | |
| 4 | DESIGN_CODE | [Design] Code Generation : Synthesize executable machine code directly from the verified and approved scientific draft. | |
| 5 | VERIFY_DRAFT | [Verify] Draft Review : Evaluate the newly generated protocol draft against scientific principles (Pending state). | |
| 6 | SUCCESS | [Finish] Completion : Code exists and passes all physical validations ( ). Task complete. |
| Device Category | Action Primitive | Parameters (Type: Constraint) | Physical Rules (Examples) |
|---|---|---|---|
| Centrifugation | Centrifuge | speed_g (int: ) time (duration: HH:MM:SS) temp_C (int: ) brake (enum: off, slow, fast) | 1. Speed must not exceed rotor limit ( ). 2. Temperature requires pre-cooling if C. |
| Thermal Control | Incubate | temp_C (int: ) shake_rpm (int: ) duration (time) | 1. Shaking prohibited if plate is unsealed. 2. Max temp depends on plate material (PS vs. PP). |
| Liquid Handling | Transfer | source (ID string) dest (ID string) volume_uL (float: ) tip_type (enum: p20, p300, p1000) | 1. Source volume must be aspiration volume + dead volume. 2. Tip type must match volume range. |
| PCR Cycling | Thermocycle | lid_temp (int: ) stages (list of [temp, time, cycles]) | 1. Lid temp must be reaction temp to prevent condensation. |
| Model Variant | Gemini | Kimi | GPT-4o |
|---|---|---|---|
| BioProAgent-Full | 0.591 | 0.597 | 0.515 |
| w/o Knowledge | 0.561 | 0.552 | 0.497 |
| w/o Clarify | 0.403 | 0.421 | 0.374 |
| w/o FSM | 0.262 | 0.285 | 0.105 |
| Correlation ( ) w/ Gemini | 1.00 | 0.84 | 0.91 |
| Benchmark Subset | Scale & Granularity | Evaluation Focus | Key Metrics |
|---|---|---|---|
| A: Scientific Drafting | 160 Protocols | Intent Reasoning | • Intent Alignment |
| (Cross-domain) | (approx. 3k tokens/doc) | Knowledge retrieval | • Scientific Logic Score |
| B: Automation Conversion | 41 Sub-Experiments | Local Code Mapping | • Parameter Accuracy |
| (Syn-Bio Focus) | (22 Device APIs) | Schema compliance | • API Validity |
| C: Long-Horizon Exec. | 9 Protocols | Global Orchestration | • Global Success Rate |
| (Full Pipeline) | (547 Total Steps) | State Persistence (Avg. 60.8 steps) | • ID Consistency |
| Category | Comparison Pair (vs. Full Model) | Mean Diff. | P-value |
| Baselines | ReAct | +0.136 | |
| AutoGPT | +0.162 | ||
| Reflexion | +0.152 | ||
| Ablations | w/o Knowledge | +0.030 | |
| w/o Clarify | +0.188 | ||
| w/o FSM | +0.329 |
| Task ID | Device Interaction Nodes | Atomic Operation Steps | Involved Consumables |
|---|---|---|---|
| Sample 1 | 15 | 55 | 31 |
| Sample 2 | 4 | 24 | 6 |
| Sample 3 | 8 | 16 | 17 |
| Sample 4 | 17 | 35 | 26 |
| Sample 5 | 18 | 55 | 42 |
| Sample 6 | 19 | 27 | 31 |
| Constraint Type | Design Violation ( ) | Interlock Trigger ( ) | FSM Rectification ( ) |
|---|---|---|---|
| Safety Alignment | op.centrifuge( speed=25,000g, duration=15min) | [HALT] Speed 25,000g exceeds rotor limit (Max: 15,000g). | op.centrifuge( speed=15,000g, duration=15min) # Clamped to safe limit |
| Resource Grounding | op.transfer( source=new_plate, vol=50) | [HALT] Resource ID new_plate not found in Registry . | op.transfer( source=plate_1, vol=50) # Mapped to valid grounded ID |
| Causal Rectification | op.seal_plate() op.add_reagent(vol=10) | [HALT] Cannot add_reagent to a sealed container (Physical Collision Risk). | op.add_reagent(vol=10) op.seal_plate() # Sequence causally reordered |
| Error Type | Counts | LCS Recall | ||
|---|---|---|---|---|
| Resource Grounding | 10 | 0.935 | 1.000 | 0.999 |
| Safety Alignment | 10 | 0.970 | 1.000 | 0.979 |
| Causal Rectification | 10 | 0.870 | 0.900 | 0.897 |
| Subset C | Subset D | |||||
| Method | Backbone | Succ. | Corr. Succ. | Time (s) | ||
| Direct | DeepSeek-V3.2-Think | 100.0% | 0.414 | 93.3% | 0.948 | 196.2 |
| Direct | Gemini-3-Pro-Think | 100.0% | 0.439 | 73.3% | 0.765 | 81.4 |
| BioProAgent | DeepSeek-V3.2-Think | 55.6% | 0.366 | 93.3% | 0.955 | 1313.3 |
| BioProAgent | Gemini-3-Pro-Think | 44.4% | 0.256 | 90.0% | 0.922 | 316.1 |
| BioProAgent | Gemini-3-Flash | 100.0% | 0.718 | 90.0% | 0.925 | 128.0 |
| Step | BioProAgent (Ours) | AutoGPT (Baseline) |
|---|---|---|
| 1 | [State: CLARIFY_INTENT ] Trigger: Action: clarify_experiment_scope(query=...) Output: "Sample Volume: 50uL, Kit ID: 10038" | [Thought] I need to find the protocol for metabolomics. Action: retrieve_knowledge(query="metabolomics prep") |
| 2 | [State: DESIGN_DRAFT ] Trigger: Action: generate_scientific_draft(...) Grounding ( ): Mapped "Kit_A" ID:10038 | [Thought] I found some docs. Now I need specific reagent list. Action: retrieve_knowledge(query="reagent list") |
| 3 | [State: VERIFY_DRAFT ] Trigger: Action: reflect_on_protocol(...) Result: Scientific Logic Approved ( ). | [Thought] I need to check the temperature settings. Action: retrieve_knowledge(query="temperature settings") |
| … | (Step 4-7: State transitions through DESIGN_CODE and Physical Rule Verification ) | (Repeated retrieval loops for 30+ steps…) |
| 8 / 45 | [State: SUCCESS ] Trigger: Result: Valid JSON Code committed. Task Success (Total Tokens: 10,329) | [Error] Max Context Exceeded. Result: Timeout / Fail. Task Failure (Total Tokens: 59,278) |
Autonomous Experimentation
Autonomous experimentation uses AI, active learning, and robotics to design, run, and interpret experiments with less human intervention.
See all 140 papersGrounding LLMs in Scientific Discovery via Embodied Actions
RunAgent: Interpreting Natural-Language Plans with Constraint-Guided Execution
IF, GOTO, FORALL). Beyond verifying syntactic and semantic verification of the step output, which is performed based on the specific instruction of each step, RunAgent autonomously derives and validates constraints based on the description of the task and its instance at each step. RunAgent also dynamically selects among LLM-based reasoning, tool usage, and code generation and execution (e.g., in Python), and incorporates error correction mechanisms to ensure correctness. Finally, RunAgent filters the context history by retaining only relevant information during the execution of each step. Evaluations on Natural-plan and SciBench Datasets demonstrate that RunAgent outperforms baseline LLMs and state-of-the-art PlanGEN methods.