aymanemalih commited on
Commit
994ba27
·
1 Parent(s): 930d59b

Update gpt.py

Browse files
Files changed (1) hide show
  1. gpt.py +93 -18
gpt.py CHANGED
@@ -1,25 +1,100 @@
1
  import openai
2
 
3
  openai.api_key = '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'
4
- model = "gpt-3.5-turbo-1106"
 
 
5
 
6
  def get_keywords(question):
7
- prompt = f"Extract 10 keywords from the following question, including synonyms. Use only lowercase letters:\n\n{question}"
8
- response = openai.chat.completions.create(model=model, prompt=prompt, max_tokens=60, temperature=0)
9
- keywords = response.choices[0].text.strip().split(', ')
10
- return keywords
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
  def answer_question(chunk, question):
13
- prompt = f"Based on the following information, what is the answer to this question?\n\nText:\n{chunk}\n\nQuestion:\n{question}"
14
- response = openai.chat.completions.create(model=model, prompt=prompt, max_tokens=150, temperature=0)
15
- answer = response.choices[0].text.strip()
16
- return answer
17
-
18
- # Example usage
19
- question = "What are the key aspects of climate change?"
20
- keywords = get_keywords(question)
21
- print("Keywords:", keywords)
22
-
23
- chunk = "Climate change is a long-term change in the average weather patterns..."
24
- answer = answer_question(chunk, question)
25
- print("Answer:", answer)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import openai
2
 
3
  openai.api_key = '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'
4
+
5
+ model = "gpt-3.5-turbo"
6
+
7
 
8
  def get_keywords(question):
9
+ 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.
10
+ {question}"""
11
+
12
+ response = openai.ChatCompletion.create(
13
+ model=model,
14
+ messages=[
15
+ {
16
+ "role": "system",
17
+ "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", },
18
+ {
19
+ "role": "user",
20
+ "content": prompt,
21
+ },
22
+ ],
23
+ functions=[
24
+ {
25
+ "name": "list_keywords",
26
+ "description": "Utilisez cette fonction pour donner à l'utilisateur une liste de mots-clés",
27
+ "parameters": {
28
+ "type": "object",
29
+ "properties": {
30
+ "list": {
31
+ "type": "array",
32
+ "items": {"type": "string", "description": "A keyword"},
33
+ "description": "A list of keywords",
34
+ }
35
+ },
36
+ },
37
+ "required": ["list"],
38
+ }
39
+ ],
40
+ function_call={"name": "list_keywords", "arguments": ["list"]},
41
+ )
42
+
43
+ arguments = response["choices"][0]["message"]["function_call"]["arguments"].lower()
44
+ keywords = json.loads(arguments)["list"]
45
+
46
+ return " ".join(keywords).split(" ")
47
+
48
 
49
  def answer_question(chunk, question):
50
+ prompt = f"""```
51
+ {chunk}
52
+ ```
53
+
54
+ Sur la base des informations ci-dessus, quelle est la réponse à cette question?
55
+
56
+ ```
57
+ {question}
58
+ ```"""
59
+
60
+ response = openai.chat.completions.create(
61
+ model=model,
62
+ messages=[
63
+ {
64
+ "role": "system",
65
+ "content": "Définissez toujours answer_found sur false si la réponse à la question n'a pas été trouvée dans les informations fournies.",
66
+ },
67
+ {
68
+ "role": "user",
69
+ "content": prompt,
70
+ },
71
+ ],
72
+ functions=[
73
+ {
74
+ "name": "give_response",
75
+ "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.",
76
+ "parameters": {
77
+ "type": "object",
78
+ "properties": {
79
+ "answer_found": {
80
+ "type": "boolean",
81
+ "description": "Définissez ceci sur true uniquement si le texte fourni inclut une réponse à la question",
82
+ },
83
+ "response": {
84
+ "type": "string",
85
+ "description": "La réponse complète à la question, si l'information était pertinente",
86
+ },
87
+ },
88
+ },
89
+ "required": ["answer_found"],
90
+ }
91
+ ],
92
+ )
93
+
94
+ try:
95
+ function_call = response["choices"][0]["message"]["function_call"]
96
+ arguments = function_call["arguments"].lower()
97
+ result = json.loads(arguments)
98
+ return result
99
+ except KeyError:
100
+ return {"answer_found": False, "response": ""}