Bufang Yang†
Lilin Xu†
Liekang Zeng
Kaiwei Liu
Siyang Jiang
Wenrui Lu
Hongkai Chen
Xiaofan Jiang
Guoliang Xing
Zhenyu Yan
The Chinese University of Hong Kong Columbia University
ContextAgent/
├── src/
│ ├── icl/
│ │ ├── inference_api.py
│ │ └── inference.py
│ ├── sft/
│ │ ├── train.py
│ │ └── eval_sft.sh
│ ├── tools/
│ ├── utils/
│ └── config.py
├── data/
│ └── cab/
├── prompt/
├── scripts/
├── LLaMA-Factory/
├── setup.py
├── pyproject.toml
├── requirements.txt
├── environment.yml
# Clone the repository
git clone https://github.com/bf-yang/ContextAgent.git
cd ContextAgent
# Install the package
pip install -e .
# Install LLaMA-Factory (required for SFT experiments)
pip install -e ./LLaMA-Factory# Clone the repository
git clone https://github.com/bf-yang/ContextAgent.git
cd ContextAgent
# Create conda environment from environment file
conda env create -f environment.yml
conda activate contextagent
# Install the package
pip install -e .ContextAgent requires several API keys for external tool integrations. Configure them using one of the following supported methods:
Option 1: Export variables inline (no script)
# Azure OpenAI Configuration
export AZURE_OPENAI_API_KEY="your_azure_openai_api_key_here"
export AZURE_OPENAI_ENDPOINT="https://your-resource-name.openai.azure.com/"
export AZURE_OPENAI_API_VERSION="2024-02-15-preview"
# External API Keys for Tools
export GOOGLE_MAP_API_KEY="your_google_maps_api_key_here"
export AMAP_API_KEY="your_amap_api_key_here"
export LOCATIONIQ_API_KEY="your_locationiq_api_key_here"
export SERPAPI_KEY="your_serpapi_key_here"
export GOOGLE_CALENDAR_ACCOUNT="your_google_calendar_account_here"
# Set GPU devices (optional)
export CUDA_VISIBLE_DEVICES=0,1 # Use GPUs 0 and 1Option 2: Source a shell script (recommended for convenience)
# Edit with your own credentials
$EDITOR scripts/env/export_env.sh
# Load variables into your shell
source scripts/env/export_env.shThe following provides scripts for evaluating different LLMs under In-Context Learning (ICL) settings. It supports multiple base models (e.g., GPT-4o, Qwen, LLaMA, and DeepSeek series) and two execution modes: live and sandbox.
-
Open-source models. Test open-source LLMs (e.g., Llama-3.1-8B-Instruct and Qwen2.5-7BInstruct).
-
Python (direct)
python src/icl/inference.py --model <MODEL_NAME> --mode sandbox
-
Shell script
bash scripts/icl/run_infer_local.sh
-
-
Proprietary LLMs. Use API inference for proprietary LLMs (e.g., GPT-4o).
-
Python (direct)
python src/icl/inference_api.py --model <MODEL_NAME> --mode sandbox
-
Shell script
bash scripts/icl/run_infer_api.sh
-
| Argument | Type | Description |
|---|---|---|
--model |
string | Base model to evaluate (e.g., qwen2.5:latest, llama3.1:8b, deepseek-r1) |
--mode |
string | • live – the agent actually executes external tools and APIs • sandbox – the agent uses predefined sandboxed results without making real API calls |
- Metrics. After inference finishes, compute metrics per model. Run one command per model you want to score (don’t pass two models at once). Calculte score:
python src/calculate_scores.py --methods icl --model_base_icl <MODEL_NAME>
👉 For more details, see README.md.
Launch supervised fine-tuning (SFT) experiments via:
bash scripts/sft/run_sft_exp.sh
Note
What the script does
- Training – calls
LLaMA-Factory/experiments/cab_lora_train.sh(LoRA/SFT configs). - Evaluation – runs
scripts/sft/run_sft_eval.shto evaluate fine-tuned models.
Customize
- Edit
LLaMA-Factory/experiments/cab_lora_train.shto set the base model and SFT/LoRA parameters. - Edit
scripts/sft/run_sft_eval.shto choose the base model and evaluation mode.
Tip
- Keep the same base model name across training and evaluation for consistency.
👉 For more details, see README.md.
If you find our work and this codebase helpful, please consider starring this repo 🌟 and cite:
@article{yang2025contextagent,
title={ContextAgent: Context-Aware Proactive LLM Agents with Open-World Sensory Perceptions},
author={Yang, Bufang and Xu, Lilin and Zeng, Liekang and Liu, Kaiwei and Jiang, Siyang and Lu, Wenrui and Chen, Hongkai and Jiang, Xiaofan and Xing, Guoliang and Yan, Zhenyu},
journal={Advances in Neural Information Processing Systems},
volume={38},
pages={1--10},
year={2025}
}
