Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] [DÚVIDA] Modelo refinado aparece na lista, mas retorna erro 404 na execução

Oi, pessoal! Estou com uma dúvida relacionada ao uso de modelos refinados (fine-tuned) com gpt-3.5-turbo-1106 via API da OpenAI. Fiz o processo de fine-tuning com validação, o modelo foi treinado com sucesso e aparece como succeeded na plataforma. O nome do modelo final é:

ft:gpt-3.5-turbo-1106:personal::BpdyUGL0

Já atualizei a biblioteca openai com: pip install --upgrade openai

E confirmei que o modelo gpt-3.5-turbo e o refinado ft:gpt-3.5-turbo-1106:personal::BpdyUGL0 aparecem corretamente na resposta do terminal quando uso: openai api models.list

O problema é que, ao tentar usar esse modelo no código com client.chat.completions.create(...), recebo este erro: openai.NotFoundError: Error code: 404 - {'message': "The model 'ft:gpt-3.5-turbo-1106:personal::BpdyUGL0' does not exist or you do not have access to it.", 'type': 'invalid_request_error', 'code': 'model_not_found'}

Já revisei o nome, a chave está correta, o modelo foi validado, e o modelo refinado foi criado há mais de 1h, então não é problema de delay — e estou usando exatamente como orientado mas ele simplesmente não é aceito na execução, mesmo sendo listado.

Observação: Também tentei utilizar a nova forma de chamada conforme a documentação atualizada da OpenAI, com openai.ChatCompletion.create(...) , em vez de client = OpenAI(...) e mesmo assim, o erro model_not_found continua aparecendo.

Alguém já passou por isso ou sabe o que mais posso verificar?

2 respostas
solução!

Olá Ana 1. Versão da biblioteca OpenAI

Mesmo com o pip install --upgrade openai, vale confirmar se você está usando a nova versão da SDK (1.2 ou superior). Essa versão usa uma abordagem diferente para chamadas. Em vez de usar openai.ChatCompletion.create(...), o correto seria algo assim:

from openai import OpenAI

client = OpenAI(api_key="sua-chave")

response = client.chat.completions.create(
    model="gpt-3.5-turbo-1106:personal::BpdyUGL0",
    messages=[{"role": "user", "content": "Oi"}]
)

Se estiver usando o método antigo, mesmo com a versão atualizada da biblioteca, ainda pode dar erro 404 com modelos fine-tuned.

2. Organização incorreta

Mesmo que o modelo apareça na listagem, se a chave de API que você está usando for de outra organização (ou workspace), a chamada não vai funcionar. Isso é bem comum quando se tem acesso a mais de uma organização na OpenAI.

No seu código, vale forçar a organização:

client = OpenAI(
    api_key="sua-chave",
    organization="org_xxxxx"
)

Você consegue ver o ID da organização no painel da OpenAI, no canto superior direito.

3. Nome do modelo com o prefixo errado

Apesar de a plataforma mostrar o nome começando com ft:, a chamada da API geralmente espera só o nome do modelo sem esse prefixo. Então, tente usar exatamente isso como model:

gpt-3.5-turbo-1106:personal::BpdyUGL0

Evite colocar o ft: na chamada, mesmo que ele apareça assim na listagem.

Se nada disso resolver, posso revisar o trecho completo do código pra ver se tem algum detalhe passando batido. É bem provável que seja um desses três pontos, especialmente o nome com o ft: ou a questão da organização.

Consegui resolver o problema! No meu caso, o erro 404 ao tentar usar o modelo refinado estava relacionado à forma como eu estava instanciando o cliente da OpenAI.

Mesmo com a SDK atualizada, eu ainda usava a forma antiga de chamada. Só funcionou corretamente depois que atualizei para a abordagem nova e incluí explicitamente os parâmetros organization e project na criação do cliente, assim:

from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()

cliente = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    organization=os.getenv("OPENAI_ORGANIZATION"),
    project=os.getenv("OPENAI_PROJECT_ID")
)

Depois disso, consegui chamar o modelo fine-tuned (gpt-3.5-turbo-1106:personal::BpdyUGL0) normalmente com cliente.chat.completions.create(...). Muito obrigada pela ajuda! As dicas sobre versão da SDK, nome do modelo sem ft: e a questão da organização fizeram total diferença