```
from typing import Generator
import random

def random_walk(num_steps: int) -> Generator[Tuple[int, int], None]:
    """
    Generator function that simulates a random walk in two dimensions, starting from the origin (0, 0).
    On each iteration, it yields the current position as a tuple (x, y) after taking a step in a random direction (north, south, east, or west) by one unit.
    Directions are determined using Python's random module.
    """
    for _ in range(num_steps):
        direction = random.choice(["north", "south", "east", "west"])
        x, y = 0, 0
        if direction == "north":
            x += 1
        elif direction == "south":
            x -= 1
        elif direction == "east":
            y += 1
        else:
            y -= 1
        yield (x, y)
```
To use the `random_walk` function, you can call it with a `num_steps` parameter, like this:
```
random_walk(10)
```
This will generate a random walk of 10 steps, and print each step's coordinates in the format `(x, y)`.

For example, if the random walk is generated as follows:
```
(0, 0)
(1, 0)
(2, 1)
(2, -1)
(3, 2)
(3, -2)
(4, 3)
(4, -3)
(5, 4)
(5, -4)
```
The `random_walk` function will have generated a random walk of 10 steps, with the coordinates of each step printed in the format `(x, y)`.
