| from lagent import ReAct |
| from lagent.agents.react import ReActProtocol |
| from mmengine.config import read_base |
|
|
| from opencompass.lagent.actions.python_interpreter import PythonInterpreter |
| from opencompass.models.lagent import LagentAgent |
| from opencompass.models.openai_api import OpenAI |
| from opencompass.partitioners import SizePartitioner |
| from opencompass.runners import LocalRunner |
| from opencompass.tasks import OpenICLInferTask |
|
|
| with read_base(): |
| from opencompass.configs.datasets.gsm8k.gsm8k_agent_gen_be1606 import \ |
| gsm8k_datasets |
| from opencompass.configs.datasets.math.math_agent_gen_af2293 import \ |
| math_datasets |
| from opencompass.configs.datasets.MathBench.mathbench_agent_gen_568903 import \ |
| mathbench_agent_datasets |
| from opencompass.configs.summarizers.math_agent import summarizer |
|
|
| datasets = [] |
| datasets += gsm8k_datasets |
| datasets += math_datasets |
| datasets += mathbench_agent_datasets |
|
|
| system_prompt = """You are a helpful assistant which use tools to solve mathematical reasoning questions. The code must be a function, and the function name must be 'solution'. For mathematics, please use code tool to calculate. The example format is as follows: |
| ``` |
| def solution(): |
| variable_names_with_real_meaning = func(variable) |
| return variable_names_with_real_meaning |
| ```""" |
|
|
| protocol = dict( |
| type=ReActProtocol, |
| action=dict(role='ACTION', begin='Tool:', end='\n'), |
| action_input=dict(role='ARGS', begin='Tool Input:', end='\n'), |
| finish=dict(role='FINISH', begin='FinalAnswer:', end='\n'), |
| call_protocol=system_prompt, |
| ) |
|
|
| models = [ |
| dict( |
| abbr='gpt-3.5-react', |
| type=LagentAgent, |
| agent_type=ReAct, |
| max_turn=3, |
| llm=dict( |
| type=OpenAI, |
| path='gpt-3.5-turbo', |
| key='ENV', |
| query_per_second=1, |
| max_seq_len=4096, |
| ), |
| actions=[ |
| dict(type=PythonInterpreter), |
| ], |
| protocol=protocol, |
| batch_size=1, |
| ), |
| ] |
|
|
| infer = dict( |
| partitioner=dict(type=SizePartitioner, max_task_size=1000), |
| runner=dict(type=LocalRunner, |
| max_num_workers=16, |
| task=dict(type=OpenICLInferTask)), |
| ) |
|
|