# import openai # import json # openai.api_key = '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' # model = "gpt-3.5-turbo" # def get_keywords(question): # prompt = f"""je souhaite trouver la réponse à la question suivante à partir d'un fichier PDF en français. Veuillez me fournir 10 mots-clés et synonymes que je peux utiliser pour trouver les informations du PDF. Un seul mot par mot-clé. Utilisez uniquement des lettres minuscules. # {question}""" # response = openai.chat.completions.create( # model=model, # messages=[ # { # "role": "system", # "content": "Vous fournirez toujours des mots-clés incluant les synonymes des mots de la question d'origine. Les synonymes doivent être des termes juridiques couramment utilisés dans les articles de loi canadienne", }, # { # "role": "user", # "content": prompt, # }, # ], # functions=[ # { # "name": "list_keywords", # "description": "Utilisez cette fonction pour donner à l'utilisateur une liste de mots-clés", # "parameters": { # "type": "object", # "properties": { # "list": { # "type": "array", # "items": {"type": "string", "description": "A keyword"}, # "description": "A list of keywords", # } # }, # }, # "required": ["list"], # } # ], # function_call={"name": "list_keywords", "arguments": ["list"]}, # ) # arguments = response.choices[0].message.function_call.arguments.lower() # print(arguments) # return " ".join(arguments).split(" ") # def answer_question(chunk, question): # prompt = f"""``` # {chunk} # ``` # Sur la base des informations ci-dessus, quelle est la réponse à cette question? # ``` # {question} # ```""" # response = openai.chat.completions.create( # model=model, # messages=[ # { # "role": "system", # "content": "Définissez toujours answer_found sur false si la réponse à la question n'a pas été trouvée dans les informations fournies.", # }, # { # "role": "user", # "content": prompt, # }, # ], # functions=[ # { # "name": "give_response", # "description": "Utilisez cette fonction pour donner la réponse et si la réponse à la question a été trouvée ou non dans le texte.", # "parameters": { # "type": "object", # "properties": { # "answer_found": { # "type": "boolean", # "description": "Définissez ceci sur true uniquement si le texte fourni inclut une réponse à la question", # }, # "response": { # "type": "string", # "description": "La réponse complète à la question, si l'information était pertinente", # }, # }, # }, # "required": ["answer_found"], # } # ], # ) # try: # function_call = response.choices[0].message.function_call # arguments = function_call.arguments.lower() # result = json.loads(arguments) # return result # except KeyError: # return {"answer_found": False, "response": ""} import openai import json model = "gpt-3.5-turbo" openai.api_key = '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' def get_keywords(question): prompt = f""" Je souhaite trouver la réponse à la question suivante dans une colonne d'un fichier csv. Veuillez me fournir 10 mots-clés et synonymes que je peux utiliser pour trouver les informations du csv. Un seul mot par mot-clé. Utilisez uniquement des lettres minuscules. {question}""" response = openai.chat.completions.create( model=model, messages=[ { "role": "system", "content": "Vous fournirez toujours 10 mots-clés incluant des synonymes pertinents et explicit des mots de la question d’origine. Les synonymes doivent être des termes juridiques couramment utilisés dans les articles de loi canadienne", }, { "role": "user", "content": prompt, }, ], functions=[ { "name": "list_keywords", "description": "Utilisez cette fonction pour donner à l'utilisateur une liste de mots-clés", "parameters": { "type": "object", "properties": { "list": { "type": "array", "items": {"type": "string", "description": "A keyword"}, "description": "A list of keywords", } }, }, "required": ["list"], } ], function_call={"name": "list_keywords", "arguments": ["list"]}, ) arguments = response.choices[0].message.function_call.arguments.lower() keywords = json.loads(arguments)["list"] return " ".join(keywords).split(" ") def answer_question(chunk, question): prompt = f"""``` {chunk} ``` Sur la base des informations ci-dessus, quelle est la réponse à cette question? ``` {question} ```""" response = openai.chat.completions.create( model=model, messages=[ { "role": "system", "content": "Définissez toujours answer_found sur false si la réponse à la question n'a pas été trouvée dans les informations fournies.", }, { "role": "user", "content": prompt, }, ], functions=[ { "name": "give_response", "description": "Utilisez cette fonction pour donner la réponse et si la réponse à la question a été trouvée ou non dans le texte.", "parameters": { "type": "object", "properties": { "answer_found": { "type": "boolean", "description": "Définissez ceci sur true uniquement si le texte fourni inclut une réponse à la question", }, "response": { "type": "string", "description": "La réponse complète à la question, si l'information était pertinente", }, }, }, "required": ["answer_found"], } ], function_call={"name": "give_response", "arguments": ["answer_found"]}, ) try: function_call = response.choices[0].message.function_call arguments = function_call.arguments.lower() result = json.loads(arguments) return result except KeyError: return {"answer_found": False, "response": ""}