Skip to content

Commit e28d219

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 e7143bf + dfe3fd3 commit e28d219

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const pinecone = new Pinecone({
4343
});
4444

4545
const index: Index<RecordMetadata> = pinecone.Index(
46-
process.env.PINECONE_INDEX_NAME!
46+
process.env.PINECONE_INDEX_NAME!,
4747
);
4848

4949
console.log("Connected to OpenAI API");
@@ -100,7 +100,7 @@ function analyzeQuery(query: string): {
100100
"prerequisites",
101101
"corequisites",
102102
"departments",
103-
"programs"
103+
"programs",
104104
);
105105
}
106106

@@ -118,7 +118,7 @@ async function searchSelectedNamespaces(
118118
query: string,
119119
k: number,
120120
namespaces: string[],
121-
filters?: Object
121+
filters?: Object,
122122
): Promise<Document[]> {
123123
let allResults: Document[] = [];
124124

@@ -140,7 +140,7 @@ async function searchSelectedNamespaces(
140140
const results = await namespaceStore.similaritySearch(
141141
query,
142142
Math.max(k, namespaceToMinResults.get(namespace)),
143-
namespace === "courses_v3" ? filters : undefined
143+
namespace === "courses_v3" ? filters : undefined,
144144
);
145145
console.log(`Found ${results.length} results in namespace: ${namespace}`);
146146
allResults = [...allResults, ...results];
@@ -161,7 +161,7 @@ async function searchSelectedNamespaces(
161161
// Reformulate user query to make more concise query to database, taking into consideration context
162162
async function reformulateQuery(
163163
latestQuery: string,
164-
conversationHistory: any[]
164+
conversationHistory: any[],
165165
): Promise<string> {
166166
try {
167167
const openai2 = new OpenAI({
@@ -261,7 +261,7 @@ function includeFilters(query: string) {
261261
if (keywords.some((keyword) => lowerQuery.includes(keyword))) {
262262
relaventBreadthRequirements.push(convertBreadthRequirement(namespace));
263263
}
264-
}
264+
},
265265
);
266266

267267
Object.entries(YEAR_LEVEL_KEYWORDS).forEach(([namespace, keywords]) => {
@@ -412,7 +412,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
412412
// Use GPT-4o to reformulate the query based on conversation history
413413
const reformulatedQuery = await reformulateQuery(
414414
latestMessage,
415-
conversationHistory.slice(-CHATBOT_MEMORY_THRESHOLD) // last K messages
415+
conversationHistory.slice(-CHATBOT_MEMORY_THRESHOLD), // last K messages
416416
);
417417
console.log(">>>> Original query:", latestMessage);
418418
console.log(">>>> Reformulated query:", reformulatedQuery);
@@ -426,8 +426,8 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
426426
if (requiresSearch) {
427427
console.log(
428428
`Query requires knowledge retrieval, searching namespaces: ${relevantNamespaces.join(
429-
", "
430-
)}`
429+
", ",
430+
)}`,
431431
);
432432

433433
const filters = includeFilters(reformulatedQuery);
@@ -438,7 +438,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
438438
reformulatedQuery,
439439
3,
440440
relevantNamespaces,
441-
Object.keys(filters).length === 0 ? undefined : filters
441+
Object.keys(filters).length === 0 ? undefined : filters,
442442
);
443443
// console.log("Search Results: ", searchResults);
444444

@@ -448,7 +448,7 @@ export const chat = asyncHandler(async (req: Request, res: Response) => {
448448
}
449449
} else {
450450
console.log(
451-
"Query does not require knowledge retrieval, skipping search"
451+
"Query does not require knowledge retrieval, skipping search",
452452
);
453453
}
454454

@@ -513,15 +513,15 @@ export const testSimilaritySearch = asyncHandler(
513513
if (requiresSearch) {
514514
console.log(
515515
`Query requires knowledge retrieval, searching namespaces: ${relevantNamespaces.join(
516-
", "
517-
)}`
516+
", ",
517+
)}`,
518518
);
519519

520520
// Search only the relevant namespaces
521521
const searchResults = await searchSelectedNamespaces(
522522
message,
523523
3,
524-
relevantNamespaces
524+
relevantNamespaces,
525525
);
526526
console.log("Search Results: ", searchResults);
527527

@@ -531,11 +531,11 @@ export const testSimilaritySearch = asyncHandler(
531531
}
532532
} else {
533533
console.log(
534-
"Query does not require knowledge retrieval, skipping search"
534+
"Query does not require knowledge retrieval, skipping search",
535535
);
536536
}
537537

538538
console.log("CONTEXT: ", context);
539539
res.status(200).send(context);
540-
}
540+
},
541541
);

0 commit comments

Comments
 (0)