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 papers