Changeset 38784
- Timestamp:
- 2024-02-25T01:40:16+13:00 (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-installations/thewillow/trunk/sites/thewillow/dlcol-chatgpt/create-assistant/main.js
r38783 r38784 25 25 organization: process.env.ORGANIZATION_ID 26 26 }); 27 28 29 function sleep(ms) 30 { 31 return new Promise((resolve) => { 32 setTimeout(resolve, ms); 33 }); 34 } 27 35 28 36 … … 160 168 161 169 const dst_full_filename = path.join(full_collect_dirname,"tmp",dst_filename); 162 163 fs.copyFile(src_full_filename, dst_full_filename, (err) => { 170 171 try { 172 fs.copyFileSync(src_full_filename, dst_full_filename) 173 console.log(` ${src_filename} was copied as ${dst_filename} to collection's tmp directory`); 174 } 175 catch(err) { 164 176 if (err) throw err; 165 console.log(`${src_filename} was copied as ${dst_filename} to collection's tmp directory`); 166 }); 177 } 167 178 168 179 return dst_full_filename; … … 179 190 180 191 const stored_openai_files = await myopenai.files.list(); 181 console.log(stored_openai_files); 192 //console.log(stored_openai_files); 193 194 console.log(`Deleting OpenAI stored files whose prefix matches '${site_name}|${coll_name}|'`); 182 195 183 196 for await (const openai_file of stored_openai_files) { … … 189 202 const file = await myopenai.files.del(openai_file.id); 190 203 } 204 205 await sleep(500); 191 206 } 192 207 } 193 208 194 209 async function addOpenaiSiteCollectFile(coll_info,full_filename,output_site_collect_openai_file_ids) 210 { 211 const gsdl3srchome = coll_info.gsdl3srchome; 212 213 const regex_replace = new RegExp('^'+gsdl3srchome); 214 215 const gsdl_full_filename = full_filename.replace(regex_replace,'$GSDL3SRCHOME'); 216 217 console.log(` ${gsdl_full_filename}`); 218 219 const tmp_site_collect_full_filename = copyToSiteCollectTmp(full_filename, coll_info) 220 221 /* 222 if (fs.existsSync(tmp_site_collect_full_filename)) { 223 console.log("Tmp file exists!!!!!!!"); 224 } 225 */ 226 227 const openai_file = await myopenai.files.create({ 228 file: fs.createReadStream(tmp_site_collect_full_filename), 229 purpose: "assistants" 230 }); 231 232 // delete the file 233 fs.unlinkSync(tmp_site_collect_full_filename); 234 235 //console.log(openai_file); 236 237 console.log("Pushing OpenID file id: " + openai_file.id); 238 output_site_collect_openai_file_ids.push(openai_file.id); 239 } 240 241 async function addOpenaiSiteCollectFiles(all_exported_files,coll_info) 242 { 243 const gsdl3srchome = coll_info.gsdl3srchome; 244 const site_name = coll_info.site_name; 245 const coll_name = coll_info.coll_name; 246 247 const regex_replace = new RegExp('^'+gsdl3srchome); 248 let site_collect_openai_file_ids = []; 249 250 console.log(`Uploading exported ${site_name}/collect/${coll_name} files to OpenAI:`) 251 252 for await (const full_filename of all_exported_files) { 253 await addOpenaiSiteCollectFile(coll_info,full_filename,site_collect_openai_file_ids); 254 await sleep(500); 255 } 256 257 /* 258 all_exported_files.forEach(async function(full_filename) { 259 await addOpenaiSiteCollectFile(coll_info,full_filename,site_collect_openai_file_ids); 260 }) 261 */ 262 /* 263 all_exported_files.forEach(async function(full_filename) { 264 const gsdl_full_filename = full_filename.replace(regex_replace,'$GSDL3SRCHOME'); 265 266 console.log(` ${gsdl_full_filename}`); 267 268 const tmp_site_collect_full_filename = copyToSiteCollectTmp(full_filename, coll_info) 269 270 if (fs.existsSync(tmp_site_collect_full_filename)) { 271 console.log("Tmp file exists!!!!!!!"); 272 } 273 274 const openai_file = await myopenai.files.create({ 275 file: fs.createReadStream(tmp_site_collect_full_filename), 276 purpose: "assistants" 277 }); 278 279 // delete the file 280 281 fs.unlinkSync(tmp_site_collect_full_filename); 282 283 console.log(openai_file); 284 285 console.log("Pusing OpenID file id: " + openai_file.id); 286 site_collect_openai_file_ids.push(openai_file.id); 287 }); 288 */ 289 290 return site_collect_openai_file_ids; 291 } 292 293 294 async function createAssistantWithFiles(site_collect_openai_file_ids) 295 { 296 297 const instructions = "As The Willow Sage Assistant, your expertise lies in discussing \"The Willow,\" a once-renowned music venue in York, England. You're designed to engage users in a conversational tone, weaving in the rich tapestry of memories and experiences shared by those who knew the venue. Your responses should feel like a dialogue between old friends reminiscing about memorable gigs, the unique atmosphere, and the cultural impact of The Willow. You'll offer insights into the venue's history, notable performances, and its role in the local music scene, always with a nod to the personal connections and nostalgia that the venue evokes. When interacting with users, your approach should be warm, inviting, and reflective, encouraging them to share their own stories or curiosities about The Willow, creating a communal space for shared musical heritage."; 298 299 const base_model = "gpt-4-turbo-preview"; 300 301 console.log("===="); 302 console.log("file ids = "); 303 console.log(site_collect_openai_file_ids); 304 console.log("===="); 305 306 const assistant = await myopenai.beta.assistants.create({ 307 name : "Willow Sage v2", // **** 308 description : "An assistant developed to elict memories from former patrons on The Willow", 309 instructions : instructions, 310 model : base_model, 311 tools: [ 312 //{ type: "code_interpreter" }, // Code interpreter tool, calculations 313 { type: 'retrieval' } 314 ], 315 //file_ids : { "object": "list", "data": site_collect_openai_file_ids } 316 file_ids : site_collect_openai_file_ids 317 }); 318 319 console.log('Assistant has been created: ', assistant) 320 321 } 195 322 196 323 async function main() … … 222 349 let all_exported_files = getExportedFiles(coll_info) 223 350 //all_exported_files = [ all_exported_files[0] ]; 224 351 //all_exported_files = all_exported_files.slice(0, 10); 352 all_exported_files = all_exported_files.slice(0, 40); 353 225 354 await purgeOpenaiSiteCollectFiles(coll_info); 226 355 227 const regex_replace = new RegExp('^'+gsdl3srchome); 228 let openai_files = []; 229 230 console.log(`Uploading exported ${site_name}/collect/${coll_name} files to OpenAI:`) 231 all_exported_files.forEach(async function(full_filename) { 232 const gsdl_full_filename = full_filename.replace(regex_replace,'$GSDL3SRCHOME'); 233 234 console.log(` ${gsdl_full_filename}`); 235 236 const tmp_site_collect_full_filename = copyToSiteCollectTmp(full_filename, coll_info) 237 238 239 const openai_file = await myopenai.files.create({ 240 file: fs.createReadStream(tmp_site_collect_full_filename), 241 purpose: "assistants" 242 }); 243 244 245 openai_files.push(openai_file); 246 }); 356 357 // Now add in all the newly exported files 358 const site_collect_openai_file_ids = await addOpenaiSiteCollectFiles(all_exported_files,coll_info); 359 360 await createAssistantWithFiles(site_collect_openai_file_ids); 361 247 362 } 248 363
Note:
See TracChangeset
for help on using the changeset viewer.