Error occured while calling OpenAI API: Missing required arguments; Expected either ('model' and 'prompt') or ('model', 'prompt' and 'stream') arguments to be given

# ottieni tag title da gpt
#################################

#import openai
from dotenv import load_dotenv
import os
load_dotenv()  # Carica le variabili d'ambiente dal file .env
#openai.api_key = os.getenv("openai.api_key")

# new
from openai import OpenAI

client = OpenAI(api_key=os.environ['openai.api_key'])

# setup richiesta gtp
# nuovo dataframe
merged_df8b = merged_df8.copy()

# creo dizionario delle risposte di gpt per evitare chiamate doppie
gpt_responses = {}
# Inizializza un contatore per il numero totale di token
total_tokens_used = 0
# Inizializza un contatore per le chiamate API effettive
actual_api_calls = 0

def improve_tag_title(row, gpt_responses):
    global total_tokens_used  , actual_api_calls      
    top_5_queries = row['top_5_queries']

    # Ottieni il tag title e l'URL dalla riga corrente
    tag_title = row["tag title"]
    page_url = row["page"]

    # Controllo se tag_title è presente e non vuoto
    if not tag_title:
        return None

    # Controllo per saltare la chiamata GPT quando comparison è 'greater' o check è 'Ok'
    #if row["comparison"] == "greater" or "Missing" not in row["check"]:
    #    #return row["tag title"]
    #    return None

    # Verifica se l'URL è già stato processato
    if page_url in gpt_responses:
        return gpt_responses[page_url]  # Usa il tag title migliorato se disponibile

    prompt = (      
        f"Sto cercando di migliorare il tag title per una pagina web. Il tag title attuale è: {tag_title}.\n"
        f"Le parole chiave più importanti e pertinenti alla pagina sono: {top_5_queries}.\n"
        f"Crea un nuovo tag title in {language} che incorpori queste parole chiave in modo naturale e coinvolgente. Il tag title dovrebbe:\n"
        f"1) avere al massimo 65 caratteri, spazi inclusi. Assicurati che la tua risposta non superi questo limite.\n"
        f"2) non includere il nome del brand.\n"
        f"3) non utilizzare lettere maiuscole inutili, simboli, apici o virgolette.\n"
        f"4) essere presentato da solo, senza alcuna spiegazione o contenuto aggiuntivo.\n"
        f"Per favore, segui scrupolosamente tutte queste regole nella tua risposta. Se non sei sicuro, conferma che hai seguito tutte le regole nel tuo messaggio."
    )

    try:
        # Modifica la struttura dell'input per utilizzare il formato chat
        #response = openai.ChatCompletion.create(
        response = client.completions.create(
            model="gpt-4",
            messages=[
                {"role": "system", "content": "Comportati come se fossi un SEO copywriter professionista."},
                {"role": "user", "content": prompt}
            ],
            max_tokens=1000,
            temperature=0.4,
            top_p=1,
            frequency_penalty=0.1,
            presence_penalty=0.1
        )
        # Aggiungi il numero di token utilizzati per questa risposta al totale
        total_tokens_used += response['usage']['total_tokens'] 
        actual_api_calls += 1  # Incrementa il contatore per le chiamate API effettive

    # eccezioni errori gpt
    except Exception as e:
        print(f"Error occured while calling OpenAI API: {e}")
        return None

    #improved_tag_title = response.model_dump(exclude_unset=True)
    improved_tag_title = response.choices[0].message.content.strip().lower()
    
    #gpt_responses[tag_title] = improved_tag_title
    # modifica per usare come chiave di confronto l'URL
    gpt_responses[page_url] = improved_tag_title

# SLEEP
    time.sleep(1)
    return improved_tag_title

error:
Error occured while calling OpenAI API: Missing required arguments; Expected either (‘model’ and ‘prompt’) or (‘model’, ‘prompt’ and ‘stream’) arguments to be given

could anyone please explain me the problem? I’m using the updated sdk of openai. Thanks

ps: …and if i rename messages to prompt, I get this:
Error occured while calling OpenAI API: Error code: 404 - {‘error’: {‘message’: ‘This is a chat model and not supported in the v1/completions endpoint. Did you mean to use v1/chat/completions?’, ‘type’: ‘invalid_request_error’, ‘param’: ‘model’, ‘code’: None}}

You want

openai.chat.completions.create(

Find more at model endpoint compatibility in the docs…

2 Likes

openai. methods has been removed:

  • openai.ChatCompletion.create()client.chat.completions.create()
1 Like