3f4efe8d by Janis

Merge branch '26797_formatting' into 'master'

26797_formatting

See merge request !2
2 parents c7cb2442 f00232ef
1 node_modules
...\ No newline at end of file ...\ No newline at end of file
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
2 2
3 # dependencies 3 # dependencies
4 /node_modules 4 /node_modules
5 node_modules
5 /.pnp 6 /.pnp
6 .pnp.js 7 .pnp.js
7 8
......
This diff could not be displayed because it is too large.
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
8 "@testing-library/user-event": "^13.5.0", 8 "@testing-library/user-event": "^13.5.0",
9 "react": "^18.2.0", 9 "react": "^18.2.0",
10 "react-dom": "^18.2.0", 10 "react-dom": "^18.2.0",
11 "react-openai-api": "^1.0.2",
11 "react-scripts": "5.0.1", 12 "react-scripts": "5.0.1",
12 "web-vitals": "^2.1.4" 13 "web-vitals": "^2.1.4"
13 }, 14 },
......
1 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#fff" class="bi bi-person" viewBox="0 0 16 16">
2 <path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"/>
3 </svg>
...\ No newline at end of file ...\ No newline at end of file
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
9 .sidemenu { 9 .sidemenu {
10 width:260px; 10 width:260px;
11 padding:10px; 11 padding:10px;
12 background-color:#202123; 12 background-color: #202123;
13 } 13 }
14 /* under 640px do this */ 14 /* under 640px do this */
15 @media (max-width: 640px) { 15 @media (max-width: 640px) {
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
34 padding-right:12px; 34 padding-right:12px;
35 } 35 }
36 36
37
37 .chatbox { 38 .chatbox {
38 flex:1; 39 flex:1;
39 background-color:#343541; 40 background-color:#343541;
...@@ -58,16 +59,17 @@ ...@@ -58,16 +59,17 @@
58 position:absolute; 59 position:absolute;
59 bottom:0; 60 bottom:0;
60 left:0;right:0; 61 left:0;right:0;
62 background: rgb(57 57 57);
61 } 63 }
62 .chat-input-textarea { 64 .chat-input-textarea {
63 background-color:#40414f; 65 background-color: #40414f;
64 width:90%; 66 width: 90%;
65 padding:12px; 67 padding: 12px;
66 border-radius:5px; 68 border-radius: 5px;
67 color:white; 69 color: #ffffff;
68 font-size:1.25em; 70 font-size: 1.25em;
69 border:none; 71 border: none;
70 outline:none; 72 outline: none;
71 box-shadow: 0 0 8px 0 rgba(0,0,0,0.25); 73 box-shadow: 0 0 8px 0 rgba(0,0,0,0.25);
72 } 74 }
73 75
...@@ -94,20 +96,21 @@ ...@@ -94,20 +96,21 @@
94 } 96 }
95 97
96 .chat-message.chatgpt { 98 .chat-message.chatgpt {
97 background-color:#444654; 99 background-color:#ffffff;
98 } 100 }
99 .chat-message-center { 101 .chat-message-center {
100 max-width:640px; 102 max-width:640px;
101 margin-left:auto; 103 margin-left:auto;
102 margin-right:auto; 104 margin-right:auto;
103 display:flex; 105 display:flex;
104 padding:12px; 106 padding: 12px 24px;
105 padding-left: 24px; 107 }
106 padding-right: 24px; 108
107 109 section::-webkit-scrollbar {
110 display: none;
108 } 111 }
109 .avatar { 112 .avatar {
110 background:white; 113 background:#ffffff;
111 border-radius:50%; 114 border-radius:50%;
112 width: 40px; 115 width: 40px;
113 height: 40px; 116 height: 40px;
...@@ -118,6 +121,8 @@ ...@@ -118,6 +121,8 @@
118 font-size:14px; 121 font-size:14px;
119 color:#444654; 122 color:#444654;
120 } 123 }
124
125
121 .avatar.chatgpt { 126 .avatar.chatgpt {
122 background:#0da37f; 127 background:#0da37f;
123 border-radius:50%; 128 border-radius:50%;
...@@ -127,8 +132,11 @@ ...@@ -127,8 +132,11 @@
127 color:white; 132 color:white;
128 } 133 }
129 .message { 134 .message {
130 padding-left: 40px; 135 padding: 7px 20px;
131 padding-right: 40px; 136 }
137
138 .chat-message.false {
139 background: #eef2ff;
132 } 140 }
133 141
134 @keyframes App-logo-spin { 142 @keyframes App-logo-spin {
...@@ -142,18 +150,18 @@ ...@@ -142,18 +150,18 @@
142 150
143 .select-models { 151 .select-models {
144 border: 1px solid white; 152 border: 1px solid white;
145 padding:12px; 153 padding: 12px;
146 border-radius:5px; 154 border-radius:5px;
147 color:white; 155 color: white;
148 background:transparent; 156 background: transparent;
149 outline:none; 157 outline:none;
150 cursor:pointer; 158 cursor:pointer;
151 max-width:100%; 159 max-width:100%;
152 min-width:100%; 160 min-width:100%;
153 } 161 }
154 .select-models option { 162 .select-models option {
155 background:black; 163 background: black;
156 color:white; 164 color: #ffffff;
157 } 165 }
158 166
159 .button-picker { 167 .button-picker {
...@@ -208,4 +216,4 @@ ...@@ -208,4 +216,4 @@
208 } 216 }
209 .submit:hover { 217 .submit:hover {
210 background:#066d55; 218 background:#066d55;
211 }
...\ No newline at end of file ...\ No newline at end of file
219 }
......
1 import './normal.css'; 1 import './normal.css';
2 import './App.css'; 2 import './App.css';
3 import './color_theme_1.css';
3 import { useState, useEffect } from 'react'; 4 import { useState, useEffect } from 'react';
4 import SideMenu from './SideMenu' 5 import SideMenu from './SideMenu'
5 import ChatBox from './ChatBox' 6 import ChatBox from './ChatBox'
7 import OpenAIAPI from "react-openai-api";
6 8
7 function App() { 9 function App() {
8 10
...@@ -38,7 +40,7 @@ function App() { ...@@ -38,7 +40,7 @@ function App() {
38 setModels(data.models.data) 40 setModels(data.models.data)
39 }) 41 })
40 } 42 }
41 43
42 async function handleSubmit(e){ 44 async function handleSubmit(e){
43 e.preventDefault(); 45 e.preventDefault();
44 let chatLogNew = [...chatLog, { user: "me", message: `${chatInput}`} ] 46 let chatLogNew = [...chatLog, { user: "me", message: `${chatInput}`} ]
...@@ -46,30 +48,89 @@ function App() { ...@@ -46,30 +48,89 @@ function App() {
46 setChatLog(chatLogNew) 48 setChatLog(chatLogNew)
47 // fetch response to the api combining the chat log array of messages and seinding it as a message to localhost:3000 as a post 49 // fetch response to the api combining the chat log array of messages and seinding it as a message to localhost:3000 as a post
48 const messages = chatLogNew.map((message) => message.message).join("\n") 50 const messages = chatLogNew.map((message) => message.message).join("\n")
49 51
50 const response = await fetch("http://localhost:3080/", { 52
51 method: "POST", 53 // const response = await fetch("http://localhost:3080/", {
52 headers: { 54 // method: "POST",
53 "Content-Type": "application/json" 55 // headers: {
54 }, 56 // "Content-Type": "application/json"
55 body: JSON.stringify({ 57 // },
56 message: messages, 58 // body: JSON.stringify({
57 currentModel, 59 // message: messages,
58 }) 60 // currentModel,
59 }); 61 // })
60 const data = await response.json(); 62 // });
61 setChatLog([...chatLogNew, { user: "gpt", message: `${data.message}`} ]) 63 // const data = await response.json();
62 var scrollToTheBottomChatLog = document.getElementsByClassName("chat-log")[0]; 64 // setChatLog([...chatLogNew, { user: "gpt", message: `${data.message}`} ])
63 scrollToTheBottomChatLog.scrollTop = scrollToTheBottomChatLog.scrollHeight; 65 // var scrollToTheBottomChatLog = document.getElementsByClassName("chat-log")[0];
66 // scrollToTheBottomChatLog.scrollTop = scrollToTheBottomChatLog.scrollHeight;
67
68 var oHttp = new XMLHttpRequest();
69 oHttp.open("POST", "https://api.openai.com/v1/completions");
70 oHttp.setRequestHeader("Accept", "application/json");
71 oHttp.setRequestHeader("Content-Type", "application/json");
72 oHttp.setRequestHeader("Authorization", "Bearer " + "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")
73
74 oHttp.onreadystatechange = function () {
75 if (oHttp.readyState === 4) {
76 var s = ''
77 var oJson = {}
78 if (s != "") s += "\n";
79 try {
80 oJson = JSON.parse(oHttp.responseText);
81 } catch (ex) {
82 s += "Error: " + ex.message
83 }
84 if (oJson.error && oJson.error.message) {
85 s += "Error: " + oJson.error.message;
86 } else if (oJson.choices && oJson.choices[0].text) {
87 s = oJson.choices[0].text;
88 var a = s.split("?\n");
89 if (a.length == 2) {
90 s = a[1];
91 }
92 // if (selLang.value != "en-US") {
93 // var a = s.split("?\n");
94 // if (a.length == 2) {
95 // s = a[1];
96 // }
97 // }
98 if (s == "") s = "No response";
99 console.log('ssssssssssssssssssssss',s);
100 var replaceBR= (s.replace(/(?:\r\n|\r|\n)/g, "<br>")).replace(/\r?\n|\r/, "");
101
102 setChatLog([...chatLogNew, { user: "gpt", message: `${replaceBR}`} ]);
103 }
104 }
105 };
106
107 var sModel = currentModel;// "text-davinci-003";
108 var iMaxTokens = 100;
109 var sUserId = "1";
110 var dTemperature =temperature;
111
112 var data = {
113 model: sModel,
114 prompt: messages,
115 max_tokens: iMaxTokens,
116 //user: sUserId,
117 temperature: dTemperature,
118 // frequency_penalty: 0.0, //Number between -2.0 and 2.0 Positive value decrease the model's likelihood to repeat the same line verbatim.
119 //presence_penalty: 0.0, //Number between -2.0 and 2.0. Positive values increase the model's likelihood to talk about new topics.
120 //stop: ["#", ";"] //Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.
121 }
122
123 oHttp.send(JSON.stringify(data));;
124
64 } 125 }
65 126
66 function handleTemp(temp) { 127 function handleTemp(temp) {
67 if(temp > 1){ 128 if(temp > 1){
68 setTemperature(1) 129 // setTemperature(1)
69 } else if (temp < 0){ 130 } else if (temp < 0){
70 setTemperature(0) 131 // setTemperature(0)
71 } else { 132 } else {
72 setTemperature(temp) 133 // setTemperature(temp)
73 } 134 }
74 135
75 } 136 }
...@@ -77,17 +138,17 @@ function App() { ...@@ -77,17 +138,17 @@ function App() {
77 return ( 138 return (
78 <div className="App"> 139 <div className="App">
79 <SideMenu 140 <SideMenu
80 currentModel={currentModel} 141 currentModel={currentModel}
81 setCurrentModel={setCurrentModel} 142 setCurrentModel={setCurrentModel}
82 models={models} 143 models={models}
83 setTemperature={handleTemp} 144 setTemperature={handleTemp}
84 temperature={temperature} 145 temperature={temperature}
85 clearChat={clearChat} 146 clearChat={clearChat}
86 /> 147 />
87 <ChatBox 148 <ChatBox
88 chatInput={chatInput} 149 chatInput={chatInput}
89 chatLog={chatLog} 150 chatLog={chatLog}
90 setChatInput={setChatInput} 151 setChatInput={setChatInput}
91 handleSubmit={handleSubmit} /> 152 handleSubmit={handleSubmit} />
92 </div> 153 </div>
93 ); 154 );
......
...@@ -10,7 +10,7 @@ const ChatBox = ({chatLog, setChatInput, handleSubmit, chatInput}) => ...@@ -10,7 +10,7 @@ const ChatBox = ({chatLog, setChatInput, handleSubmit, chatInput}) =>
10 </div> 10 </div>
11 <div className="chat-input-holder"> 11 <div className="chat-input-holder">
12 <form className="form" onSubmit={handleSubmit}> 12 <form className="form" onSubmit={handleSubmit}>
13 <input 13 <input
14 rows="1" 14 rows="1"
15 value={chatInput} 15 value={chatInput}
16 onChange={(e)=> setChatInput(e.target.value)} 16 onChange={(e)=> setChatInput(e.target.value)}
...@@ -26,11 +26,12 @@ const ChatMessage = ({ message }) => { ...@@ -26,11 +26,12 @@ const ChatMessage = ({ message }) => {
26 <div className={`chat-message ${message.user === "gpt" && "chatgpt"}`}> 26 <div className={`chat-message ${message.user === "gpt" && "chatgpt"}`}>
27 <div className="chat-message-center"> 27 <div className="chat-message-center">
28 <div className={`avatar ${message.user === "gpt" && "chatgpt"}`}> 28 <div className={`avatar ${message.user === "gpt" && "chatgpt"}`}>
29 {message.user === "gpt" ? <OpenAISVGLogo /> : <div>You</div>} 29 {message.user === "gpt" ? <img className="ai-logo" src="../assets/images/bot.png" width="30px"/> : <img className="ai-logo" src="../assets/images/user.svg" />}
30 </div> 30 </div>
31 <div className="message"> 31 {/* <div className="message">
32 {message.message} 32 {message.message}
33 </div> 33 </div> */}
34 <div className="message" dangerouslySetInnerHTML={{ __html: message.message }} />
34 </div> 35 </div>
35 </div> 36 </div>
36 ) 37 )
......
1 const SideMenu = ({ clearChat, currentModel, setCurrentModel, models, setTemperature, temperature }) => 1 const SideMenu = ({ clearChat, currentModel, setCurrentModel, models, setTemperature, temperature }) =>
2 <aside className="sidemenu"> 2 <aside className="sidemenu">
3 <div className="side-menu-button" onClick={clearChat}> 3 <div className="ai-logo-container">
4 <span>+</span> 4 <img className="ai-logo" src="../assets/images/AIPRO-WHITE.png" height="50px"/>
5 New Chat 5 </div>
6 </div> 6 <div className="side-menu-button" onClick={clearChat}>
7 <div className="models"> 7 <span>+</span>
8 <label className="side-label">Model</label> 8 New Chat
9 <select 9 </div>
10 // active if model is select is currentModel 10 <div className="models">
11 value={currentModel} 11 <label className="side-label">Model</label>
12 className="select-models" 12 <select
13 onChange={(e)=>{ 13 // active if model is select is currentModel
14 setCurrentModel(e.target.value) 14 value={currentModel}
15 }}> 15 className="select-models"
16 {models && models.length ? models.map((model, index) => ( 16 onChange={(e)=>{
17 <option 17 setCurrentModel(e.target.value)
18 key={model.id} 18 }}>
19 value={model.id}>{model.id}</option> 19 {models && models.length ? models.map((model, index) => (
20 )) : <option 20 <option
21 key={"text-davinci-003"} 21 key={model.id}
22 value={"text-davinci-003"}>{"text-davinci-003"}</option>} 22 value={model.id}>{model.id}</option>
23 </select> 23 )) : <option
24 24 key={"text-davinci-003"}
25 <Button 25 value={"text-davinci-003"}>{"text-davinci-003"}</option>}
26 text="Smart - Davinci" 26 </select>
27 onClick={()=>setCurrentModel("text-davinci-003")} /> 27
28 <Button 28 <Button
29 text="Code - Crushman" 29 text="Smart - Davinci"
30 onClick={()=>setCurrentModel("code-cushman-001")} /> 30 onClick={()=>setCurrentModel("text-davinci-003")} />
31 <span className="info"> 31 <Button
32 The model parameter controls the engine used to generate the response. Davinci produces best results. 32 text="Code - Crushman"
33 </span> 33 onClick={()=>setCurrentModel("code-cushman-001")} />
34 <label className="side-label" >Temperature</label> 34 <span className="info">
35 <input 35 The model parameter controls the engine used to generate the response. Davinci produces best results.
36 className="select-models" 36 </span>
37 type="number" 37 <label className="side-label" >Temperature</label>
38 onChange={(e)=> setTemperature(e.target.value)} 38 <input
39 min="0" 39 className="select-models"
40 max="1" 40 type="number"
41 step="0.1" 41 onChange={(e)=> setTemperature(e.target.value)}
42 value={temperature} 42 min="0"
43 /> 43 max="1"
44 <Button 44 step="0.1"
45 text="0 - Logical" 45 value={temperature}
46 onClick={()=>setTemperature(0)} /> 46 />
47 <Button 47 <Button
48 text="0.5 - Balanced" 48 text="0 - Logical"
49 onClick={()=>setTemperature(0.5)} /> 49 onClick={()=>setTemperature(0)} />
50 <Button 50 <Button
51 text="1 - Creative" 51 text="0.5 - Balanced"
52 onClick={()=>setTemperature(1)} /> 52 onClick={()=>setTemperature(0.5)} />
53 <span className="info"> 53 <Button
54 The temperature parameter controls the randomness of the model. 0 is the most logical, 1 is the most creative. 54 text="1 - Creative"
55 </span> 55 onClick={()=>setTemperature(1)} />
56 </div> 56 <span className="info">
57 </aside> 57 The temperature parameter controls the randomness of the model. 0 is the most logical, 1 is the most creative.
58 </span>
59 </div>
60 </aside>
58 61
59 const Button = ({ onClick, text }) => 62 const Button = ({ onClick, text }) =>
60 <div 63 <div
61 className="button-picker" 64 className="button-picker"
62 onClick={onClick}> 65 onClick={onClick}>
63 {text} 66 {text}
64 </div> 67 </div>
......
1 .sidemenu {
2 background-color: #101827 !important;
3 }
4
5 .side-menu-button {
6 border:0 solid white;
7 /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#cedbe9+0,aac5de+17,6199c7+50,3a84c3+51,419ad6+59,4bb8f0+71,3a8bc2+84,26558b+100;Blue+Gloss */
8 background: rgb(206,219,233); /* Old browsers */
9 background: -moz-linear-gradient(-45deg, rgba(206,219,233,1) 0%, rgba(170,197,222,1) 17%, rgba(97,153,199,1) 50%, rgba(58,132,195,1) 51%, rgba(65,154,214,1) 59%, rgba(75,184,240,1) 71%, rgba(58,139,194,1) 84%, rgba(38,85,139,1) 100%); /* FF3.6-15 */
10 background: -webkit-linear-gradient(-45deg, rgba(206,219,233,1) 0%,rgba(170,197,222,1) 17%,rgba(97,153,199,1) 50%,rgba(58,132,195,1) 51%,rgba(65,154,214,1) 59%,rgba(75,184,240,1) 71%,rgba(58,139,194,1) 84%,rgba(38,85,139,1) 100%); /* Chrome10-25,Safari5.1-6 */
11 background: linear-gradient(135deg, rgba(206,219,233,1) 0%,rgba(170,197,222,1) 17%,rgba(97,153,199,1) 50%,rgba(58,132,195,1) 51%,rgba(65,154,214,1) 59%,rgba(75,184,240,1) 71%,rgba(58,139,194,1) 84%,rgba(38,85,139,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
12 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cedbe9', endColorstr='#26558b',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
13 text-shadow: 1px 1px 0px black;
14 font-weight: 500;
15 }
16
17 span.info {
18 text-align: left;
19 width: 100% !important;
20 display: block;
21 padding: 10px;
22 line-height: 1.5;
23 }
24
25 .chatbox {
26 background-color:#ffffff !important;
27 }
28
29 .chat-input-holder {
30 padding:15px !important;
31 background: rgb(57 57 57) !important;
32 }
33 .chat-input-textarea {
34 background-color: #dddddd !important;
35 color: #101827 !important;
36 font-size: 16px !important;
37 box-shadow: 0px 7px 6px -6px black !important;
38 }
39
40 .chat-message.chatgpt {
41 background-color:#ffffff !important;
42 }
43 .chat-message-center {
44 padding: 20px 10px !important;
45 }
46
47 .avatar {
48 background:#6BA447 !important;
49 border-radius:5px !important;
50 box-shadow: 0px 5px 5px -3px black !important;
51 }
52
53
54 .avatar.chatgpt {
55 background:#667DF1 !important;
56 border-radius:5px !important;
57 box-shadow: 0px 5px 5px -3px black !important;
58 }
59 .message {
60 padding: 7px 20px !important;
61 line-height: 25px;
62 font-size: 14px;
63 font-family: "Poppins", "Karla", sans-serif;
64 color: #353b4f;
65 -moz-osx-font-smoothing: grayscale;
66 -webkit-font-smoothing: antialiased !important;
67 -moz-font-smoothing: antialiased !important;
68 text-rendering: optimizelegibility !important;
69 }
70
71 .select-models {
72 padding:5px 10px !important;
73 background: #4d4f54 !important;
74 color: #5c6aa5 !important;
75 background: #ffffff !important;
76 border: 0 solid white;
77 }
78 .select-models option {
79 background: #2c374b !important;
80 color: #ffffff;
81 font-size: 12px;
82 }
83
84 .button-picker {
85 background:#5c6aa5 !important;
86 }
87
88 .submit {
89 /* Permalink - use to edit and share this gradient: https://colorzilla.com/gradient-editor/#b4ddb4+0,83c783+17,52b152+33,008a00+67,005700+83,002400+100;Green+3D+%231 */
90 background: rgb(180,221,180); /* Old browsers */
91 background: -moz-linear-gradient(-45deg, rgba(180,221,180,1) 0%, rgba(131,199,131,1) 17%, rgba(82,177,82,1) 33%, rgba(0,138,0,1) 67%, rgba(0,87,0,1) 83%, rgba(0,36,0,1) 100%); /* FF3.6-15 */
92 background: -webkit-linear-gradient(-45deg, rgba(180,221,180,1) 0%,rgba(131,199,131,1) 17%,rgba(82,177,82,1) 33%,rgba(0,138,0,1) 67%,rgba(0,87,0,1) 83%,rgba(0,36,0,1) 100%); /* Chrome10-25,Safari5.1-6 */
93 background: linear-gradient(135deg, rgba(180,221,180,1) 0%,rgba(131,199,131,1) 17%,rgba(82,177,82,1) 33%,rgba(0,138,0,1) 67%,rgba(0,87,0,1) 83%,rgba(0,36,0,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
94 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b4ddb4', endColorstr='#002400',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
95 box-shadow: 0 10px 12px -8px black;
96 }
97
98 .ai-logo-container {
99 text-align: center;
100 padding: 10px 0;
101 }
...\ No newline at end of file ...\ No newline at end of file
...@@ -5,8 +5,8 @@ const cors = require('cors') ...@@ -5,8 +5,8 @@ const cors = require('cors')
5 5
6 // Open AI Configuration 6 // Open AI Configuration
7 const configuration = new Configuration({ 7 const configuration = new Configuration({
8 organization: "org-organization", 8 organization: "org-2OIAoj4fSwE4RCzgvglUM55T",
9 apiKey: "sk-apiKey", 9 apiKey: "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",
10 }); 10 });
11 const openai = new OpenAIApi(configuration); 11 const openai = new OpenAIApi(configuration);
12 12
...@@ -19,7 +19,7 @@ app.use(cors()) ...@@ -19,7 +19,7 @@ app.use(cors())
19 app.use(require('morgan')('dev')) 19 app.use(require('morgan')('dev'))
20 20
21 21
22 // Routing 22 // Routing
23 23
24 // Primary Open AI Route 24 // Primary Open AI Route
25 app.post('/', async (req, res) => { 25 app.post('/', async (req, res) => {
...@@ -27,7 +27,7 @@ app.post('/', async (req, res) => { ...@@ -27,7 +27,7 @@ app.post('/', async (req, res) => {
27 const response = await openai.createCompletion({ 27 const response = await openai.createCompletion({
28 model: `${currentModel}`,// "text-davinci-003", 28 model: `${currentModel}`,// "text-davinci-003",
29 prompt: `${message}`, 29 prompt: `${message}`,
30 max_tokens: 100, 30 max_tokens: 100,
31 temperature, 31 temperature,
32 }); 32 });
33 res.json({ 33 res.json({
......
1 {
2 "name": "chatgpt-server",
3 "version": "1.0.0",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "accepts": {
8 "version": "1.3.8",
9 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
10 "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
11 "requires": {
12 "mime-types": "~2.1.34",
13 "negotiator": "0.6.3"
14 }
15 },
16 "array-flatten": {
17 "version": "1.1.1",
18 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
19 "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
20 },
21 "asynckit": {
22 "version": "0.4.0",
23 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
24 "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
25 },
26 "axios": {
27 "version": "0.26.1",
28 "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
29 "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
30 "requires": {
31 "follow-redirects": "^1.14.8"
32 }
33 },
34 "basic-auth": {
35 "version": "2.0.1",
36 "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
37 "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
38 "requires": {
39 "safe-buffer": "5.1.2"
40 },
41 "dependencies": {
42 "safe-buffer": {
43 "version": "5.1.2",
44 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
45 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
46 }
47 }
48 },
49 "body-parser": {
50 "version": "1.20.1",
51 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
52 "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
53 "requires": {
54 "bytes": "3.1.2",
55 "content-type": "~1.0.4",
56 "debug": "2.6.9",
57 "depd": "2.0.0",
58 "destroy": "1.2.0",
59 "http-errors": "2.0.0",
60 "iconv-lite": "0.4.24",
61 "on-finished": "2.4.1",
62 "qs": "6.11.0",
63 "raw-body": "2.5.1",
64 "type-is": "~1.6.18",
65 "unpipe": "1.0.0"
66 }
67 },
68 "bytes": {
69 "version": "3.1.2",
70 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
71 "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
72 },
73 "call-bind": {
74 "version": "1.0.2",
75 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
76 "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
77 "requires": {
78 "function-bind": "^1.1.1",
79 "get-intrinsic": "^1.0.2"
80 }
81 },
82 "combined-stream": {
83 "version": "1.0.8",
84 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
85 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
86 "requires": {
87 "delayed-stream": "~1.0.0"
88 }
89 },
90 "content-disposition": {
91 "version": "0.5.4",
92 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
93 "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
94 "requires": {
95 "safe-buffer": "5.2.1"
96 }
97 },
98 "content-type": {
99 "version": "1.0.5",
100 "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
101 "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
102 },
103 "cookie": {
104 "version": "0.5.0",
105 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
106 "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
107 },
108 "cookie-signature": {
109 "version": "1.0.6",
110 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
111 "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
112 },
113 "cors": {
114 "version": "2.8.5",
115 "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
116 "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
117 "requires": {
118 "object-assign": "^4",
119 "vary": "^1"
120 }
121 },
122 "debug": {
123 "version": "2.6.9",
124 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
125 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
126 "requires": {
127 "ms": "2.0.0"
128 }
129 },
130 "delayed-stream": {
131 "version": "1.0.0",
132 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
133 "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
134 },
135 "depd": {
136 "version": "2.0.0",
137 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
138 "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
139 },
140 "destroy": {
141 "version": "1.2.0",
142 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
143 "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
144 },
145 "ee-first": {
146 "version": "1.1.1",
147 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
148 "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
149 },
150 "encodeurl": {
151 "version": "1.0.2",
152 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
153 "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
154 },
155 "escape-html": {
156 "version": "1.0.3",
157 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
158 "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
159 },
160 "etag": {
161 "version": "1.8.1",
162 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
163 "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
164 },
165 "express": {
166 "version": "4.18.2",
167 "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
168 "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
169 "requires": {
170 "accepts": "~1.3.8",
171 "array-flatten": "1.1.1",
172 "body-parser": "1.20.1",
173 "content-disposition": "0.5.4",
174 "content-type": "~1.0.4",
175 "cookie": "0.5.0",
176 "cookie-signature": "1.0.6",
177 "debug": "2.6.9",
178 "depd": "2.0.0",
179 "encodeurl": "~1.0.2",
180 "escape-html": "~1.0.3",
181 "etag": "~1.8.1",
182 "finalhandler": "1.2.0",
183 "fresh": "0.5.2",
184 "http-errors": "2.0.0",
185 "merge-descriptors": "1.0.1",
186 "methods": "~1.1.2",
187 "on-finished": "2.4.1",
188 "parseurl": "~1.3.3",
189 "path-to-regexp": "0.1.7",
190 "proxy-addr": "~2.0.7",
191 "qs": "6.11.0",
192 "range-parser": "~1.2.1",
193 "safe-buffer": "5.2.1",
194 "send": "0.18.0",
195 "serve-static": "1.15.0",
196 "setprototypeof": "1.2.0",
197 "statuses": "2.0.1",
198 "type-is": "~1.6.18",
199 "utils-merge": "1.0.1",
200 "vary": "~1.1.2"
201 }
202 },
203 "finalhandler": {
204 "version": "1.2.0",
205 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
206 "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
207 "requires": {
208 "debug": "2.6.9",
209 "encodeurl": "~1.0.2",
210 "escape-html": "~1.0.3",
211 "on-finished": "2.4.1",
212 "parseurl": "~1.3.3",
213 "statuses": "2.0.1",
214 "unpipe": "~1.0.0"
215 }
216 },
217 "follow-redirects": {
218 "version": "1.15.2",
219 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
220 "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
221 },
222 "form-data": {
223 "version": "4.0.0",
224 "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
225 "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
226 "requires": {
227 "asynckit": "^0.4.0",
228 "combined-stream": "^1.0.8",
229 "mime-types": "^2.1.12"
230 }
231 },
232 "forwarded": {
233 "version": "0.2.0",
234 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
235 "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
236 },
237 "fresh": {
238 "version": "0.5.2",
239 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
240 "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
241 },
242 "function-bind": {
243 "version": "1.1.1",
244 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
245 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
246 },
247 "get-intrinsic": {
248 "version": "1.2.0",
249 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
250 "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
251 "requires": {
252 "function-bind": "^1.1.1",
253 "has": "^1.0.3",
254 "has-symbols": "^1.0.3"
255 }
256 },
257 "has": {
258 "version": "1.0.3",
259 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
260 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
261 "requires": {
262 "function-bind": "^1.1.1"
263 }
264 },
265 "has-symbols": {
266 "version": "1.0.3",
267 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
268 "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
269 },
270 "http-errors": {
271 "version": "2.0.0",
272 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
273 "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
274 "requires": {
275 "depd": "2.0.0",
276 "inherits": "2.0.4",
277 "setprototypeof": "1.2.0",
278 "statuses": "2.0.1",
279 "toidentifier": "1.0.1"
280 }
281 },
282 "iconv-lite": {
283 "version": "0.4.24",
284 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
285 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
286 "requires": {
287 "safer-buffer": ">= 2.1.2 < 3"
288 }
289 },
290 "inherits": {
291 "version": "2.0.4",
292 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
293 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
294 },
295 "ipaddr.js": {
296 "version": "1.9.1",
297 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
298 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
299 },
300 "media-typer": {
301 "version": "0.3.0",
302 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
303 "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
304 },
305 "merge-descriptors": {
306 "version": "1.0.1",
307 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
308 "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
309 },
310 "methods": {
311 "version": "1.1.2",
312 "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
313 "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
314 },
315 "mime": {
316 "version": "1.6.0",
317 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
318 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
319 },
320 "mime-db": {
321 "version": "1.52.0",
322 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
323 "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
324 },
325 "mime-types": {
326 "version": "2.1.35",
327 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
328 "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
329 "requires": {
330 "mime-db": "1.52.0"
331 }
332 },
333 "morgan": {
334 "version": "1.10.0",
335 "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
336 "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
337 "requires": {
338 "basic-auth": "~2.0.1",
339 "debug": "2.6.9",
340 "depd": "~2.0.0",
341 "on-finished": "~2.3.0",
342 "on-headers": "~1.0.2"
343 },
344 "dependencies": {
345 "on-finished": {
346 "version": "2.3.0",
347 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
348 "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
349 "requires": {
350 "ee-first": "1.1.1"
351 }
352 }
353 }
354 },
355 "ms": {
356 "version": "2.0.0",
357 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
358 "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
359 },
360 "negotiator": {
361 "version": "0.6.3",
362 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
363 "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
364 },
365 "object-assign": {
366 "version": "4.1.1",
367 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
368 "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
369 },
370 "object-inspect": {
371 "version": "1.12.3",
372 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
373 "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
374 },
375 "on-finished": {
376 "version": "2.4.1",
377 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
378 "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
379 "requires": {
380 "ee-first": "1.1.1"
381 }
382 },
383 "on-headers": {
384 "version": "1.0.2",
385 "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
386 "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
387 },
388 "openai": {
389 "version": "3.1.0",
390 "resolved": "https://registry.npmjs.org/openai/-/openai-3.1.0.tgz",
391 "integrity": "sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg==",
392 "requires": {
393 "axios": "^0.26.0",
394 "form-data": "^4.0.0"
395 }
396 },
397 "parseurl": {
398 "version": "1.3.3",
399 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
400 "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
401 },
402 "path-to-regexp": {
403 "version": "0.1.7",
404 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
405 "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
406 },
407 "proxy-addr": {
408 "version": "2.0.7",
409 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
410 "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
411 "requires": {
412 "forwarded": "0.2.0",
413 "ipaddr.js": "1.9.1"
414 }
415 },
416 "qs": {
417 "version": "6.11.0",
418 "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
419 "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
420 "requires": {
421 "side-channel": "^1.0.4"
422 }
423 },
424 "range-parser": {
425 "version": "1.2.1",
426 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
427 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
428 },
429 "raw-body": {
430 "version": "2.5.1",
431 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
432 "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
433 "requires": {
434 "bytes": "3.1.2",
435 "http-errors": "2.0.0",
436 "iconv-lite": "0.4.24",
437 "unpipe": "1.0.0"
438 }
439 },
440 "safe-buffer": {
441 "version": "5.2.1",
442 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
443 "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
444 },
445 "safer-buffer": {
446 "version": "2.1.2",
447 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
448 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
449 },
450 "send": {
451 "version": "0.18.0",
452 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
453 "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
454 "requires": {
455 "debug": "2.6.9",
456 "depd": "2.0.0",
457 "destroy": "1.2.0",
458 "encodeurl": "~1.0.2",
459 "escape-html": "~1.0.3",
460 "etag": "~1.8.1",
461 "fresh": "0.5.2",
462 "http-errors": "2.0.0",
463 "mime": "1.6.0",
464 "ms": "2.1.3",
465 "on-finished": "2.4.1",
466 "range-parser": "~1.2.1",
467 "statuses": "2.0.1"
468 },
469 "dependencies": {
470 "ms": {
471 "version": "2.1.3",
472 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
473 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
474 }
475 }
476 },
477 "serve-static": {
478 "version": "1.15.0",
479 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
480 "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
481 "requires": {
482 "encodeurl": "~1.0.2",
483 "escape-html": "~1.0.3",
484 "parseurl": "~1.3.3",
485 "send": "0.18.0"
486 }
487 },
488 "setprototypeof": {
489 "version": "1.2.0",
490 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
491 "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
492 },
493 "side-channel": {
494 "version": "1.0.4",
495 "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
496 "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
497 "requires": {
498 "call-bind": "^1.0.0",
499 "get-intrinsic": "^1.0.2",
500 "object-inspect": "^1.9.0"
501 }
502 },
503 "statuses": {
504 "version": "2.0.1",
505 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
506 "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
507 },
508 "toidentifier": {
509 "version": "1.0.1",
510 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
511 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
512 },
513 "type-is": {
514 "version": "1.6.18",
515 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
516 "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
517 "requires": {
518 "media-typer": "0.3.0",
519 "mime-types": "~2.1.24"
520 }
521 },
522 "unpipe": {
523 "version": "1.0.0",
524 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
525 "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
526 },
527 "utils-merge": {
528 "version": "1.0.1",
529 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
530 "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
531 },
532 "vary": {
533 "version": "1.1.2",
534 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
535 "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
536 }
537 }
538 }
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!