askChatGpt
code:export.js
export async function askChatGpt(
systemPrompt,
userInput,
userQuote,
pageContent,
onSuccess,
{ temperature = 0.7, max_tokens = 500 } = {}
) {
console.log("Sending request to GPT:", { userInput, userQuote, pageContent }); // リクエスト情報をログに出力
const headers = {
"Content-Type": "application/json",
Authorization: "Bearer " + localStorage.getItem(keyName),
};
function escapeString(str) {
return str
.replace(/\\/g, "\\\\")
.replace(/"/g, '\\"')
.replace(/\n/g, "\\n")
.replace(/\r/g, "\\r")
.replace(/\t/g, "\\t");
}
if (typeof pageContent === "string") {
pageContent = escapeString(pageContent);
}
if (typeof userInput === "string") {
userInput = escapeString(userInput);
}
if (typeof userQuote === "string") {
userQuote = escapeString(userQuote);
}
console.log("data", userQuote, userInput, pageContent);
console.log(typeof userInput);
if (userInput === null) {
console.log("userInput is NULL");
}
const messages = [
{
role: "system",
content: systemPrompt,
},
{
role: "user",
content: "userInput: " + userInput,
},
{
role: "user",
"content": "userQuote: " + userQuote,
},
];
if (pageContent) {
messages.push({
role: "user",
"content": "pageContent: " + pageContent,
});
}
const data = JSON.stringify({
model: "gpt-3.5-turbo",
temperature: temperature,
max_tokens: max_tokens,
messages: messages,
});
console.log(data);
return $.ajax({
type: "POST",
headers: headers,
data: data,
success: onSuccess,
error: function(xhr, status, err) {
alert(err);
console.log(err);
}
});
/*
return await new Promise((resolve, reject) =>
GM_xmlhttpRequest({
method: "POST",
data,
headers,
onload: (response) => {
console.log("GPT Response:", response.responseText); // GPTからの応答をログに出力
resolve(JSON.parse(response.responseText));
},
responseType: "json",
onerror: (e) => {
console.error("GPT Request Error:", e); // エラーをログに出力
reject(e);
},
})
);
*/
};