To solve the optimization problem described, we first need to define the decision variables and the objective function. Let's denote:

- \(A\) as the number of bottles of Alpha to be produced.
- \(B\) as the number of bottles of Beta to be produced.

The objective is to maximize profit. Given that one bottle of Alpha is sold for a profit of $4 and one bottle of Beta is sold at a profit of $6, the total profit \(P\) can be represented by the equation:

\[ P = 4A + 6B \]

We have several constraints based on the problem description:

1. **Extract Limitation**: The total amount of extract used cannot exceed 2000 grams. Since one bottle of Alpha contains 15 grams and one bottle of Beta contains 25 grams, we have:

\[ 15A + 25B \leq 2000 \]

2. **Demand Constraint**: At least three times as many Alpha bottles are needed as Beta bottles, which gives us:

\[ A \geq 3B \]

3. **Minimum Beta Production**: A minimum of 10 bottles of Beta need to be made, so:

\[ B \geq 10 \]

4. **Non-Negativity Constraints**: Both \(A\) and \(B\) must be non-negative since we cannot produce a negative number of bottles.

To find the optimal production levels that maximize profit while satisfying these constraints, we can use linear programming techniques as provided by Gurobi in Python.

```python
from gurobipy import *

# Create a model
m = Model("Natural Pharmacy Problem")

# Define decision variables
A = m.addVar(name='Alpha', vtype=GRB.INTEGER)
B = m.addVar(name='Beta', vtype=GRB.INTEGER)

# Objective function: Maximize profit
m.setObjective(4*A + 6*B, GRB.MAXIMIZE)

# Constraints
m.addConstr(15*A + 25*B <= 2000, name='Extract Limit')
m.addConstr(A >= 3*B, name='Demand Constraint')
m.addConstr(B >= 10, name='Minimum Beta')

# Solve the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: Produce {A.x} bottles of Alpha and {B.x} bottles of Beta.")
else:
    print("No optimal solution found.")

```