From d5d9c16760fc663d3821be24adf575050366e6b7 Mon Sep 17 00:00:00 2001 From: Dev Sharma <12devsharma10c@gmail.com> Date: Wed, 6 Aug 2025 00:38:47 +0530 Subject: [PATCH] =?UTF-8?q?Add=20CLI=20Tools=20for=20Chat=20Model=20Fine?= =?UTF-8?q?=E2=80=91Tuning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR introduces CLI support for chat fine‑tuning workflows, making it easy to prepare, upload, and monitor fine‑tune jobs for GPT‑4o, GPT‑4, and GPT‑3.5‑turbo models. --- src/openai/cli/_tools/fine_tunes.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/openai/cli/_tools/fine_tunes.py b/src/openai/cli/_tools/fine_tunes.py index 2128b88952..a74481f7e9 100644 --- a/src/openai/cli/_tools/fine_tunes.py +++ b/src/openai/cli/_tools/fine_tunes.py @@ -1,3 +1,26 @@ +# openai/cli/chat_fine_tunes.py +import click +import json +from openai import FineTunes + +@click.group() +def chat_fine_tunes(): + """Manage chat model fine-tuning.""" + pass + +@chat_fine_tunes.command("create") +@click.option("-f", "--file", required=True, type=click.Path(exists=True), help="Training dataset (JSONL).") +@click.option("-m", "--model", required=True, help="Base chat model (e.g., gpt-4o-mini).") +def create(file, model): + """Create a new chat fine-tuning job.""" + with open(file, "r") as f: + lines = [json.loads(l) for l in f] + for idx, example in enumerate(lines): + if "messages" not in example: + raise click.ClickException(f"Line {idx+1} missing 'messages'.") + resp = FineTunes.create(model=model, training_file=file) + click.echo(f"Created chat fine-tune: {resp['id']}") + from __future__ import annotations import sys