mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-09-23 00:43:18 +00:00
168 lines
No EOL
4.9 KiB
Markdown
168 lines
No EOL
4.9 KiB
Markdown
---
|
|
jupytext:
|
|
formats: md:myst
|
|
text_representation:
|
|
extension: .md
|
|
format_name: myst
|
|
format_version: 0.13
|
|
jupytext_version: 1.11.5
|
|
kernelspec:
|
|
display_name: Python 3
|
|
language: python
|
|
name: python3
|
|
---
|
|
|
|
# FrozenLake
|
|
Experiment Quick Start Guide
|
|
|
|
This guide helps you quickly set up and run FrozenLake experiments with ReMe integration. The FrozenLake experiment demonstrates how task memory can improve an agent's performance in a navigation task.
|
|
|
|
## Environment Setup
|
|
|
|
### 1. Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/agentscope-ai/ReMe.git
|
|
cd ReMe/cookbook/frozenlake
|
|
```
|
|
|
|
### 2. FrozenLake Environment Setup
|
|
|
|
Install Gymnasium for FrozenLake environment:
|
|
|
|
```bash
|
|
pip install gymnasium
|
|
```
|
|
|
|
This will install:
|
|
- gymnasium - for the FrozenLake environment
|
|
- ray - for parallel execution
|
|
- openai - for LLM API access
|
|
- other dependencies
|
|
|
|
### 3. Start ReMe Service
|
|
|
|
If you haven't installed ReMe yet, follow these steps:
|
|
```bash
|
|
# Go back to the project root
|
|
cd ../..
|
|
|
|
# Create a virtual environment (optional)
|
|
conda create -p ./reme-env python==3.10
|
|
conda activate ./reme-env
|
|
|
|
# Install ReMe
|
|
pip install .
|
|
```
|
|
|
|
Launch the ReMe service to enable memory library functionality:
|
|
|
|
```bash
|
|
reme \
|
|
backend=http \
|
|
http.port=8002 \
|
|
llm.default.model_name=qwen-max-2025-01-25 \
|
|
embedding_model.default.model_name=text-embedding-v4 \
|
|
vector_store.default.backend=local
|
|
```
|
|
|
|
Add your api key for agent:
|
|
```bash
|
|
export OPENAI_API_KEY="xxx"
|
|
export OPENAI_BASE_URL="xxx"
|
|
```
|
|
|
|
|
|
## Run Experiments
|
|
|
|
### 1. Quick Test: Performance Evaluation Only (Default)
|
|
|
|
Run the main experiment script to test agent performance using existing memory:
|
|
|
|
```bash
|
|
cd cookbook/frozenlake
|
|
python run_frozenlake.py
|
|
```
|
|
|
|
**What this does:**
|
|
- Tests the agent on randomly generated FrozenLake maps
|
|
- Uses the default memory library (`frozenlake_no_slippery`)
|
|
- Evaluates performance with multiple runs for statistical significance
|
|
- Results are automatically saved to `./exp_result/` directory
|
|
|
|
### 2. Advanced: Training + Testing (Memory Generation)
|
|
|
|
To create new memories through training and then test performance:
|
|
|
|
You can modify the experiment parameters directly in the `run_frozenlake.py` file. The main parameters are in the `main()` function:
|
|
|
|
```{code-cell}
|
|
def main():
|
|
experiment_name = "frozenlake_no_slippery" # Name of the experiment
|
|
max_workers = 4 # Number of parallel workers
|
|
training_runs = 4 # Runs per training map
|
|
num_training_maps = 50 # Number of maps for training
|
|
test_runs = 1 # Runs per test configuration
|
|
num_test_maps = 100 # Number of test maps
|
|
is_slippery = False # Enable slippery mode
|
|
```
|
|
|
|
Key parameters to consider:
|
|
- `experiment_name`: Used as the workspace ID for task memory
|
|
- `is_slippery`: When True, agent movement becomes stochastic (harder)
|
|
- `max_workers`: Increase for faster execution on multi-core systems
|
|
|
|
### 3. View Experiment Results
|
|
|
|
After running experiments, analyze the statistical results:
|
|
|
|
```bash
|
|
python run_exp_statistic.py
|
|
```
|
|
|
|
**What this script does:**
|
|
- Processes all result files in `./exp_result/`
|
|
- Calculates success rates and performance metrics
|
|
- Generates a summary table showing performance comparisons
|
|
- Analyzes the effect of task memory on performance
|
|
- Saves results to `frozenlake_summary.csv`
|
|
|
|
## Understanding the Implementation
|
|
|
|
### Key Components
|
|
|
|
1. **FrozenLakeReactAgent** (`frozenlake_react_agent.py`)
|
|
- Implements a ReAct agent that interacts with the FrozenLake environment
|
|
- Handles task memory retrieval and storage
|
|
- Uses LLM (via OpenAI API) for decision making
|
|
|
|
2. **Experiment Runner** (`run_frozenlake.py`)
|
|
- Manages the overall experiment flow
|
|
- Handles training and testing phases
|
|
- Uses Ray for parallel execution
|
|
|
|
3. **Map Manager** (`map_manager.py`)
|
|
- Generates and manages test maps
|
|
- Ensures consistent evaluation across experiments
|
|
|
|
4. **Statistics Analyzer** (`run_exp_statistic.py`)
|
|
- Processes experiment results
|
|
- Calculates performance metrics
|
|
- Generates comparative analysis
|
|
|
|
### Output Files
|
|
|
|
- `./exp_result/*_training.jsonl`: Results from training phase
|
|
- `./exp_result/*_test_no_memory.jsonl`: Test results without task memory
|
|
- `./exp_result/*_test_with_memory.jsonl`: Test results with task memory
|
|
- `./exp_result/frozenlake_summary.csv`: Statistical summary
|
|
|
|
### Task Memory Mechanism
|
|
|
|
The task memory system works as follows:
|
|
|
|
1. **Memory Creation**: During training, successful trajectories are sent to the ReMe service
|
|
2. **Memory Retrieval**: During testing, the agent queries relevant memories based on the current map
|
|
3. **Memory Application**: The agent uses retrieved memories to guide its decision-making
|
|
|
|
The experiment demonstrates how task memory can significantly improve performance, especially in challenging environments like the slippery FrozenLake. |