@@ -98,38 +98,41 @@ async def process(
9898 f"Found { len (searched_objects )} matches in the database" ,
9999 searched_objects = searched_objects ,
100100 )
101- # If matches are found, add the matched content to context
101+
102+ # Remove searched objects that are not in packages. This is needed
103+ # since Weaviate performs substring match in the filter.
104+ updated_searched_objects = []
105+ for searched_object in searched_objects :
106+ if searched_object .properties ["name" ] in packages :
107+ updated_searched_objects .append (searched_object )
108+ searched_objects = updated_searched_objects
109+
110+ # Generate context string using the searched objects
111+ logger .info (f"Adding { len (searched_objects )} packages to the context" )
112+
102113 if len (searched_objects ) > 0 :
103- # Remove searched objects that are not in packages. This is needed
104- # since Weaviate performs substring match in the filter.
105- updated_searched_objects = []
106- for searched_object in searched_objects :
107- if searched_object .properties ["name" ] in packages :
108- updated_searched_objects .append (searched_object )
109- searched_objects = updated_searched_objects
110-
111- # Generate context string using the searched objects
112- logger .info (f"Adding { len (updated_searched_objects )} packages to the context" )
113- context_str = self .generate_context_str (updated_searched_objects , context )
114-
115- # Make a copy of the request
116- new_request = request .copy ()
117-
118- # Add the context to the last user message
119- # Format: "Context: {context_str} \n Query: {last user message conent}"
120- # Handle the two cases: (a) message content is str, (b)message content
121- # is list
122- message = new_request ["messages" ][last_user_idx ]
123- if isinstance (message ["content" ], str ):
124- context_msg = f'Context: { context_str } \n \n Query: { message ["content" ]} '
125- message ["content" ] = context_msg
126- elif isinstance (message ["content" ], (list , tuple )):
127- for item in message ["content" ]:
128- if isinstance (item , dict ) and item .get ("type" ) == "text" :
129- context_msg = f'Context: { context_str } \n \n Query: { item ["text" ]} '
130- item ["text" ] = context_msg
131-
132- return PipelineResult (request = new_request , context = context )
114+ context_str = self .generate_context_str (searched_objects , context )
115+ else :
116+ context_str = "Codegate did not find any malicious or archived packages."
117+
118+ # Make a copy of the request
119+ new_request = request .copy ()
120+
121+ # Add the context to the last user message
122+ # Format: "Context: {context_str} \n Query: {last user message conent}"
123+ # Handle the two cases: (a) message content is str, (b)message content
124+ # is list
125+ message = new_request ["messages" ][last_user_idx ]
126+ if isinstance (message ["content" ], str ):
127+ context_msg = f'Context: { context_str } \n \n Query: { message ["content" ]} '
128+ message ["content" ] = context_msg
129+ elif isinstance (message ["content" ], (list , tuple )):
130+ for item in message ["content" ]:
131+ if isinstance (item , dict ) and item .get ("type" ) == "text" :
132+ context_msg = f'Context: { context_str } \n \n Query: { item ["text" ]} '
133+ item ["text" ] = context_msg
134+
135+ return PipelineResult (request = new_request , context = context )
133136
134137 # Fall through
135138 return PipelineResult (request = request , context = context )
0 commit comments