Update app.py
Browse files
app.py
CHANGED
@@ -28,8 +28,8 @@ async def generate_keywords(query):
|
|
28 |
prompt = f"Na podstawie poniższego pytania, wygeneruj 3-5 słów kluczowych, które najlepiej opisują główne tematy i koncepcje prawne zawarte w pytaniu. Podaj tylko słowa kluczowe, oddzielone przecinkami.\n\nPytanie: {query}\n\nSłowa kluczowe:"
|
29 |
|
30 |
response = await client.text_generation(
|
31 |
-
"Qwen/Qwen2.5-72B-Instruct",
|
32 |
-
prompt,
|
33 |
max_new_tokens=50,
|
34 |
temperature=0.3,
|
35 |
top_p=0.9
|
@@ -38,15 +38,6 @@ async def generate_keywords(query):
|
|
38 |
keywords = [keyword.strip() for keyword in response.split(',')]
|
39 |
return keywords
|
40 |
|
41 |
-
def search_relevant_chunks(keywords, chunks, model, top_k=3):
|
42 |
-
keyword_embedding = model.encode(keywords, convert_to_tensor=True)
|
43 |
-
chunk_embeddings = model.encode([chunk['text'] for chunk in chunks], convert_to_tensor=True)
|
44 |
-
|
45 |
-
cos_scores = util.pytorch_cos_sim(keyword_embedding, chunk_embeddings)
|
46 |
-
top_results = torch.topk(cos_scores.mean(dim=0), k=top_k)
|
47 |
-
|
48 |
-
return [chunks[idx] for idx in top_results.indices]
|
49 |
-
|
50 |
async def generate_ai_response(query, relevant_chunks):
|
51 |
client = InferenceClient(token=HF_TOKEN)
|
52 |
|
@@ -55,15 +46,12 @@ async def generate_ai_response(query, relevant_chunks):
|
|
55 |
context += f"{chunk['metadata']['nazwa']} - Artykuł {chunk['metadata']['article']}:\n"
|
56 |
context += f"{chunk['text']}\n\n"
|
57 |
|
58 |
-
|
59 |
-
{"role": "system", "content": "Jesteś asystentem prawniczym. Odpowiadaj na pytania na podstawie podanego kontekstu prawnego."},
|
60 |
-
{"role": "user", "content": f"Kontekst: {context}\n\nPytanie: {query}"}
|
61 |
-
]
|
62 |
|
63 |
response = ""
|
64 |
async for token in client.text_generation(
|
65 |
-
"Qwen/Qwen2.5-72B-Instruct",
|
66 |
-
|
67 |
max_new_tokens=2048,
|
68 |
temperature=0.5,
|
69 |
top_p=0.7,
|
@@ -72,6 +60,16 @@ async def generate_ai_response(query, relevant_chunks):
|
|
72 |
response += token
|
73 |
yield token
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
def main():
|
76 |
st.title("Chatbot Prawny z AI")
|
77 |
|
|
|
28 |
prompt = f"Na podstawie poniższego pytania, wygeneruj 3-5 słów kluczowych, które najlepiej opisują główne tematy i koncepcje prawne zawarte w pytaniu. Podaj tylko słowa kluczowe, oddzielone przecinkami.\n\nPytanie: {query}\n\nSłowa kluczowe:"
|
29 |
|
30 |
response = await client.text_generation(
|
31 |
+
model="Qwen/Qwen2.5-72B-Instruct",
|
32 |
+
prompt=prompt,
|
33 |
max_new_tokens=50,
|
34 |
temperature=0.3,
|
35 |
top_p=0.9
|
|
|
38 |
keywords = [keyword.strip() for keyword in response.split(',')]
|
39 |
return keywords
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
async def generate_ai_response(query, relevant_chunks):
|
42 |
client = InferenceClient(token=HF_TOKEN)
|
43 |
|
|
|
46 |
context += f"{chunk['metadata']['nazwa']} - Artykuł {chunk['metadata']['article']}:\n"
|
47 |
context += f"{chunk['text']}\n\n"
|
48 |
|
49 |
+
prompt = f"Jesteś asystentem prawniczym. Odpowiedz na poniższe pytanie na podstawie podanego kontekstu prawnego.\n\nKontekst: {context}\n\nPytanie: {query}\n\nOdpowiedź:"
|
|
|
|
|
|
|
50 |
|
51 |
response = ""
|
52 |
async for token in client.text_generation(
|
53 |
+
model="Qwen/Qwen2.5-72B-Instruct",
|
54 |
+
prompt=prompt,
|
55 |
max_new_tokens=2048,
|
56 |
temperature=0.5,
|
57 |
top_p=0.7,
|
|
|
60 |
response += token
|
61 |
yield token
|
62 |
|
63 |
+
def search_relevant_chunks(keywords, chunks, model, top_k=3):
|
64 |
+
keyword_embedding = model.encode(keywords, convert_to_tensor=True)
|
65 |
+
chunk_embeddings = model.encode([chunk['text'] for chunk in chunks], convert_to_tensor=True)
|
66 |
+
|
67 |
+
cos_scores = util.pytorch_cos_sim(keyword_embedding, chunk_embeddings)
|
68 |
+
top_results = torch.topk(cos_scores.mean(dim=0), k=top_k)
|
69 |
+
|
70 |
+
return [chunks[idx] for idx in top_results.indices]
|
71 |
+
|
72 |
+
|
73 |
def main():
|
74 |
st.title("Chatbot Prawny z AI")
|
75 |
|