> ## Documentation Index
> Fetch the complete documentation index at: https://docs.portkey.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Fine-tune

> Fine-tune your models with Azure OpenAI

Azure OpenAI follows a similar fine-tuning process as OpenAI, with some Azure-specific configurations. The examples below show how to use Prisma AIRS AI Gateway with Azure OpenAI for fine-tuning.

### Upload a file

**REST API**

```sh theme={"system"}
curl -X POST --header 'Authorization: Bearer <portkey_api_key>' \
 --header 'x-portkey-provider: @provider' \
 --form 'file=@dataset.jsonl' \
 --form 'purpose=fine-tune' \
 'https://aigw.portkey.ai/v1/files'
```

**OpenAI Python**

```python theme={"system"}
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key="PORTKEY_API_KEY",
    api_version="2023-05-15",
    azure_endpoint="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@PROVIDER"}
)

# Upload a file for fine-tuning
file = client.files.create(
    file=open("dataset.jsonl", "rb"),
    purpose="fine-tune"
)

print(file)
```

### Create a fine-tuning job

**REST API**

```sh theme={"system"}
curl -X POST --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer <portkey_api_key>' \
 --data \
 $'{"model": "@provider/<base_model>", "suffix": "<finetune_name>", "training_file": "<file_id>", "validation_file": "<file_id>", "hyperparameters": {"n_epochs": 1}}\n' \
'https://aigw.portkey.ai/v1/fine_tuning/jobs'
```

**OpenAI Python**

```python theme={"system"}
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key="PORTKEY_API_KEY",
    api_version="2023-05-15",
    azure_endpoint="https://aigw.portkey.ai/v1"
)

# Create a fine-tuning job
fine_tune_job = client.fine_tuning.jobs.create(
    model="@PROVIDER/gpt-35-turbo", # Base model to fine-tune
    training_file="file_id", # ID of the uploaded training file
    validation_file="file_id", # Optional: ID of the uploaded validation file
    suffix="finetune_name", # Custom suffix for the fine-tuned model name
    hyperparameters={
        "n_epochs": 1
    }
)

print(fine_tune_job)
```

For more detailed examples and other fine-tuning operations (listing jobs, retrieving job details, cancelling jobs, and getting job events), please refer to the [OpenAI fine-tuning documentation](https://docs.portkey.ai/docs/aigw/integrations/llms/openai/fine-tuning.md).

The Azure OpenAI fine-tuning API documentation is available at [Azure OpenAI API](https://learn.microsoft.com/en-us/rest/api/azureopenai/fine-tuning/create?view=rest-azureopenai-2025-01-01-preview\&tabs=HTTP).


## Related topics

- [Fine-tune](https://docs.portkey.ai/docs/aigw/integrations/llms/fireworks/fine-tuning.md)
- [Data Service](https://docs.portkey.ai/docs/changelog/data-service.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.