-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathresolver.js
More file actions
79 lines (67 loc) · 2.88 KB
/
Copy pathresolver.js
File metadata and controls
79 lines (67 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import fetch from 'node-fetch';
import mongoose from 'mongoose';
const RequestResponseSchema = new mongoose.Schema({
location: String,
personality: String,
response: String,
timestamp: { type: Date, default: Date.now }
});
const RequestResponse = mongoose.model('RequestResponse', RequestResponseSchema);
const resolvers = {
Query: {
getRequestResponse: async (_, { location, personality }) => {
// Check ms-cache first
let cacheResponse = await fetch('http://ms-cache:4000', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: `
query ExampleQuery($location: String!, $personality: String!) {
getCacheChat(location: $location, personality: $personality)
}
`,
variables: { location, personality }
})
});
const cacheData = await cacheResponse.json();
const cachedResult = cacheData.data.getCacheChat;
// If ms-cache has a valid response, return that
if (cachedResult !== 'Pas de réponse trouvée pour cette combinaison de localisation et de personnalité.') {
return cachedResult;
}
// Else, continue to ms-gptlink
const prompt = `Salut Guide ! Je suis en vacances à ${location}. J’aime les sorties de type : ${personality}. Que me proposes-tu ? Inclus moi un lien Google de l’établissement ou du lieux pour être sûr qu’il est bien ouvert. Tu peux étendre la zone à quelques kilomètres autour si il y a des trucs sympa à faire !`;
const gptResponse = await fetch('http://ms-gptlink:4000', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: `
query ExampleQuery($prompt: String!) {
getCompletion(prompt: $prompt)
}
`,
variables: { prompt }
})
});
const gptData = await gptResponse.json();
const gptResult = gptData.data.getCompletion;
// Save the message and response to MongoDB
const requestResponseEntry = new RequestResponse({
location: location,
personality: personality,
response: gptResult
});
try {
await requestResponseEntry.save();
} catch (error) {
console.error("Erreur lors de la sauvegarde:", error);
}
return gptResult;
},
},
};
export default resolvers;