11 KiB
Biomni API Reference
Comprehensive API documentation for the biomni framework.
A1 Agent Class
The A1 class is the primary interface for interacting with biomni.
Initialization
from biomni.agent import A1
agent = A1(
path: str, # Path to data lake directory
llm: str, # LLM model identifier
verbose: bool = True, # Enable verbose logging
mcp_config: str = None # Path to MCP server configuration
)
Parameters:
-
path(str, required) - Directory path for biomni data lake (~11GB). Data is automatically downloaded on first use if not present. -
llm(str, required) - LLM model identifier. Options include:'claude-sonnet-4-20250514'- Recommended for balanced performance'claude-opus-4-20250514'- Maximum capability'gpt-4','gpt-4-turbo'- OpenAI models'gemini-2.0-flash-exp'- Google Gemini'llama-3.3-70b-versatile'- Via Groq- Custom model endpoints via provider configuration
-
verbose(bool, optional, default=True) - Enable detailed logging of agent reasoning, tool use, and code execution. -
mcp_config(str, optional) - Path to MCP (Model Context Protocol) server configuration file for external tool integration.
Example:
# Basic initialization
agent = A1(path='./biomni_data', llm='claude-sonnet-4-20250514')
# With MCP integration
agent = A1(
path='./biomni_data',
llm='claude-sonnet-4-20250514',
mcp_config='./.biomni/mcp_config.json'
)
Core Methods
go(query: str) -> str
Execute a biomedical research task autonomously.
result = agent.go(query: str)
Parameters:
query(str) - Natural language description of the biomedical task to execute
Returns:
str- Final answer or analysis result from the agent
Behavior:
- Decomposes query into executable sub-tasks
- Retrieves relevant knowledge from integrated databases
- Generates and executes Python code for analysis
- Iterates on results until task completion
- Returns final synthesized answer
Example:
result = agent.go("""
Identify genes associated with Alzheimer's disease from GWAS data.
Perform pathway enrichment analysis on top hits.
""")
print(result)
save_conversation_history(output_path: str, format: str = 'pdf')
Save complete conversation history including task, reasoning, code, and results.
agent.save_conversation_history(
output_path: str,
format: str = 'pdf'
)
Parameters:
output_path(str) - File path for saved reportformat(str, optional, default='pdf') - Output format:'pdf','html', or'markdown'
Example:
agent.save_conversation_history('reports/alzheimers_gwas_analysis.pdf')
reset()
Reset agent state and clear conversation history.
agent.reset()
Use when starting a new independent task to clear previous context.
Example:
# Task 1
agent.go("Analyze dataset A")
agent.save_conversation_history("task1.pdf")
# Reset for fresh context
agent.reset()
# Task 2 - independent of Task 1
agent.go("Analyze dataset B")
Configuration via default_config
Global configuration parameters accessible via biomni.config.default_config.
from biomni.config import default_config
# LLM Configuration
default_config.llm = "claude-sonnet-4-20250514"
default_config.llm_temperature = 0.7
# Execution Parameters
default_config.timeout_seconds = 1200 # 20 minutes
default_config.max_iterations = 50 # Max reasoning loops
default_config.max_tokens = 4096 # Max tokens per LLM call
# Code Execution
default_config.enable_code_execution = True
default_config.sandbox_mode = False # Enable for restricted execution
# Data and Caching
default_config.data_cache_dir = "./biomni_cache"
default_config.enable_caching = True
Key Parameters:
-
timeout_seconds(int, default=1200) - Maximum time for task execution. Increase for complex analyses. -
max_iterations(int, default=50) - Maximum agent reasoning loops. Prevents infinite loops. -
enable_code_execution(bool, default=True) - Allow agent to execute generated code. Disable for code generation only. -
sandbox_mode(bool, default=False) - Enable sandboxed code execution (requires additional setup).
BiomniEval1 Evaluation Framework
Framework for benchmarking agent performance on biomedical tasks.
Initialization
from biomni.eval import BiomniEval1
evaluator = BiomniEval1(
dataset_path: str = None, # Path to evaluation dataset
metrics: list = None # Evaluation metrics to compute
)
Example:
evaluator = BiomniEval1()
Methods
evaluate(task_type: str, instance_id: str, answer: str) -> float
Evaluate agent answer against ground truth.
score = evaluator.evaluate(
task_type: str, # Task category
instance_id: str, # Specific task instance
answer: str # Agent-generated answer
)
Parameters:
task_type(str) - Task category:'crispr_design','scrna_analysis','gwas_interpretation','drug_admet','clinical_diagnosis'instance_id(str) - Unique identifier for task instance from datasetanswer(str) - Agent's answer to evaluate
Returns:
float- Evaluation score (0.0 to 1.0)
Example:
# Generate answer
result = agent.go("Design CRISPR screen for autophagy genes")
# Evaluate
score = evaluator.evaluate(
task_type='crispr_design',
instance_id='autophagy_001',
answer=result
)
print(f"Score: {score:.2f}")
load_dataset() -> dict
Load the Biomni-Eval1 benchmark dataset.
dataset = evaluator.load_dataset()
Returns:
dict- Dictionary with task instances organized by task type
Example:
dataset = evaluator.load_dataset()
for task_type, instances in dataset.items():
print(f"{task_type}: {len(instances)} instances")
run_benchmark(agent: A1, task_types: list = None) -> dict
Run full benchmark evaluation on agent.
results = evaluator.run_benchmark(
agent: A1,
task_types: list = None # Specific task types or None for all
)
Returns:
dict- Results with scores, timing, and detailed metrics per task
Example:
results = evaluator.run_benchmark(
agent=agent,
task_types=['crispr_design', 'scrna_analysis']
)
print(f"Overall accuracy: {results['mean_score']:.2f}")
print(f"Average time: {results['mean_time']:.1f}s")
Data Lake API
Access integrated biomedical databases programmatically.
Gene Database Queries
from biomni.data import GeneDB
gene_db = GeneDB(path='./biomni_data')
# Query gene information
gene_info = gene_db.get_gene('BRCA1')
# Returns: {'symbol': 'BRCA1', 'name': '...', 'function': '...', ...}
# Search genes by pathway
pathway_genes = gene_db.search_by_pathway('DNA repair')
# Returns: List of gene symbols in pathway
# Get gene interactions
interactions = gene_db.get_interactions('TP53')
# Returns: List of interacting genes with interaction types
Protein Structure Access
from biomni.data import ProteinDB
protein_db = ProteinDB(path='./biomni_data')
# Get AlphaFold structure
structure = protein_db.get_structure('P38398') # BRCA1 UniProt ID
# Returns: Path to PDB file or structure object
# Search PDB database
pdb_entries = protein_db.search_pdb('kinase', resolution_max=2.5)
# Returns: List of PDB IDs matching criteria
Clinical Data Access
from biomni.data import ClinicalDB
clinical_db = ClinicalDB(path='./biomni_data')
# Query ClinVar variants
variant_info = clinical_db.get_variant('rs429358') # APOE4 variant
# Returns: {'significance': '...', 'disease': '...', 'frequency': ...}
# Search OMIM for disease
disease_info = clinical_db.search_omim('Alzheimer')
# Returns: List of OMIM entries with gene associations
Literature Search
from biomni.data import LiteratureDB
lit_db = LiteratureDB(path='./biomni_data')
# Search PubMed abstracts
papers = lit_db.search('CRISPR screening cancer', max_results=10)
# Returns: List of paper dictionaries with titles, abstracts, PMIDs
# Get citations for paper
citations = lit_db.get_citations('PMID:12345678')
# Returns: List of citing papers
MCP Server Integration
Extend biomni with external tools via Model Context Protocol.
Configuration Format
Create .biomni/mcp_config.json:
{
"servers": {
"fda-drugs": {
"command": "python",
"args": ["-m", "mcp_server_fda"],
"env": {
"FDA_API_KEY": "${FDA_API_KEY}"
}
},
"web-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
}
}
}
}
Using MCP Tools in Tasks
# Initialize with MCP config
agent = A1(
path='./data',
llm='claude-sonnet-4-20250514',
mcp_config='./.biomni/mcp_config.json'
)
# Agent can now use MCP tools automatically
result = agent.go("""
Search for FDA-approved drugs targeting EGFR.
Get their approval dates and indications.
""")
# Agent uses fda-drugs MCP server automatically
Error Handling
Common exceptions and handling strategies:
from biomni.exceptions import (
BiomniException,
LLMError,
CodeExecutionError,
DataNotFoundError,
TimeoutError
)
try:
result = agent.go("Complex biomedical task")
except TimeoutError:
# Task exceeded timeout_seconds
print("Task timed out. Consider increasing timeout.")
default_config.timeout_seconds = 3600
except CodeExecutionError as e:
# Generated code failed to execute
print(f"Code execution error: {e}")
# Review generated code in conversation history
except DataNotFoundError:
# Required data not in data lake
print("Data not found. Ensure data lake is downloaded.")
except LLMError as e:
# LLM API error
print(f"LLM error: {e}")
# Check API keys and rate limits
Best Practices
Efficient API Usage
- Reuse agent instances for related tasks to maintain context
- Set appropriate timeouts based on task complexity
- Use caching to avoid redundant data downloads
- Monitor iterations to detect reasoning loops early
Production Deployment
from biomni.agent import A1
from biomni.config import default_config
import logging
# Configure logging
logging.basicConfig(level=logging.INFO)
# Production settings
default_config.timeout_seconds = 3600
default_config.max_iterations = 100
default_config.sandbox_mode = True # Enable sandboxing
# Initialize with error handling
try:
agent = A1(path='/data/biomni', llm='claude-sonnet-4-20250514')
result = agent.go(task_query)
agent.save_conversation_history(f'reports/{task_id}.pdf')
except Exception as e:
logging.error(f"Task {task_id} failed: {e}")
# Handle failure appropriately
Memory Management
For large-scale analyses:
# Process datasets in chunks
chunk_results = []
for chunk in dataset_chunks:
agent.reset() # Clear memory between chunks
result = agent.go(f"Analyze chunk: {chunk}")
chunk_results.append(result)
# Combine results
final_result = combine_results(chunk_results)