# Advanced Usage

## Running a specific task[​](#running-a-specific-task "Direct link to Running a specific task")

If you want to run the workflow to retrieve the output of another task, you can use `Client.run_task()`:

```
with Client(url="https://your.scale.endpoint.url") as client:
    results = client.run_task("infer_yolo_v8", "path/to/image1.jpg")
```

## Advanced configuration and output selection[​](#advanced-configuration-and-output-selection "Direct link to Advanced configuration and output selection")

If you need to select outputs from various tasks or set parameters for intermediate tasks, you can use a `Context` object for maximum flexibility:

```
context = client.build_context()
```

A context holds specific configuration for your deployment, which you can reuse across multiple runs.

Using `Context.add_output`, you can select specific outputs from any task in your workflow:

```
# Add ALL outputs from the "ocv_blur" task
context.add_output("ocv_blur")

# Add output 1 from "infer_yolo_v8"
context.add_output("infer_yolo_v8", 1)

# Add ALL outputs from the "infer_yolo_v8_seg" task
# Save them to project's storage (will be returned as StorageObjectIO)
context.add_output("infer_yolo_v8_seg", save_temporary=True)
```

You can also use `Context.set_parameters` to edit configuration of any task:

```
context.set_parameters("infer_yolo_v8", {"conf_thres": 0.5})
```

To run using a context, you can pass it to the `Client.run_on()` method:

```
with Client(url="https://your.scale.endpoint.url") as client:
    results = client.run_on(context, "path/to/image1.jpg")
```

## Chaining deployments[​](#chaining-deployments "Direct link to Chaining deployments")

You can chain multiple deployments together by passing the outputs of one deployment as inputs to another:

```
with Client(url="https://your.scale.endpoint.url") as client1, \
     Client(url="https://your.other.scale.endpoint.url") as client2:
    results1 = client1.run("path/to/image1.jpg")
    results2 = client2.run(results1)
```

You can also forward selected outputs using `Results.get_output()`:

```
results1 = client1.run("path/to/image1.jpg")
results2 = client2.run(results1.get_output(1), results1.get_output(2))
```
