(
entitys,
relations,
max_token_size: int = 12000,
global_config: dict = {},
)
| 349 | def perform_clustering(self, embeddings: np.ndarray, **kwargs) -> List[List[int]]: |
| 350 | pass |
| 351 | def _pack_single_community_describe( |
| 352 | entitys, |
| 353 | relations, |
| 354 | max_token_size: int = 12000, |
| 355 | global_config: dict = {}, |
| 356 | ) -> str: |
| 357 | |
| 358 | node_fields = ["id", "entity", "type", "description", "degree"] |
| 359 | edge_fields = ["id", "source", "target", "description", "rank"] |
| 360 | nodes_list_data = [ |
| 361 | [ |
| 362 | i, |
| 363 | entity.get("entity_name"), |
| 364 | entity.get("entity_type", "UNKNOWN"), |
| 365 | entity.get("description", "UNKNOWN"), |
| 366 | entity.get("degree",1) |
| 367 | ] |
| 368 | for i,entity in enumerate(entitys) |
| 369 | ] |
| 370 | nodes_list_data = sorted(nodes_list_data, key=lambda x: x[-1], reverse=True) |
| 371 | nodes_may_truncate_list_data = truncate_list_by_token_size( |
| 372 | nodes_list_data, key=lambda x: x[3], max_token_size=max_token_size // 2 |
| 373 | ) |
| 374 | edges_list_data = [ |
| 375 | [ |
| 376 | i, |
| 377 | relation.get("src_tgt"), |
| 378 | relation.get("tgt_src"), |
| 379 | relation.get("description", "UNKNOWN"), |
| 380 | ] |
| 381 | for i, relation in enumerate(relations.values()) |
| 382 | ] |
| 383 | edges_list_data = sorted(edges_list_data, key=lambda x: x[-1], reverse=True) |
| 384 | edges_may_truncate_list_data = truncate_list_by_token_size( |
| 385 | edges_list_data, key=lambda x: x[3], max_token_size=max_token_size // 2 |
| 386 | ) |
| 387 | |
| 388 | truncated = len(nodes_list_data) > len(nodes_may_truncate_list_data) or len( |
| 389 | edges_list_data |
| 390 | ) > len(edges_may_truncate_list_data) |
| 391 | |
| 392 | |
| 393 | nodes_describe = list_of_list_to_csv([node_fields] + nodes_may_truncate_list_data) |
| 394 | edges_describe = list_of_list_to_csv([edge_fields] + edges_may_truncate_list_data) |
| 395 | return f""" |
| 396 | -----Entities----- |
| 397 | ```csv |
| 398 | {nodes_describe} |
| 399 | ``` |
| 400 | -----Relationships----- |
| 401 | ```csv |
| 402 | {edges_describe} |
| 403 | ```""" |
| 404 | def process_cluster( |
| 405 | use_llm_func, embeddings_func, \ |
| 406 | clusters,label,nodes,community_report_prompt,\ |
no test coverage detected