czty's picture
Add files using upload-large-folder tool
c6856c9 verified
Raw
History Blame Contribute Delete
4.49 kB
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
EXP_ROOT="${ROOT}/experiments/ablation"
RUNNER="${ROOT}/run_bioagent_bench.py"
EVALUATOR="${ROOT}/evaluate_bioagent_bench.py"
BIOAGENT_BENCH_ROOT="$(cd "${ROOT}/.." && pwd)/bioagent-bench"
PYTHON_BIN="${BIOMANUS_PYTHON:-/225040511/miniconda3/envs/biomni_e1/bin/python}"
GRAPH_DIR="${ROOT}/graph_outputs/mcp_generated_graph_all_20260522_124110"
BACKGROUND=0
VARIANT="all"
FORCE=0
declare -a TASK_ARGS=("--all")
TASK_MODE_SET=0
while [[ $# -gt 0 ]]; do
case "$1" in
--background) BACKGROUND=1; shift ;;
--foreground) BACKGROUND=0; shift ;;
--variant) VARIANT="$2"; shift 2 ;;
--task)
if [[ "${TASK_MODE_SET}" -eq 0 ]]; then
TASK_ARGS=()
TASK_MODE_SET=1
fi
TASK_ARGS+=("--task" "$2")
shift 2
;;
--force-rerun) FORCE=1; shift ;;
*) echo "Unknown argument: $1" >&2; exit 2 ;;
esac
done
if [[ "${BACKGROUND}" -eq 1 ]]; then
mkdir -p "${EXP_ROOT}/logs"
LOG="${EXP_ROOT}/logs/bioagentbench_ablation_$(date -u +%Y%m%d_%H%M%S).log"
SCRIPT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")"
CMD=("${SCRIPT}" "--foreground" "--variant" "${VARIANT}")
if [[ "${FORCE}" -eq 1 ]]; then CMD+=("--force-rerun"); fi
nohup "${CMD[@]}" > "${LOG}" 2>&1 < /dev/null &
echo "Started BioAgentBench ablation in background."
echo "PID: $!"
echo "Log: ${LOG}"
exit 0
fi
if [[ -f "${ROOT}/.env" ]]; then
# shellcheck disable=SC1090
source "${ROOT}/.env"
fi
if [[ -n "${DEEPSEEK_API_KEY:-}" ]]; then
export BIOMNI_LLM_PROVIDER="${BIOMNI_LLM_PROVIDER:-deepseek}"
export DEEPSEEK_BASE_URL="${DEEPSEEK_BASE_URL:-https://api.deepseek.com/v1}"
export DEEPSEEK_MODEL_NAME="${DEEPSEEK_MODEL_NAME:-deepseek-chat}"
export BIOMNI_SOURCE="${BIOMNI_SOURCE:-Custom}"
export BIOMNI_LLM="${BIOMNI_LLM:-${DEEPSEEK_MODEL_NAME}}"
export BIOMNI_CUSTOM_BASE_URL="${BIOMNI_CUSTOM_BASE_URL:-${DEEPSEEK_BASE_URL}}"
export BIOMNI_CUSTOM_API_KEY="${BIOMNI_CUSTOM_API_KEY:-${DEEPSEEK_API_KEY}}"
fi
if [[ -n "${BIOMNI_CUSTOM_BASE_URL:-}" && ! "${BIOMNI_CUSTOM_BASE_URL}" =~ ^https?:// ]]; then
export BIOMNI_CUSTOM_BASE_URL="${DEEPSEEK_BASE_URL:-https://api.deepseek.com/v1}"
fi
if [[ -n "${DEEPSEEK_BASE_URL:-}" && ! "${DEEPSEEK_BASE_URL}" =~ ^https?:// ]]; then
export DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"
fi
run_variant() {
local key="$1"
local label="$2"
shift 2
local runs_root="${EXP_ROOT}/results/${key}/bioagentbench"
local eval_json="${EXP_ROOT}/results/${key}/bioagentbench_evaluation.json"
mkdir -p "${runs_root}"
echo "=== BioAgentBench ${label} ==="
"${PYTHON_BIN}" "${RUNNER}" \
"${TASK_ARGS[@]}" \
--output-root "${runs_root}" \
--mcp-graph "${GRAPH_DIR}" \
--executable-mcp-only \
--timeout-seconds "${BIOMANUS_BIOAGENT_TIMEOUT_SECONDS:-1200}" \
"$@"
"${PYTHON_BIN}" "${EVALUATOR}" \
--all \
--runs-root "${runs_root}" \
--dataset-root "${BIOAGENT_BENCH_ROOT}/dataset" \
--judge-mode rule \
--output "${eval_json}"
}
case "${VARIANT}" in
biomanus)
run_variant "biomanus" "full" --use-graph-retriever --use-mcp --mcp-retrieval-mode graph
;;
mcp_flat)
run_variant "mcp_flat" "MCP + flat retrieval" --use-graph-retriever --use-mcp --mcp-retrieval-mode flat
;;
mcp_metadata)
run_variant "mcp_metadata" "MCP + metadata retrieval" --use-graph-retriever --use-mcp --mcp-retrieval-mode metadata
;;
minus_graph)
run_variant "minus_graph" "minus graph" --no-graph-retriever --use-mcp
;;
minus_mcp)
run_variant "minus_mcp" "minus MCP" --use-graph-retriever --no-mcp
;;
minus_mcp_graph)
run_variant "minus_mcp_graph" "minus MCP and graph" --no-graph-retriever --no-mcp
;;
all)
run_variant "biomanus" "full" --use-graph-retriever --use-mcp --mcp-retrieval-mode graph
run_variant "mcp_flat" "MCP + flat retrieval" --use-graph-retriever --use-mcp --mcp-retrieval-mode flat
run_variant "mcp_metadata" "MCP + metadata retrieval" --use-graph-retriever --use-mcp --mcp-retrieval-mode metadata
run_variant "minus_graph" "minus graph" --no-graph-retriever --use-mcp
run_variant "minus_mcp" "minus MCP" --use-graph-retriever --no-mcp
run_variant "minus_mcp_graph" "minus MCP and graph" --no-graph-retriever --no-mcp
;;
*)
echo "Unknown variant: ${VARIANT}" >&2
exit 2
;;
esac