generated from coulomb/repo-seed
additive candidate confidence scoring
This commit is contained in:
@@ -68,7 +68,14 @@ class CandidateGraphGenerator:
|
||||
ability = CandidateAbilityDraft(
|
||||
name=f"Review {repository.name} Repository Usefulness",
|
||||
description=self._ability_description(chunks),
|
||||
confidence=0.55 if docs else 0.35,
|
||||
confidence=self._ability_confidence(
|
||||
docs=docs,
|
||||
interfaces=interfaces,
|
||||
tests=tests,
|
||||
examples=examples,
|
||||
frameworks=frameworks,
|
||||
languages=languages,
|
||||
),
|
||||
source_refs=self._source_refs(ability_sources),
|
||||
capabilities=[],
|
||||
)
|
||||
@@ -88,7 +95,12 @@ class CandidateGraphGenerator:
|
||||
),
|
||||
inputs=[],
|
||||
outputs=["repository structure summary"],
|
||||
confidence=0.6,
|
||||
confidence=self._structure_confidence(
|
||||
manifests=manifests,
|
||||
frameworks=frameworks,
|
||||
languages=languages,
|
||||
docs=docs,
|
||||
),
|
||||
source_refs=self._source_refs(manifests + frameworks + languages),
|
||||
evidence=self._evidence(tests, examples, docs),
|
||||
)
|
||||
@@ -127,7 +139,12 @@ class CandidateGraphGenerator:
|
||||
description=self._interface_description(chunks),
|
||||
inputs=[],
|
||||
outputs=["callable interface"],
|
||||
confidence=0.65,
|
||||
confidence=self._interface_confidence(
|
||||
interfaces=interfaces,
|
||||
tests=tests,
|
||||
examples=examples,
|
||||
docs=docs,
|
||||
),
|
||||
source_refs=self._source_refs(interfaces),
|
||||
features=features,
|
||||
evidence=self._evidence(tests, examples, docs),
|
||||
@@ -177,6 +194,73 @@ class CandidateGraphGenerator:
|
||||
return "API"
|
||||
return "interface"
|
||||
|
||||
def _ability_confidence(
|
||||
self,
|
||||
*,
|
||||
docs: list[ObservedFact],
|
||||
interfaces: list[ObservedFact],
|
||||
tests: list[ObservedFact],
|
||||
examples: list[ObservedFact],
|
||||
frameworks: list[ObservedFact],
|
||||
languages: list[ObservedFact],
|
||||
) -> float:
|
||||
return self._confidence(
|
||||
0.25,
|
||||
[
|
||||
(0.20, bool(docs)),
|
||||
(0.15, bool(interfaces)),
|
||||
(0.15, bool(tests)),
|
||||
(0.10, bool(examples)),
|
||||
(0.10, bool(frameworks)),
|
||||
(0.05, bool(languages)),
|
||||
],
|
||||
)
|
||||
|
||||
def _interface_confidence(
|
||||
self,
|
||||
*,
|
||||
interfaces: list[ObservedFact],
|
||||
tests: list[ObservedFact],
|
||||
examples: list[ObservedFact],
|
||||
docs: list[ObservedFact],
|
||||
) -> float:
|
||||
return self._confidence(
|
||||
0.30,
|
||||
[
|
||||
(0.20, bool(interfaces)),
|
||||
(0.15, bool(tests)),
|
||||
(0.10, bool(examples)),
|
||||
(0.10, bool(docs)),
|
||||
(0.05, len(interfaces) > 1),
|
||||
],
|
||||
)
|
||||
|
||||
def _structure_confidence(
|
||||
self,
|
||||
*,
|
||||
manifests: list[ObservedFact],
|
||||
frameworks: list[ObservedFact],
|
||||
languages: list[ObservedFact],
|
||||
docs: list[ObservedFact],
|
||||
) -> float:
|
||||
return self._confidence(
|
||||
0.25,
|
||||
[
|
||||
(0.20, bool(manifests)),
|
||||
(0.15, bool(frameworks)),
|
||||
(0.10, bool(languages)),
|
||||
(0.05, bool(docs)),
|
||||
],
|
||||
)
|
||||
|
||||
def _confidence(
|
||||
self,
|
||||
base: float,
|
||||
factors: list[tuple[float, bool]],
|
||||
) -> float:
|
||||
score = base + sum(weight for weight, applies in factors if applies)
|
||||
return min(1.0, round(score, 2))
|
||||
|
||||
def _ability_description(self, chunks: list[ContentChunk]) -> str:
|
||||
doc_summary = self._document_summary(chunks)
|
||||
if doc_summary:
|
||||
|
||||
Reference in New Issue
Block a user