-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathrunner.py
More file actions
82 lines (65 loc) · 4.52 KB
/
runner.py
File metadata and controls
82 lines (65 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""
This file is the entry point for MLAgentBench.
"""
import argparse
import sys
from drugagent import LLM
from drugagent.environment import Environment
from drugagent.agents.agent import Agent, SimpleActionAgent, ReasoningActionAgent
import os
def run(args):
with Environment(args) as env:
print("=====================================")
research_problem, benchmark_folder_name = env.get_task_description()
print("Benchmark folder name: ", benchmark_folder_name)
print("Research problem: ", research_problem)
print("Lower level actions enabled: ", [action.name for action in env.low_level_actions])
print("High level actions enabled: ", [action.name for action in env.high_level_actions])
print("Read only files: ", env.read_only_files, file=sys.stderr)
print("=====================================")
# agent = agent_cls(args, env)
final_message = env.run()
print("=====================================")
print("Final message: ", final_message)
env.save("final")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--task", type=str, default="debug", help="task name")
parser.add_argument("--log-dir", type=str, default="./logs", help="log dir")
parser.add_argument("--work-dir", type=str, default="./workspace", help="work dir")
parser.add_argument("--max-steps", type=int, default=100, help="number of steps")
parser.add_argument("--max-time", type=int, default=5* 60 * 60, help="max time")
parser.add_argument("--device", type=int, default=0, help="device id")
parser.add_argument("--python", type=str, default="python", help="python command")
parser.add_argument("--interactive", action="store_true", help="interactive mode")
parser.add_argument("--resume", type=str, default=None, help="resume from a previous run")
parser.add_argument("--resume-step", type=int, default=0, help="the step to resume from")
# general agent configs
parser.add_argument("--agent-type", type=str, default="ResearchAgent", help="agent type")
parser.add_argument("--llm-name", type=str, default="groq/llama3-70b-8192", help="llm name")
parser.add_argument("--fast-llm-name", type=str, default="groq/llama3-70b-8192", help="llm name")
parser.add_argument("--edit-script-llm-name", type=str, default="groq/llama3-70b-8192", help="llm name")
parser.add_argument("--edit-script-llm-max-tokens", type=int, default=4000, help="llm max tokens")
parser.add_argument("--agent-max-steps", type=int, default=80, help="max iterations for agent")
# research agent configs
parser.add_argument("--actions-remove-from-prompt", type=str, nargs='+', default=[], help="actions to remove in addition to the default ones: Read File, Write File, Append File, Retrieval from Research Log, Append Summary to Research Log, Python REPL, Edit Script Segment (AI)")
parser.add_argument("--actions-add-to-prompt", type=str, nargs='+', default=[], help="actions to add")
parser.add_argument("--retrieval", action="store_true", help="enable retrieval")
parser.add_argument("--valid-format-entires", type=str, nargs='+', default=None, help="valid format entries")
parser.add_argument("--max-steps-in-context", type=int, default=3, help="max steps in context")
parser.add_argument("--max-observation-steps-in-context", type=int, default=3, help="max observation steps in context")
parser.add_argument("--max-retries", type=int, default=5, help="max retries")
parser.add_argument("--planner-max-steps", type=int, default=30, help="max iterations for planner agent")
parser.add_argument("--draft-max-steps", type=int, default=30, help="max iterations to explore a single idea")
# parser.add_argument("--refine-max-steps", type=int, default=15, help="max iterations to optimize hyperparameteres")
parser.add_argument("--stop-idea-num", type=int, default=3, help="max ideas to explore")
parser.add_argument("--init-idea-num", type=int, default=5, help="number of ideas to initialize")
# langchain configs
parser.add_argument("--langchain-agent", type=str, default="zero-shot-react-description", help="langchain agent")
args = parser.parse_args()
print(args, file=sys.stderr)
if not args.retrieval or args.agent_type != "ResearchAgent":
# should not use these actions when there is no retrieval
args.actions_remove_from_prompt.extend(["Retrieval from Research Log", "Append Summary to Research Log", "Reflection"])
LLM.FAST_MODEL = args.fast_llm_name
run(args)