[NeurIPS 2023] Reflexion: 语言代理与言语强化学习
这个仓库包含了由Noah Shinn、Federico Cassano、Edward Berman、Ashwin Gopinath、Karthik Narasimhan、Shunyu Yao撰写的Reflexion: 语言代理与言语强化学习的代码、演示和日志文件。
我们已经在这里发布了LeetcodeHardGym
执行:推理(HotPotQA)
我们提供了一套笔记本,可以轻松运行、探索和交互推理实验的结果。每个实验包括从HotPotQA分心数据集中随机抽取的100个问题样本。样本中的每个问题都由一个具有特定类型和反思策略的代理尝试。
设置
要开始:
- 克隆此仓库并移动到HotPotQA目录:
git clone https://github.com/noahshinn/reflexion && cd ./hotpotqa_runs
- 安装模块依赖项到您的环境中:
pip install -r requirements.txt
- 设置
OPENAI_API_KEY
环境变量为您的OpenAI API密钥:
export OPENAI_API_KEY=<你的密钥>
代理类型
代理类型由您选择运行的笔记本决定。可用的代理类型包括:
-
ReAct
- ReAct代理 -
CoT_context
- 给定关于问题的支持性上下文的CoT代理 -
CoT_no_context
- 没有给定关于问题的支持性上下文的CoT代理
每种代理类型的笔记本位于 ./hotpot_runs/notebooks
目录中。
反思策略
每个笔记本允许您指定代理使用的反思策略。可用的反思策略在一个Enum
中定义,包括:
-
ReflexionStrategy.NONE
- 代理未获得关于其上次尝试的任何信息。 -
ReflexionStrategy.LAST_ATTEMPT
- 代理获得其上次尝试某问题的推理轨迹作为上下文。 -
ReflexionStrategy.REFLEXION
- 代理获得其上次尝试的自我反思作为上下文。 -
ReflexionStrategy.LAST_ATTEMPT_AND_REFLEXION
- 代理获得其上次尝试的推理轨迹和自我反思作为上下文。
执行:决策(AlfWorld)
克隆此仓库并移动到AlfWorld目录
git clone https://github.com/noahshinn/reflexion && cd ./alfworld_runs
在 ./run_reflexion.sh
中指定运行参数。
num_trials
: 迭代学习步骤的数量
num_envs
: 每个试验的任务-环境对数
run_name
: 此运行的名称
use_memory
: 使用持久化内存来存储自我反思(关闭以进行基线运行)
is_resume
: 使用日志目录恢复先前的运行
resume_dir
: 要从中恢复先前运行的日志目录
start_trial_num
: 如果恢复运行,则从哪个试验编号开始
运行试验
./run_reflexion.sh
日志将发送到 ./root/<run_name>
。
另一条说明
由于这些实验的性质,个别开发人员可能无法重新运行结果,因为GPT-4的访问受限且需要支付大量API费用。所有来自论文和额外结果的运行都记录在 ./alfworld_runs/root
用于决策,./hotpotqa_runs/root
用于推理,以及 ./programming_runs/root
用于编程。
其它说明
查阅原始代码这里
阅读博客帖子这里
查阅有趣的类型预测实现这里
如有任何问题,请联系 noahrshinn@gmail.com
引用
@misc{shinn2023reflexion,
title={Reflexion: Language Agents with Verbal Reinforcement Learning},
author={Noah Shinn and Federico Cassano and Edward Berman and Ashwin Gopinath and Karthik Narasimhan and Shunyu Yao},
year={2023},
eprint={2303.11366},
archivePrefix={arXiv},
primaryClass={cs.AI}
}