Spaces:
Running
Running
tomas.helmfridsson
commited on
Commit
·
3ebf529
1
Parent(s):
849e3ea
adjust inputs
Browse files
app.py
CHANGED
@@ -82,10 +82,12 @@ def test_retrieval(q): # snabb‑test utan AI
|
|
82 |
docs = retriever.invoke(q)
|
83 |
return "\n\n".join([f"{i+1}. ({d.metadata['source']}) {d.page_content[:160]}…" for i, d in enumerate(docs)]) or "🚫 Inga träffar"
|
84 |
|
85 |
-
def chat_fn(q, temp, history):
|
86 |
history = history or []
|
87 |
history.append({"role": "user", "content": q})
|
88 |
|
|
|
|
|
89 |
docs = retriever.invoke(q)
|
90 |
if not docs:
|
91 |
history.append({"role": "assistant", "content": "🚫 Hittade inget relevant."})
|
@@ -95,16 +97,34 @@ def chat_fn(q, temp, history):
|
|
95 |
chunk_info = "\n\n".join([f"{i+1}. ({d.metadata['source']}) {d.page_content[:160]}…" for i, d in enumerate(docs)])
|
96 |
history.append({"role": "system", "content": f"🔎 Chunkar som används:\n{chunk_info}"})
|
97 |
|
98 |
-
prompt
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
|
103 |
try:
|
104 |
ans = gen_pipe(
|
105 |
prompt,
|
106 |
temperature=float(temp),
|
107 |
-
max_new_tokens=
|
108 |
pad_token_id=tokenizer.eos_token_id,
|
109 |
eos_token_id=tokenizer.eos_token_id,
|
110 |
do_sample=True,
|
|
|
82 |
docs = retriever.invoke(q)
|
83 |
return "\n\n".join([f"{i+1}. ({d.metadata['source']}) {d.page_content[:160]}…" for i, d in enumerate(docs)]) or "🚫 Inga träffar"
|
84 |
|
85 |
+
def chat_fn(q, temp, max_new_tokens, k, ctx_tok_max, history):
|
86 |
history = history or []
|
87 |
history.append({"role": "user", "content": q})
|
88 |
|
89 |
+
# Skapa en ny retriever med valt k
|
90 |
+
retriever = vs.as_retriever(search_kwargs={"k": int(k)})
|
91 |
docs = retriever.invoke(q)
|
92 |
if not docs:
|
93 |
history.append({"role": "assistant", "content": "🚫 Hittade inget relevant."})
|
|
|
97 |
chunk_info = "\n\n".join([f"{i+1}. ({d.metadata['source']}) {d.page_content[:160]}…" for i, d in enumerate(docs)])
|
98 |
history.append({"role": "system", "content": f"🔎 Chunkar som används:\n{chunk_info}"})
|
99 |
|
100 |
+
# Bygg prompt med valt ctx_tok_max
|
101 |
+
def build_prompt_dynamic(query, docs, ctx_tok_max):
|
102 |
+
context_parts = []
|
103 |
+
total_ctx_tok = 0
|
104 |
+
for d in docs:
|
105 |
+
tok_len = len(tokenizer.encode(d.page_content))
|
106 |
+
if total_ctx_tok + tok_len > int(ctx_tok_max):
|
107 |
+
break
|
108 |
+
context_parts.append(d.page_content)
|
109 |
+
total_ctx_tok += tok_len
|
110 |
+
context = "\n\n---\n\n".join(context_parts)
|
111 |
+
return textwrap.dedent(f"""\
|
112 |
+
Du är en hjälpsam assistent som svarar på svenska.
|
113 |
+
Kontext (hämtat ur PDF‑dokument):
|
114 |
+
|
115 |
+
{context}
|
116 |
+
|
117 |
+
Fråga: {query}
|
118 |
+
Svar (svenska):""").strip()
|
119 |
+
|
120 |
+
prompt = build_prompt_dynamic(q, docs, ctx_tok_max)
|
121 |
+
log.info(f"Prompt tokens={len(tokenizer.encode(prompt))} temp={temp} max_new_tokens={max_new_tokens} k={k} ctx_tok_max={ctx_tok_max}")
|
122 |
|
123 |
try:
|
124 |
ans = gen_pipe(
|
125 |
prompt,
|
126 |
temperature=float(temp),
|
127 |
+
max_new_tokens=int(max_new_tokens),
|
128 |
pad_token_id=tokenizer.eos_token_id,
|
129 |
eos_token_id=tokenizer.eos_token_id,
|
130 |
do_sample=True,
|