Fine-tune Completions API

I created a fine tune using the davinci-002 base model and the return is not as expected, follow the training data file and the api request:

Training Data
{“prompt”: “Qual é o custo das aulas de dança de salão?”, “completion”: “Valores”}
{“prompt”: “Qual o preço para aulas de hip-hop?”, “completion”: “Valores”}
{“prompt”: “Quanto custa a inscrição para novos alunos?”, “completion”: “Valores”}
{“prompt”: “Qual é o valor para aulas individuais?”, “completion”: “Valores”}
{“prompt”: “Qual é o preço das aulas de dança infantil?”, “completion”: “Valores”}
{“prompt”: “Qual é o custo para participar de workshops especiais?”, “completion”: “Valores”}
{“prompt”: “Quanto é cobrado por aula de dança de rua?”, “completion”: “Valores”}
{“prompt”: “Qual é o valor para pacotes de aulas semanais?”, “completion”: “Valores”}
{“prompt”: “Quanto custa a aula de balé para adultos?”, “completion”: “Valores”}
{“prompt”: “Qual é o preço para aulas de dança em grupo?”, “completion”: “Valores”}
{“prompt”: “Quais valores das aulas?”, “completion”: “Valores”}
{“prompt”: “Qual o valor da mensalidade?”, “completion”: “Valores”}
{“prompt”: “Quanto custa fazer aula?”, “completion”: “Valores”}
{“prompt”: “Quanto custa Sertanejo?”, “completion”: “Valores”}
{“prompt”: “Quanto custa Forró?”, “completion”: “Valores”}
{“prompt”: “Quanto custa Samba?”, “completion”: “Valores”}
{“prompt”: “Quanto custa Vanera?”, “completion”: “Valores”}

endpoint
v1/completions

Body
{
“model”: “ft:davinci-002:personal::A8Shrnvy”,
“prompt”: “quanto custa”,
“max_tokens”: 5,
“temperature”: 0.1
}

response
{
“id”: “cmpl-A8T3uRAU6ByqSKRT9EvO6fHGZrXqK”,
“object”: “text_completion”,
“created”: 1726581702,
“model”: “ft:davinci-002:personal::A8Shrnvy”,
“choices”: [
{
“text”: “oresoresoresoresVal”,
“index”: 0,
“logprobs”: null,
“finish_reason”: “length”
}
],
“usage”: {
“prompt_tokens”: 4,
“completion_tokens”: 5,
“total_tokens”: 9
}
}

Note that the result has the word “Valores” but with the chars scrambled and repeated

Using max_tokens 15 result

“text”: “oresoresoresoresValoresValoresValoresValoresValoresores”

You trained the AI on a question mark (?), but didn’t provide the question mark. A strong separator is required to signal the finish of your input and the start of a separate type of output, otherwise it will keep continuing your question or go into unknown spaces.

You also need a stop token sequence than the AI can invoke for ending its response following your training pattern.

Example:

{“prompt”: “Quanto custa fazer aula?\n\n########################”, “completion”: “Valores@!@!@!@!@!@!@!@!@!@!@!@!}

The “########################” is one token, and “@!” as a two token or four token stop sequence will end the output, with repeating training reinforcing how important it is.

Then you send the separator like you trained.