Skip to content

Commit d6f8691

Browse files
committed
Merge branch 'kl/scrum-41-ai-timetable-generate' of https://github.com/UTSC-CSCC01-Software-Engineering-I/term-group-project-c01w25-project-course-matrix into kl/scrum-41-ai-timetable-generate
2 parents 9d362f8 + 910cec3 commit d6f8691

File tree

4 files changed

+25
-28
lines changed

4 files changed

+25
-28
lines changed

course-matrix/backend/src/constants/availableFunctions.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,8 @@ export const availableFunctions: AvailableFunctions = {
200200
});
201201
}
202202

203-
const groupedOfferingsList: GroupedOfferingList[] = await groupOfferings(
204-
courseOfferingsList
205-
);
203+
const groupedOfferingsList: GroupedOfferingList[] =
204+
await groupOfferings(courseOfferingsList);
206205

207206
// console.log(JSON.stringify(groupedOfferingsList, null, 2));
208207

@@ -215,7 +214,7 @@ export const availableFunctions: AvailableFunctions = {
215214
}
216215

217216
const categorizedOfferings = await categorizeValidOfferings(
218-
validCourseOfferingsList
217+
validCourseOfferingsList,
219218
);
220219

221220
// console.log(typeof categorizedOfferings);
@@ -228,7 +227,7 @@ export const availableFunctions: AvailableFunctions = {
228227
[],
229228
0,
230229
categorizedOfferings.length,
231-
maxdays
230+
maxdays,
232231
);
233232

234233
// Return error if no valid schedules are found

course-matrix/backend/src/controllers/aiController.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const pinecone = new Pinecone({
5656
});
5757

5858
const index: Index<RecordMetadata> = pinecone.Index(
59-
process.env.PINECONE_INDEX_NAME!
59+
process.env.PINECONE_INDEX_NAME!,
6060
);
6161

6262
console.log("Connected to OpenAI API");
@@ -65,7 +65,7 @@ export async function searchSelectedNamespaces(
6565
query: string,
6666
k: number,
6767
namespaces: string[],
68-
filters?: Object
68+
filters?: Object,
6969
): Promise<Document[]> {
7070
let allResults: Document[] = [];
7171

@@ -87,7 +87,7 @@ export async function searchSelectedNamespaces(
8787
const results = await namespaceStore.similaritySearch(
8888
query,
8989
Math.max(k, namespaceToMinResults.get(namespace)),
90-
namespace === "courses_v3" ? filters : undefined
90+
namespace === "courses_v3" ? filters : undefined,
9191
);
9292
console.log(`Found ${results.length} results in namespace: ${namespace}`);
9393
allResults = [...allResults, ...results];
@@ -108,7 +108,7 @@ export async function searchSelectedNamespaces(
108108
// Reformulate user query to make more concise query to database, taking into consideration context
109109
export async function reformulateQuery(
110110
latestQuery: string,
111-
conversationHistory: any[]
111+
conversationHistory: any[],
112112
): Promise<string> {
113113
try {
114114
const openai2 = new OpenAI({
@@ -331,7 +331,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
331331
toolCall.args,
332332
`The tool accepts the following schema:`,
333333
parameterSchema(toolCall),
334-
"Please fix the arguments."
334+
"Please fix the arguments.",
335335
);
336336

337337
const { object: repairedArgs } = await generateObject({
@@ -366,7 +366,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
366366
// Use GPT-4o to reformulate the query based on conversation history
367367
const reformulatedQuery = await reformulateQuery(
368368
latestMessage,
369-
conversationHistory.slice(-CHATBOT_MEMORY_THRESHOLD) // last K messages
369+
conversationHistory.slice(-CHATBOT_MEMORY_THRESHOLD), // last K messages
370370
);
371371
console.log(">>>> Original query:", latestMessage);
372372
console.log(">>>> Reformulated query:", reformulatedQuery);
@@ -380,8 +380,8 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
380380
if (requiresSearch) {
381381
console.log(
382382
`Query requires knowledge retrieval, searching namespaces: ${relevantNamespaces.join(
383-
", "
384-
)}`
383+
", ",
384+
)}`,
385385
);
386386

387387
const filters = includeFilters(reformulatedQuery);
@@ -392,7 +392,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
392392
reformulatedQuery,
393393
3,
394394
relevantNamespaces,
395-
Object.keys(filters).length === 0 ? undefined : filters
395+
Object.keys(filters).length === 0 ? undefined : filters,
396396
);
397397
// console.log("Search Results: ", searchResults);
398398

@@ -402,7 +402,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
402402
}
403403
} else {
404404
console.log(
405-
"Query does not require knowledge retrieval, skipping search"
405+
"Query does not require knowledge retrieval, skipping search",
406406
);
407407
}
408408

@@ -468,15 +468,15 @@ export const testSimilaritySearch = asyncHandler(
468468
if (requiresSearch) {
469469
console.log(
470470
`Query requires knowledge retrieval, searching namespaces: ${relevantNamespaces.join(
471-
", "
472-
)}`
471+
", ",
472+
)}`,
473473
);
474474

475475
// Search only the relevant namespaces
476476
const searchResults = await searchSelectedNamespaces(
477477
message,
478478
3,
479-
relevantNamespaces
479+
relevantNamespaces,
480480
);
481481
console.log("Search Results: ", searchResults);
482482

@@ -486,11 +486,11 @@ export const testSimilaritySearch = asyncHandler(
486486
}
487487
} else {
488488
console.log(
489-
"Query does not require knowledge retrieval, skipping search"
489+
"Query does not require knowledge retrieval, skipping search",
490490
);
491491
}
492492

493493
console.log("CONTEXT: ", context);
494494
res.status(200).send(context);
495-
}
495+
},
496496
);

course-matrix/backend/src/controllers/generatorController.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -408,12 +408,10 @@ export default {
408408
return res.status(404).json({ error: "No valid schedules found." });
409409
}
410410
// Return the valid schedules
411-
return res
412-
.status(200)
413-
.json({
414-
amount: validSchedules.length,
415-
schedules: trim(validSchedules),
416-
});
411+
return res.status(200).json({
412+
amount: validSchedules.length,
413+
schedules: trim(validSchedules),
414+
});
417415
} catch (error) {
418416
// Catch any error and return the error message
419417
const errorMessage =

course-matrix/backend/src/models/timetable-form.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export const CourseSchema = z.object({
5656
.max(8, "Invalid course code")
5757
.min(1, "Course code is required")
5858
.describe(
59-
"The course code. Formatted like: CSCA08H3. Course codes cannot be provided without the H3 at the end."
59+
"The course code. Formatted like: CSCA08H3. Course codes cannot be provided without the H3 at the end.",
6060
),
6161
name: z.string().describe("The name of the course"),
6262
});
@@ -80,7 +80,7 @@ export const RestrictionSchema = z.object({
8080
.max(4, "Cannot block all days of the week")
8181
.optional()
8282
.describe(
83-
"If type is Days Off, then this field is used and describes min number of days off per week."
83+
"If type is Days Off, then this field is used and describes min number of days off per week.",
8484
),
8585
startTime: z
8686
.string()

0 commit comments

Comments
 (0)