## Step 1: Define the symbolic representation of the problem

Let's denote the amount of Seasoning A to be bought as \(x_1\) kg and the amount of Seasoning B to be bought as \(x_2\) kg. The objective is to minimize the cost, which is $1.50 per kg of Seasoning A and $3 per kg of Seasoning B. Therefore, the objective function can be represented as \(1.5x_1 + 3x_2\).

## Step 2: Define the constraints based on the problem description

The problem states that the new mixture must contain a minimum of 5 units of pepper and 6 units of salt. Seasoning A contains 2 units of pepper and 1 unit of salt per kg, while Seasoning B contains 1 unit of pepper and 4 units of salt per kg. This gives us two constraints:
1. For pepper: \(2x_1 + x_2 \geq 5\)
2. For salt: \(x_1 + 4x_2 \geq 6\)

Additionally, \(x_1 \geq 0\) and \(x_2 \geq 0\) because the chef cannot buy a negative amount of seasoning.

## 3: Symbolic representation of the optimization problem

The symbolic representation can be summarized as:
- Variables: \(x_1\) for Seasoning A, \(x_2\) for Seasoning B
- Objective function: \(1.5x_1 + 3x_2\)
- Constraints:
  - \(2x_1 + x_2 \geq 5\)
  - \(x_1 + 4x_2 \geq 6\)
  - \(x_1 \geq 0\)
  - \(x_2 \geq 0\)

In the requested format:
```json
{
'sym_variables': [('x1', 'Seasoning A'), ('x2', 'Seasoning B')],
'objective_function': '1.5x1 + 3x2',
'constraints': ['2x1 + x2 >= 5', 'x1 + 4x2 >= 6', 'x1 >= 0', 'x2 >= 0']
}
```

## 4: Convert the problem into Gurobi code

Now, let's implement this problem using Gurobi in Python:
```python
import gurobi

def solve_seasoning_problem():
    # Create a new model
    model = gurobi.Model()

    # Define variables
    x1 = model.addVar(name="Seasoning_A", lb=0, ub=float('inf'))
    x2 = model.addVar(name="Seasoning_B", lb=0, ub=float('inf'))

    # Objective function: minimize 1.5x1 + 3x2
    model.setObjective(1.5 * x1 + 3 * x2, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(2 * x1 + x2 >= 5, name="pepper_constraint")
    model.addConstr(x1 + 4 * x2 >= 6, name="salt_constraint")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal amount of Seasoning A: {x1.varValue} kg")
        print(f"Optimal amount of Seasoning B: {x2.varValue} kg")
        print(f"Minimum cost: ${model.objVal:.2f}")
    else:
        print("The problem is infeasible.")

solve_seasoning_problem()
```