Programmatic Fine-tuning

In addition to using the Web UI for fine-tuning models, customers can also kick off fine-tuning jobs programmatically using the Fine-tuning API or via the Cohere Python SDK. This can be useful for fine-tunes that happen on a regular cadence, such as fine-tuning nightly on newly-acquired data.


Before a fine-tune job can be started, users must upload a Dataset with training and (optionally) evaluation data. The contents and structure of the dataset will vary depending on the type of fine-tuning. Read more about preparing the training data for Chat, Classify, and Rerank fine-tuning.

The snippet below creates a dataset for fine-tuning a model on records of customer service interactions.

# create a dataset
co = cohere.Client('Your API key')

my_dataset = co.datasets.create(
  name="customer service logs",
  data=open("./customer-chat.jsonl", "rb"),
  eval_data=open("./customer-chat-eval.jsonl", "rb")

result = co.wait(my_dataset)

Starting a Fine-tuning Job

Below is an example of starting a fine-tune job of a generative model for Chat using a dataset of conversational data.

from cohere.finetuning import FinetunedModel, Settings, BaseModel

# start training a custom model using the dataset
finetuned_model = co.finetuning.create_finetuned_model(

Fine-tuning results

When the fine-tune model is ready you will receive an email notification. You can explore the evaluation metrics using the Dashboard and try out your model using one of our APIs on the Playground.