|
|
@@ -163,7 +163,7 @@ Palun tuvasta kasutatud meetodid. Tagasta VAID komadega eraldatud nimekiri.
|
|
|
|
|
|
methods = [m.strip() for m in response.split(',') if m.strip()]
|
|
|
return methods
|
|
|
-
|
|
|
+
|
|
|
def analyze_transport_context(self, summary: str) -> Dict:
|
|
|
"""Analüüsi artikli tähtsus transpordiplaneerimise kontekstis"""
|
|
|
self.logger.info("Analüüsin transpordi konteksti...")
|
|
|
@@ -176,6 +176,21 @@ Hinda järgmisi aspekte:
|
|
|
2. Praktiline rakendatavus
|
|
|
3. Reaalsete probleemide lahendamine
|
|
|
4. Piirangud ja edasised vajadused
|
|
|
+
|
|
|
+**OLULINE JUHIS:**
|
|
|
+1. Kasuta JSON struktuuri jaoks ALATI topeltjutumärke (") nagu JSON standard nõuab
|
|
|
+2. Kasuta stringide SISU jaoks ÜHEKORDSEID jutumärke (') kui vaja jutumärke kasutada
|
|
|
+3. Ära kasuta stringide sees topeltjutumärke, sest need segavad JSON parsingut
|
|
|
+4. Ära kasuta JSON stringi sees teist JSON struktuuri
|
|
|
+
|
|
|
+Näide õigest kasutamisest:
|
|
|
+{
|
|
|
+"theoretical_contribution": "Autor toob välja, et formaalsed meetodid kannavad analüütikute 'väärtushinnanguid'",
|
|
|
+"practical_applicability": "Rakendatav 'reisiplaneerimise' kontekstis",
|
|
|
+"problem_solving": "Lahendab 'kompleksseid' probleeme",
|
|
|
+"limitations": "Piiratud 'andmete' kvaliteediga",
|
|
|
+"relevance_score": 8
|
|
|
+}
|
|
|
"""
|
|
|
|
|
|
user_prompt = f"""Artikli kokkuvõte:
|
|
|
@@ -183,12 +198,14 @@ Hinda järgmisi aspekte:
|
|
|
|
|
|
Palun analüüsi artikli tähtsust transpordiplaneerimise kontekstis. Tagasta JSON formaadis:
|
|
|
{{
|
|
|
- "theoretical_contribution": "lühikirjeldus",
|
|
|
- "practical_applicability": "lühikirjeldus",
|
|
|
- "problem_solving": "lühikirjeldus",
|
|
|
- "limitations": "lühikirjeldus",
|
|
|
- "relevance_score": 1-10 (kus 10 on kõige relevantsem)
|
|
|
+"theoretical_contribution": "lühikirjeldus",
|
|
|
+"practical_applicability": "lühikirjeldus",
|
|
|
+"problem_solving": "lühikirjeldus",
|
|
|
+"limitations": "lühikirjeldus",
|
|
|
+"relevance_score": 1-10 (kus 10 on kõige relevantsem)
|
|
|
}}
|
|
|
+
|
|
|
+**MEELDEJÄÄVUS:** Kasuta stringide sees ühekordseid jutumärke ('), mitte topeltjutumärke (").
|
|
|
"""
|
|
|
|
|
|
messages = [
|
|
|
@@ -199,14 +216,56 @@ Palun analüüsi artikli tähtsust transpordiplaneerimise kontekstis. Tagasta JS
|
|
|
response = self.call_api(messages, temperature=0.5)
|
|
|
|
|
|
try:
|
|
|
+ # Puhasta vastus enne JSON parsingut
|
|
|
+ # Eemalda koodibloki markerid
|
|
|
+ response = response.replace('```json', '').replace('```', '').strip()
|
|
|
+
|
|
|
# Proovi parsida JSON vastust
|
|
|
if response.startswith('{') and response.endswith('}'):
|
|
|
- return json.loads(response)
|
|
|
- except:
|
|
|
- pass
|
|
|
+ # Asenda stringide sees olevad topeltjutumärgid ühekordsetega
|
|
|
+ # See lihtsustab hilisemat parsingut
|
|
|
+ cleaned_response = self._clean_json_response(response)
|
|
|
+ return json.loads(cleaned_response)
|
|
|
+ except Exception as e:
|
|
|
+ self.logger.warning(f"JSON parsimine ebaõnnestus, kasutan tekstina: {str(e)}")
|
|
|
|
|
|
# Kui JSON parsimine ei õnnestu, tagasta struktureeritud tekst
|
|
|
return {
|
|
|
"analysis": response,
|
|
|
"relevance_score": 5 # Vaikimisi skoor
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ def _clean_json_response(self, json_str: str) -> str:
|
|
|
+ """Puhasta JSON vastus, et vältida escape probleeme"""
|
|
|
+ try:
|
|
|
+ # Esmalt proovi parsida otse
|
|
|
+ parsed = json.loads(json_str)
|
|
|
+ # Serializeeri tagasi, asendades stringide sees olevad jutumärgid
|
|
|
+ return json.dumps(parsed, ensure_ascii=False)
|
|
|
+ except json.JSONDecodeError:
|
|
|
+ # Kui ei õnnestu, proovi käsitsi korrigeerida
|
|
|
+ # Asenda \" -> " (eemalda escape'd)
|
|
|
+ json_str = json_str.replace('\\"', '"')
|
|
|
+ # Proovi uuesti
|
|
|
+ try:
|
|
|
+ parsed = json.loads(json_str)
|
|
|
+ return json.dumps(parsed, ensure_ascii=False)
|
|
|
+ except:
|
|
|
+ # Kui ikka ei tööta, tagasta originaal (või puhasta rohkem)
|
|
|
+ return json_str
|
|
|
+
|
|
|
+ def encode_string_for_weaviate(self, text: str) -> str:
|
|
|
+ """Kodeeri string Weaviate'i jaoks, et vältida JSON probleeme"""
|
|
|
+ if not isinstance(text, str):
|
|
|
+ text = str(text)
|
|
|
+
|
|
|
+ # Asenda stringi sees olevad topeltjutumärgid ühekordsetega
|
|
|
+ text = text.replace('"', "'")
|
|
|
+
|
|
|
+ # Asenda \\" -> ' (eemalda double escape)
|
|
|
+ text = text.replace('\\"', "'")
|
|
|
+
|
|
|
+ # Asenda liigsed tühikud
|
|
|
+ text = ' '.join(text.split())
|
|
|
+
|
|
|
+ return text
|