--- license: apache-2.0 language: - en --- This is a Re-act style model. Dataset was parsed with: ``` def extract_trajectory_info(data): """ Extracts the question, thoughts, actions, and observations from the trajectory field of the data. Parameters: data (dict): The data entry containing the trajectory field. Returns: dict: A dictionary containing the extracted question, thoughts, actions, and observations. """ # Extracting the question question = data.get('question', '') # Extracting thoughts, actions, and observations using regex thoughts = re.findall(r'Thought \d+: (.+?)(?=Action|\Z)', data.get('trajectory', ''), re.DOTALL) actions = re.findall(r'Action \d+: (.+?)(?=Observation|\Z)', data.get('trajectory', ''), re.DOTALL) observations = re.findall(r'Observation \d+: (.+?)(?=Thought|\Z)', data.get('trajectory', ''), re.DOTALL) # Cleaning up the extracted data thoughts = [thought.strip() for thought in thoughts] actions = [action.strip() for action in actions] observations = [observation.strip() for observation in observations] return { 'question': question, 'thoughts': thoughts, 'actions': actions, 'observations': observations } # Sample data extracted_info = extract_trajectory_info(ds["train"][0]) ``` Then remade into a new dataset with ``` # Predefine the instructions for the task preamble = """Tools available: (1) Search[entity], which searches the exact entity on Wikipedia and returns the first paragraph if it exists. If not, it will return some similar entities to search. (2) Lookup[keyword], which returns the next sentence containing the keyword in the current passage. (3) Finish[answer], which returns the answer and finishes the task. """ dataset = [] # Iterate through a specified number of examples in the training set for i in range(len(ds['train'])): extracted_info = extract_trajectory_info(ds['train'][i]) # Iterate through each thought in the extracted information for j in range(len(extracted_info['thoughts'])): out = f"{preamble}---\nQuestion: {extracted_info['question']}\n" prev = "" # Construct output for the first thought if j == 0: out += f"Thought: {extracted_info['thoughts'][0]}\n" out += f"Action: {extracted_info['actions'][0]}\nPAUSE\n\n\n\n" else: for k in range(1, j + 1): # Use appropriate indexing to avoid out-of-bounds errors prev += f"Thought:{extracted_info['thoughts'][j - k]}\n" prev += f"Action: {extracted_info['actions'][j - k]}\nPAUSE\n" prev += f"Observation: {extracted_info['observations'][j - k]}\n" out += prev # Remove trailing space out += f"---\nThought: {extracted_info['thoughts'][j]}\n" out += f"Action: {extracted_info['actions'][j]}\nPAUSE\n\n\n\n" # Print the constructed output print(out) dataset.append(out) #print(len(out)) ```