- Combines 4 frameworks (Plan & Solve, Self Reflexion, CoT-SC, and ReAct)
- Basically the idea is to address the pitfalls of each of the frameworks by integrating them together and thus improve the overall benchmarks against datasets like WebShop, HotPotQA, etc.
- Plan & Solve (Planner Layer)
- Given a complex task, the first LLM call is to the Planner. Generates a high-level, multi-step plan.
- Self Reflexion (Context or ST/LT Mem)
- Takes the context of the actions so far which consists of the current trajectory of step i, and any notable experiences long term throughout the entire round. Also includes current step and overall task.
- Gets updated for every interaction with environment.
- LLM Evaluator
- Evaluates the LLM. If step success, moves to next step. If first iteration, error, or indefinite loop, itsends everything to the CoT-SC
- Worker (CoT-SC)
- Based on context, LLM proposes multiple reasoning and actions, and then chooses the best or the most frequent one.
- Execute action on Env.
- Send Observation to Context
- Loops until LLM Evaluator deems task as success.
The Github Standard Workflow:
- Use one main branch, typically called main or develop, as your single source of truth.
- When you want to add a feature (e.g., "implement the CoT-SC worker"), you create a feature branch from main (e.g., git checkout -b feature/cot-sc-worker).
- You work on that feature in its own branch. Once it's complete and tested, you merge it back into main.
- To mark the completion of a major phase, you use a Git Tag. So when Phase 1 is done, you'll tag that commit: git tag -a v1.0 -m "Phase 1: Updated ReAct complete".
Here is a complete summary of the standard Git workflow, from starting a new task to merging it back into the main project. This guide assumes your main branch is called main.
Always begin by making sure your local repository is up-to-date with the remote server (GitHub).
-
Switch to your main branch.
git checkout main
-
Pull the latest changes. This fetches updates from the remote and merges them into your local
mainbranch.git pull
Never work directly on the main branch. Create a new, descriptively named branch for every new feature, bugfix, or task. Use hyphens for spaces.
- Create and switch to your new branch. The
checkout -bcommand does both in one step.You are now in a safe, isolated environment and can start working.# Example for a new feature git checkout -b feature/user-authentication # Example for a bugfix git checkout -b fix/login-button-bug
As you work, save your progress in small, logical chunks called commits.
-
Make your changes: Write code, add files, etc.
-
Stage your changes: Tell Git which files to include in the next commit.
# Stage all changed files in the current directory git add . # Or stage a specific file git add path/to/your/file.js
-
Commit your changes: Save the staged files with a clear, descriptive message.
git commit -m "feat: Add email and password fields to login form" -
(Optional but Recommended) Push your branch to the remote: This backs up your work and is necessary for collaboration. The first time you push a new branch, you need to publish it and set its "upstream" tracking link.
git push -u origin feature/user-authentication
After this initial push, you only need to run
git pushfor subsequent commits on this branch.
Once your feature is complete and tested, you need to merge it back into the main branch.
-
Update
mainagain: Before merging, ensuremainis still up-to-date, as others may have merged their own work.git checkout main git pull
-
Update your feature branch with the latest from
main: Switch back to your feature branch and rebase it on top of the latestmain. This keeps the project history clean and linear.git checkout feature/user-authentication git rebase main
If you have conflicts, Git will pause and ask you to resolve them. Fix the files, then run
git add .andgit rebase --continue. -
Merge your feature branch into
main: Now that your branch is up-to-date, you can safely merge it.git checkout main git merge feature/user-authentication
-
Push the updated
mainbranch:git push
After your branch has been successfully merged, it's good practice to delete it to keep the repository tidy.
-
Delete the local branch:
git branch -d feature/user-authentication
-
Delete the remote branch on GitHub:
git push origin --delete feature/user-authentication
This guide covers merging a feature branch into a long-running upstream branch (like develop) and then applying a version tag to mark the progress.
Always begin by syncing with the remote upstream branch you will eventually merge into.
-
Switch to your upstream branch.
# Substitute 'develop' with your actual branch name git checkout develop -
Pull the latest changes.
git pull
Create your new branch from the up-to-date upstream branch.
- Create and switch to your new branch.
# This new branch is based on the current state of 'develop' git checkout -b feature/new-module
Work on your feature, committing and pushing as you go.
-
Make changes,
git add ., andgit commit.git add . git commit -m "feat: Implement new data processing module"
-
Push your feature branch to the remote.
# The -u flag sets the upstream tracking link for your feature branch git push -u origin feature/new-module
Once your work is complete, merge it into the target develop branch.
-
Update the target
developbranch.git checkout develop git pull
-
Update your feature branch. Rebase it on top of the latest
develop.git checkout feature/new-module git rebase develop
If you have conflicts, resolve them, then run
git add .andgit rebase --continue. -
Merge your feature branch.
git checkout develop git merge feature/new-module
-
Push the updated
developbranch.git push
Tag the new state of the develop branch.
-
Ensure you're on the
developbranch.git checkout develop
-
Create an annotated tag.
# Example for a pre-release version git tag -a v1.1.0-alpha.1 -m "Add new data processing module"
-
Push the new tag to the remote.
# Push the specific tag git push origin v1.1.0-alpha.1 # Or push all local tags git push --tags
Delete your now-merged feature branch.
-
Delete the local branch.
git branch -d feature/new-module
-
Delete the remote branch.
git push origin --delete feature/new-module
When I created it, I first git cloned the repository with the ReAct stuff inside it (git clone [https link]) so now its in the local folder. Then I created an env, and activated the environment .\venv\Scripts\activate, so that I can install dependencies within the environment.
For gemini .\gemini-agent-env\Scripts\Activate.ps1 and on wsl to run webshop: ./run_dev.sh.
on powershell to run webshop tasks:
python run_agent.py --num_episodes 5
Run (venv) PS C:\Users\rishi\Documents\summer-research\react-research> $env:GOOGLE_API_KEY = "API_KEY_HERE" to execute the python scripts.
rishi@rishisim-slim:/mnt/c/Users/Rishi/Documents/summer-research/react-research$ source /mnt/c/Users/Rishi/Documents/summer-research/react-research/venv-linux/bin/activate
rishi@rishisim-slim:/mnt/c/Users/Rishi/Documents/summer-research/react-research$ export GOOGLE_API_KEY="API_KEY_HERE"


