AI_Confidence_Layer / sampling.py
Sarupa's picture
Upload 17 files
a66815f verified
from model import call_llm
from sentence_transformers.util import cos_sim
from confidence import get_embedder
def similarity(samples: list[str]) -> float:
if len(samples) < 2:
return 1.0
embedder = get_embedder()
emb = embedder.encode(samples)
sims = []
# Pairwise similarity
for i in range(len(samples)):
for j in range(i+1, len(samples)):
sim = float(cos_sim(emb[i], emb[j])[0][0])
sims.append(sim)
return sum(sims) / len(sims) if sims else 1.0
def generate_samples(prompt: str) -> list[str]:
configs = [
{"temperature": 0.2, "top_p": 0.8},
{"temperature": 0.7, "top_p": 0.9}
]
outputs = []
for cfg in configs:
outputs.append(call_llm(prompt, **cfg))
# Adaptive expansion if low similarity
if similarity(outputs) < 0.8:
print("[DEBUG] Low similarity detected, generating 3rd adaptive sample")
outputs.append(call_llm(prompt, temperature=1.2, top_p=1.0))
return outputs