Spaces:
Running
Running
import logging | |
import os | |
import json | |
import shutil | |
# from agentverse.agentverse import AgentVerse | |
from agentverse.tasksolving import TaskSolving | |
from agentverse.logging import get_logger | |
from argparse import ArgumentParser | |
import asyncio | |
from dataloader import dataloader_registry | |
parser = ArgumentParser() | |
parser.add_argument("--task", type=str, default="tasksolving/responsegen") | |
parser.add_argument( | |
"--tasks_dir", | |
type=str, | |
default=os.path.join(os.path.dirname(__file__), "..", "agentverse", "tasks"), | |
) | |
parser.add_argument("--dataset_path", type=str, required=True) | |
parser.add_argument("--output_path", type=str, default=None) | |
parser.add_argument("--has_tools", action="store_true") | |
parser.add_argument("--tool_tmp_path", type=str) | |
parser.add_argument("--overwrite", action="store_true") | |
parser.add_argument("--debug", action="store_true") | |
args = parser.parse_args() | |
logger = get_logger() | |
logger.set_level(logging.DEBUG if args.debug else logging.INFO) | |
def get_dataloader(task, dataset_path): | |
return dataloader_registry.build(task, path=dataset_path) | |
def cli_main(): | |
dataloader = get_dataloader(args.task, args.dataset_path) | |
if args.output_path is None: | |
os.makedirs(f"./results/{args.task}", exist_ok=True) | |
args.output_path = f"./results/{args.task}" | |
else: | |
os.makedirs(args.output_path, exist_ok=True) | |
shutil.copyfile( | |
f"{args.tasks_dir}/{args.task}/config.yaml", | |
f"{args.output_path}/config.yaml", | |
) | |
skip_cnt = 0 | |
if not args.overwrite and os.path.exists(f"{args.output_path}/results.jsonl"): | |
with open(f"{args.output_path}/results.jsonl", "r") as f: | |
for line in f: | |
if line.strip(): | |
skip_cnt += 1 | |
f = open(f"{args.output_path}/results.jsonl", "w" if args.overwrite else "a") | |
for i, example in enumerate(dataloader): | |
if i < skip_cnt: | |
continue | |
logger.info(f"Input: {example['input']}\nAnswer: {example['answer']}") | |
if args.has_tools: | |
assert args.tool_tmp_path is not None | |
with open(args.tool_tmp_path, "w") as f: | |
f.write(json.dumps(example["tools"])) | |
agentverse = TaskSolving.from_task(args.task, args.tasks_dir) | |
agentverse.environment.set_task_description(example["input"]) | |
# print(args.single_agent) | |
# print(args.discussion_mode) | |
# exit() | |
plan, result, logs = agentverse.run() | |
f.write( | |
json.dumps( | |
{ | |
"input": example["input"], | |
"response": plan, | |
"label": example["answer"], | |
"logs": logs, | |
} | |
) | |
+ "\n" | |
) | |
f.flush() | |
f.close() | |
if __name__ == "__main__": | |
cli_main() | |