Spaces:
Sleeping
Sleeping
| 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 | |