ankban commited on
Commit
9be22f3
·
verified ·
1 Parent(s): e693e08

Update file_utils.py

Browse files
Files changed (1) hide show
  1. file_utils.py +33 -8
file_utils.py CHANGED
@@ -44,21 +44,46 @@ def fetch_study_guides(user):
44
  return results
45
 
46
  # === GPT Utility ===
47
- def call_llm(prompt, system_message="You are a helpful AI tutor."):
48
- approx_tokens = len(prompt) // 4
49
- if approx_tokens > 7000:
50
- prompt = prompt[:28000] + "\n\n[Truncated for token limit]"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
- response = client.chat.completions.create(
53
- model="gpt-4",
54
- messages=[
 
 
55
  {"role": "system", "content": system_message},
56
  {"role": "user", "content": prompt}
57
- ],
 
 
 
 
58
  temperature=0.7
59
  )
 
60
  return response.choices[0].message.content
61
 
 
62
  # === File Parsing ===
63
  def extract_text_from_file(file):
64
  ext = os.path.splitext(file.name)[1].lower()
 
44
  return results
45
 
46
  # === GPT Utility ===
47
+ def call_llm(prompt=None, system_message="You are a helpful assistant.", messages=None):
48
+ """
49
+ Call GPT-4 with either a single prompt or full message history.
50
+ Handles token limits and returns a single string response.
51
+
52
+ Args:
53
+ prompt (str): Optional one-turn prompt.
54
+ system_message (str): Optional system message.
55
+ messages (list): Optional list of chat messages (for multi-turn chat).
56
+
57
+ Returns:
58
+ str: The assistant's reply.
59
+ """
60
+ max_tokens = 8192
61
+ max_safe_chars = 28000 # Roughly ~7000 tokens
62
+
63
+ if messages:
64
+ # Optional: truncate text-heavy messages
65
+ for msg in messages:
66
+ if len(msg["content"]) > max_safe_chars:
67
+ msg["content"] = msg["content"][:max_safe_chars] + "\n\n[Truncated due to token limit]"
68
 
69
+ else:
70
+ # One-shot prompt mode
71
+ if prompt and len(prompt) > max_safe_chars:
72
+ prompt = prompt[:max_safe_chars] + "\n\n[Truncated due to token limit]"
73
+ messages = [
74
  {"role": "system", "content": system_message},
75
  {"role": "user", "content": prompt}
76
+ ]
77
+
78
+ response = client.chat.completions.create(
79
+ model="gpt-4",
80
+ messages=messages,
81
  temperature=0.7
82
  )
83
+
84
  return response.choices[0].message.content
85
 
86
+
87
  # === File Parsing ===
88
  def extract_text_from_file(file):
89
  ext = os.path.splitext(file.name)[1].lower()