MCPcopy Create free account
hub / github.com/InternScience/InternAgent / generate_ideas

Method generate_ideas

internagent/stage.py:283–384  ·  view source on GitHub ↗

Run MAS to generate ideas

(self)

Source from the content-addressed store, hash-verified

281
282
283 async def generate_ideas(self):
284 """Run MAS to generate ideas"""
285 if self.session_id is None:
286 await self.load_task()
287
288 async def status_callback(session_id, old_state, new_state):
289 # Agent transition logging is handled by OrchestrationAgent
290 pass
291
292 while self.status != "completed":
293 try:
294 full_status = await self.interface.get_session_status(self.session_id)
295 self.status = full_status['state']
296 iterations = full_status['iterations_completed']
297
298 if self.status == "awaiting_feedback":
299 if self.args.offline_feedback:
300 with open(self.args.offline_feedback, "r") as f:
301 feedback = json.load(f)
302 await self.interface.add_feedback(self.session_id, feedback)
303 self.logger.info(f"Feedback added: {feedback}")
304
305 elif self.status == "completed":
306 self.logger.info("Idea generation completed")
307 break
308
309 elif self.status == "error":
310 raise RuntimeError("Error in MAS session")
311
312 self.logger.info(f"Running session {self.session_id}, iteration {iterations}")
313 self.status = await self.interface.run_session(
314 self.session_id,
315 status_callback=status_callback
316 )
317
318 except Exception as e:
319 self.logger.error(f"Error in session: {str(e)}")
320 raise
321
322 top_ideas = await self.interface.get_top_ideas(self.session_id)
323 self.logger.info(f"Generated {len(top_ideas)} top ideas")
324
325 # Add ideas to IdeaGraph (Long Memory)
326 if self.idea_graph is not None:
327 try:
328 # First, load all historical ideas to build the complete graph
329 self.logger.info("Loading historical ideas into IdeaGraph...")
330 self._load_historical_ideas_to_graph()
331 # Get graph statistics
332 stats = self.idea_graph.get_graph_stats()
333 self.logger.info(f"IdeaGraph stats: {stats['num_nodes']} nodes, {stats['num_edges']} edges")
334
335 # Perform clustering if enough ideas
336 if stats['num_nodes'] >= 3:
337 self.logger.info("Clustering ideas in graph...")
338 self.idea_graph.cluster_ideas(method="louvain")
339
340 # Log cluster summary

Callers 1

mainFunction · 0.95

Calls 13

load_taskMethod · 0.95
vis_treeFunction · 0.90
get_graph_statsMethod · 0.80
cluster_ideasMethod · 0.80
get_cluster_summaryMethod · 0.80
get_session_statusMethod · 0.45
loadMethod · 0.45
add_feedbackMethod · 0.45
run_sessionMethod · 0.45
get_top_ideasMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected