File size: 1,959 Bytes
785c4f7
7d3dbed
21afb35
 
 
7d3dbed
21afb35
 
 
7d3dbed
 
 
 
 
 
 
 
21afb35
7d3dbed
21afb35
 
7d3dbed
21afb35
 
 
 
 
7d3dbed
21afb35
 
 
7d3dbed
21afb35
7d3dbed
21afb35
 
 
 
7d3dbed
 
 
21afb35
 
7d3dbed
 
21afb35
7d3dbed
21afb35
 
 
7d3dbed
21afb35
fbd71f6
21afb35
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import torch
from evo_model import EvoTransformer
from transformers import AutoTokenizer
from rag_utils import extract_text_from_file
from search_utils import web_search

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

def load_model(model_path="evo_hellaswag.pt", device=None):
    if device is None:
        device = "cuda" if torch.cuda.is_available() else "cpu"
    model = EvoTransformer()
    model.load_state_dict(torch.load(model_path, map_location=device))
    model.to(device)
    model.eval()
    return model, device

evo_model, device = load_model()

def get_evo_response(query, file=None, enable_search=True):
    context = ""

    if file:
        try:
            context += extract_text_from_file(file)[:800]
        except:
            pass

    if enable_search:
        search_snippets = web_search(query)
        context += "\n".join(search_snippets)

    combined_prompt = f"{query}\nContext:\n{context}"

    inputs = [
        f"{combined_prompt} Option 1:",
        f"{combined_prompt} Option 2:",
    ]

    encoded = tokenizer(inputs, padding=True, truncation=True, return_tensors="pt").to(device)
    with torch.no_grad():
        outputs = evo_model(encoded["input_ids"]).squeeze(-1)
        probs = torch.softmax(outputs, dim=0)
        best = torch.argmax(probs).item()

    return f"Option {best + 1} with {probs[best]:.2%} confidence.\n\nReasoning:\n{inputs[best]}"

def get_gpt_response(query, context=""):
    import openai
    openai.api_key = os.getenv("OPENAI_API_KEY")

    prompt = f"{query}\nContext:\n{context}\nGive a thoughtful recommendation with reasons."

    try:
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            max_tokens=300,
            temperature=0.7,
        )
        return response.choices[0].message.content.strip()
    except Exception as e:
        return f"Error: {str(e)}"