Partage
  • Partager sur Facebook
  • Partager sur Twitter

oipen ia request avec image

    22 janvier 2023 à 11:37:31

    Bonjour,

    Je suis en train de travailler sur un script pour envoyer une image à l'API OpenAI et recevoir une réponse qui identifie la série ou le film représenté dans cette image. J'ai écrit le code ci-dessous, mais je rencontre des erreurs lorsque j'essaie de l'exécuter. J'ai besoin de votre aide pour comprendre pourquoi cela ne fonctionne pas et comment le résoudre. Si vous pouvez jeter un coup d'oeil à mon code et me dire où je me trompe, je vous serais très reconnaissant.

    import cv2
    import random
    import requests
    import json
    import base64
    
    # Ouvrir la vidéo
    video = cv2.VideoCapture("part0.mp4")
    
    # Obtenir le nombre total d'images dans la vidéo
    total_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
    
    # Générer 4 numéros d'image aléatoires
    random_frames = random.sample(range(total_frames), 4)
    
    # Extraire les images de la vidéo
    images = []
    for frame_num in random_frames:
        video.set(1, frame_num)
        ret, frame = video.read()
        images.append(frame)
    
    # Enregistrer les images extraites sur le disque
    for i, image in enumerate(images):
        cv2.imwrite("image_{}.jpg".format(i), image)
    
    # Encode les images en base64
    image_data = []
    for i, image in enumerate(images):
        with open("image_{}.jpg".format(i), "rb") as image_file:
            encoded_string = base64.b64encode(image_file.read()).decode()
            image_data.append(encoded_string)
    
    # Prépare la requête à envoyer à l'API OpenAI
    url = "https://api.openai.com/v1/images/generations"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer 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"
    }
    
    # Boucle sur les images pour les envoyer à l'API OpenAI
    for i, image in enumerate(image_data):
        data = {
            "model": "image-alpha-001",
            "prompt": f"Name of the series or film depicted in image {i}",
            "num_images":1,
            "size":"256x256",
            "response_format":"url",
            "data": [
                {
                    "image": image
                }
            ]
        }
        response = requests.post(url, headers=headers, json=data)
        response_json = json.loads(response.text)
        print(f"Name of the series or film depicted in image {i} : {response_json['data'][0]['url']}")
    

    merci a vous

    -
    Edité par NÉKOgrile 22 janvier 2023 à 11:37:45

    • Partager sur Facebook
    • Partager sur Twitter
      22 janvier 2023 à 15:34:03

      Quel est le message d'erreur ?
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        23 janvier 2023 à 10:17:19

        fred1599 a écrit:

        Quel est le message d'erreur ?


          f"Name of the series or film depicted in image {i} : {response_json['data'][0]['url']}")  
        KeyError: 'data'
        dsl pour le temps d attente 
         jai bien comprs que le problem etais que date ne doit pas etre dans la request mais je ne trouve rien pour la modifier

        -
        Edité par NÉKOgrile 23 janvier 2023 à 10:18:30

        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2023 à 10:24:42

          Bonjour,

          data étant une variable, ce serait plutôt:

          print(f"Name of the series or film depicted in image {i} : {response_json[data][0]['url']}")



          • Partager sur Facebook
          • Partager sur Twitter
            23 janvier 2023 à 11:35:37

            NÉKOgrile a écrit:

            fred1599 a écrit:

            Quel est le message d'erreur ?


              f"Name of the series or film depicted in image {i} : {response_json['data'][0]['url']}")  
            KeyError: 'data'

            dsl pour le temps d attente 
             jai bien comprs que le problem etais que date ne doit pas etre dans la request mais je ne trouve rien pour la modifier



            • Partager sur Facebook
            • Partager sur Twitter
              23 janvier 2023 à 12:18:25

              ligne 56, pourquoi response.text si on est censé retourner un format json ?

              si on fait un print(response.text) qu'est-ce que ça retourne ?

              si on fait un print(response.json()) qu'est-ce que ça retourne ?

              • Partager sur Facebook
              • Partager sur Twitter

              Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
              La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                23 janvier 2023 à 15:57:10

                Phil_1857 a écrit:

                Bonjour,

                data étant une variable, ce serait plutôt:

                print(f"Name of the series or film depicted in image {i} : {response_json[data][0]['url']}")

                rien ne chnage

                fred1599 a écrit:

                ligne 56, pourquoi response.text si on est censé retourner un format json ?

                si on fait un print(response.text) qu'est-ce que ça retourne ?

                {
                  "error": {
                    "code": null,
                    "message": "Additional properties are not allowed ('data' was unexpected)",
                    "param": null,
                    "type": "invalid_request_error"
                  }
                }



                si on fait un print(response.json()) qu'est-ce que ça retourne ?

                {'error': {'code': None, 'message': "Additional properties are not allowed ('data' was unexpected)", 'param': None, 'type': 'invalid_request_error'}}





                • Partager sur Facebook
                • Partager sur Twitter
                  23 janvier 2023 à 16:11:00

                  Tu es sûr que les datas que tu envoies sont bien au bon format demandé par l'API ?
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                  La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                    23 janvier 2023 à 16:56:55

                    fred1599 a écrit:

                    Tu es sûr que les datas que tu envoies sont bien au bon format demandé par l'API ?


                    normalement il n y a pas de problem la dessu

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 janvier 2023 à 8:03:02

                      Pourtant ça semble assez clair,

                      Additional properties are not allowed ('data' was unexpected)

                      et en lisant la doc sur l'API, je confirme !

                      -
                      Edité par fred1599 24 janvier 2023 à 8:07:53

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                      oipen ia request avec image

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown