Files
2026-07-13 13:06:23 +08:00

93 lines
3.6 KiB
Python

from constant import DOCKER_WORKPLACE_NAME
from autoagent.environment.docker_container import init_container
from autoagent.io_utils import read_yaml_file, get_md5_hash_bytext
from autoagent.agents import get_rag_agent
from autoagent.core import AutoAgent
from autoagent.environment.docker_env import DockerEnv, DockerConfig, with_env
import argparse
import asyncio
import csv
from tqdm import trange
import os
import json
import time
def get_args():
parser = argparse.ArgumentParser(description="working@tjb-tech")
parser.add_argument('--container_name', type=str, default='gaia_test')
parser.add_argument('--model', type=str, default='gpt-4o-mini-2024-07-18')
parser.add_argument('--git_clone', action='store_true', default=False)
parser.add_argument('--setup_package', type=str, default='lite_pkgs')
parser.add_argument('--debug', action='store_true', default=False)
args = parser.parse_args()
return args
def get_env(container_name: str = 'gaia_test', model: str = 'gpt-4o-mini-2024-07-18', git_clone: bool = False, setup_package: str = 'lite_pkgs', test_pull_name: str = 'test_pull_1010', debug: bool = True):
workplace_name = DOCKER_WORKPLACE_NAME
docker_config = DockerConfig(container_name=container_name, workplace_name=workplace_name, communication_port=12345, conda_path='/home/user/micromamba')
docker_env = DockerEnv(docker_config)
return docker_env
def append_to_json(file_path, entry):
if os.path.exists(file_path):
with open(file_path, 'r', encoding='utf-8') as json_file:
data = json.load(json_file)
else:
data = []
data.append(entry)
with open(file_path, 'w', encoding='utf-8') as json_file:
json.dump(data, json_file, ensure_ascii=False, indent=4)
async def main(container_name: str = 'gaia_test', model: str = 'gpt-4o-mini-2024-07-18', git_clone: bool = False, setup_package: str = 'lite_pkgs', test_pull_name: str = 'test_pull_1010', debug: bool = True, task_instructions: str = None):
workplace_name = DOCKER_WORKPLACE_NAME
# docker_env = get_env(container_name, model, git_clone, setup_package, test_pull_name, debug)
# docker_env.init_container()
csv_file_path = './MultiHopRAG.csv'
json_path = './result.json'
question_list=[]
GA_LIST=[]
with open(csv_file_path, mode='r', encoding='utf-8') as question_file:
reader = csv.DictReader(question_file)
for row in reader:
question_list.append(row['query'])
GA_LIST.append(row['answer'])
row_count = 0
with open(json_path, 'r', encoding='utf-8') as json_file:
data = json.load(json_file)
row_count = len(data)
for QUESTIONid in trange(row_count,len(question_list)):#
task_instructions = question_list[QUESTIONid]
#answer: row[1]
codeact_agent = get_rag_agent(model)#, rag_env=docker_env)
mc = MetaChain()
# try:
context_variables = {"working_dir": DOCKER_WORKPLACE_NAME,"user_query": task_instructions}
messages = [{"role": "user", "content": task_instructions}]
response = await mc.run_async(agent=codeact_agent, messages=messages,max_turns=10, context_variables=context_variables, debug=debug)
data_new = {
"query": task_instructions,
"gold_answer": GA_LIST[QUESTIONid],
"answer": response.messages[-1]['content']
}
append_to_json(json_path, data_new)
if __name__ == "__main__":
args = get_args()
asyncio.run(main(args.container_name, args.model, args.git_clone, args.setup_package, args.test_pull_name, args.debug))