File size: 1,030 Bytes
a66815f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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