c889a57b6b
Test Suites / Build CI Environment (push) Has been cancelled
Test Suites / Basic Tests (push) Has been cancelled
Test Suites / End-to-End Tests (push) Has been cancelled
Test Suites / CLI Tests (push) Has been cancelled
Test Suites / Slow End-to-End Tests (push) Has been cancelled
Test Suites / Graph Database Tests (push) Has been cancelled
Test Suites / Vector DB Tests (push) Has been cancelled
Test Suites / Temporal Graph Test (push) Has been cancelled
Test Suites / Search Test on Different DBs (push) Has been cancelled
Test Suites / Example Tests (push) Has been cancelled
Test Suites / Notebook Tests (push) Has been cancelled
Test Suites / OS and Python Tests Ubuntu (push) Has been cancelled
Test Suites / OS and Python Tests Extended (push) Has been cancelled
Test Suites / LLM Test Suite (push) Has been cancelled
Test Suites / S3 File Storage Test (push) Has been cancelled
Test Suites / Run Integration Tests (push) Has been cancelled
Test Suites / MCP Tests (push) Has been cancelled
Test Suites / Docker Compose Test (push) Has been cancelled
Test Suites / Docker CI test (push) Has been cancelled
Test Suites / Relational DB Migration Tests (push) Has been cancelled
Test Suites / Distributed Cognee Test (push) Has been cancelled
Test Suites / DB Examples Tests (push) Has been cancelled
Test Suites / Test Completion Status (push) Has been cancelled
Test Suites / Claude Code Review (push) Has been cancelled
Test Suites / basic checks (push) Has been cancelled
build | Build and Push Cognee MCP Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
build | Build and Push Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.11) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.12) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (kuzu, kuzu) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (neo4j, neo4j) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Examples (push) Has been cancelled
Weighted Edges Tests / Code Quality for Weighted Edges (push) Has been cancelled
99 lines
3.4 KiB
Python
99 lines
3.4 KiB
Python
"""Per-llm_model orchestration: turn measurements into the JSON report.
|
|
|
|
Reads as: take this llm_model's chunk measurements, size the corpus, build the
|
|
two query-cost strategies, and read the reduction milestones off them.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from cost_model import (
|
|
ChunkMeasurement,
|
|
CogneeQueryCost,
|
|
FullContextQueryCost,
|
|
average_measurement,
|
|
corpus_ingestion_tokens,
|
|
queries_for_reduction,
|
|
)
|
|
from measure import count_tokens
|
|
|
|
|
|
def build_report(all_measurements: list[ChunkMeasurement], text: str, args) -> dict:
|
|
return {
|
|
llm_model: analyze_llm_model(llm_model, all_measurements, text, args)
|
|
for llm_model in args.llm_models
|
|
}
|
|
|
|
|
|
def analyze_llm_model(
|
|
llm_model: str,
|
|
all_measurements: list[ChunkMeasurement],
|
|
text: str,
|
|
args,
|
|
) -> dict:
|
|
chunk_measurements = [
|
|
measurement for measurement in all_measurements if measurement.llm_model == llm_model
|
|
]
|
|
average = average_measurement(chunk_measurements)
|
|
corpus_tokens = args.corpus_tokens or count_tokens(text, llm_model)
|
|
|
|
full_context_cost = FullContextQueryCost(corpus_tokens, args.query_overhead)
|
|
cognee_cost = CogneeQueryCost(
|
|
corpus_ingestion_tokens(average, corpus_tokens),
|
|
args.retrieved_context,
|
|
)
|
|
reduction_milestones = {
|
|
factor: queries_for_reduction(full_context_cost, cognee_cost, factor)
|
|
for factor in args.reduction_factors
|
|
}
|
|
return assemble(
|
|
chunk_measurements, average, full_context_cost, cognee_cost, reduction_milestones
|
|
)
|
|
|
|
|
|
def assemble(
|
|
chunk_measurements: list[ChunkMeasurement],
|
|
average: ChunkMeasurement,
|
|
full_context_cost: FullContextQueryCost,
|
|
cognee_cost: CogneeQueryCost,
|
|
reduction_milestones: dict[float, float | None],
|
|
) -> dict:
|
|
return {
|
|
"ingestion_multiplier": round(
|
|
cognee_cost.ingestion_tokens / full_context_cost.corpus_tokens, 3
|
|
),
|
|
"full_context": {
|
|
"corpus_tokens": full_context_cost.corpus_tokens,
|
|
"query_overhead_tokens": full_context_cost.query_overhead_tokens,
|
|
"per_query_tokens": full_context_cost.corpus_tokens
|
|
+ full_context_cost.query_overhead_tokens,
|
|
},
|
|
"cognee": {
|
|
"ingestion_tokens": round(cognee_cost.ingestion_tokens),
|
|
"retrieved_context_tokens": cognee_cost.retrieved_context_tokens,
|
|
"per_query_tokens": cognee_cost.retrieved_context_tokens,
|
|
},
|
|
"reduction_milestones": {
|
|
str(factor): _round_or_none(queries) for factor, queries in reduction_milestones.items()
|
|
},
|
|
"average_chunk": _measurement_dict(average),
|
|
"chunk_measurements": [_measurement_dict(m) for m in chunk_measurements],
|
|
}
|
|
|
|
|
|
def _measurement_dict(measurement: ChunkMeasurement) -> dict:
|
|
return {
|
|
"llm_model": measurement.llm_model,
|
|
"input_tokens": measurement.input_tokens,
|
|
"summary_prompt_tokens": measurement.summary_prompt_tokens,
|
|
"summary_completion_tokens": measurement.summary_completion_tokens,
|
|
"graph_prompt_tokens": measurement.graph_prompt_tokens,
|
|
"graph_completion_tokens": measurement.graph_completion_tokens,
|
|
"ingestion_tokens": measurement.ingestion_tokens,
|
|
"summary_ratio": round(measurement.summary_ratio, 4),
|
|
"graph_ratio": round(measurement.graph_ratio, 4),
|
|
}
|
|
|
|
|
|
def _round_or_none(queries: float | None) -> float | None:
|
|
return None if queries is None else round(queries, 1)
|