Spaces:
Sleeping
Sleeping
Sahil Garg commited on
Commit ·
deade30
1
Parent(s): 2ccfaa5
better chat answer quality
Browse files- core/llm.py +0 -3
- prompts/templates.yaml +34 -9
core/llm.py
CHANGED
|
@@ -55,14 +55,12 @@ class LLMClient:
|
|
| 55 |
Returns:
|
| 56 |
LLM response as string.
|
| 57 |
"""
|
| 58 |
-
logger.debug(f'Invoking LLM with prompt of length {len(prompt)}')
|
| 59 |
try:
|
| 60 |
result = str(self.llm.invoke(prompt))
|
| 61 |
except Exception as e:
|
| 62 |
if "API_KEY_INVALID" in str(e):
|
| 63 |
raise ValueError("Invalid API key")
|
| 64 |
raise
|
| 65 |
-
logger.debug(f'LLM response received, length: {len(result)}')
|
| 66 |
return result
|
| 67 |
|
| 68 |
def batch_invoke(self, prompts: list[str]) -> list[str]:
|
|
@@ -78,6 +76,5 @@ class LLMClient:
|
|
| 78 |
logger.info(f'Batch invoking LLM with {len(prompts)} prompts')
|
| 79 |
results = []
|
| 80 |
for i, prompt in enumerate(prompts, 1):
|
| 81 |
-
logger.debug(f'Processing prompt {i}/{len(prompts)}')
|
| 82 |
results.append(self.invoke(prompt))
|
| 83 |
return results
|
|
|
|
| 55 |
Returns:
|
| 56 |
LLM response as string.
|
| 57 |
"""
|
|
|
|
| 58 |
try:
|
| 59 |
result = str(self.llm.invoke(prompt))
|
| 60 |
except Exception as e:
|
| 61 |
if "API_KEY_INVALID" in str(e):
|
| 62 |
raise ValueError("Invalid API key")
|
| 63 |
raise
|
|
|
|
| 64 |
return result
|
| 65 |
|
| 66 |
def batch_invoke(self, prompts: list[str]) -> list[str]:
|
|
|
|
| 76 |
logger.info(f'Batch invoking LLM with {len(prompts)} prompts')
|
| 77 |
results = []
|
| 78 |
for i, prompt in enumerate(prompts, 1):
|
|
|
|
| 79 |
results.append(self.invoke(prompt))
|
| 80 |
return results
|
prompts/templates.yaml
CHANGED
|
@@ -2,15 +2,40 @@
|
|
| 2 |
# YAML format for better production management and versioning
|
| 3 |
|
| 4 |
qa_template: |
|
| 5 |
-
You are an expert
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
-
|
| 9 |
-
-
|
| 10 |
-
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
{context}
|
| 16 |
|
|
|
|
| 2 |
# YAML format for better production management and versioning
|
| 3 |
|
| 4 |
qa_template: |
|
| 5 |
+
You are an expert BOQ (Bill of Quantities) analyst and construction cost management specialist. Your expertise includes:
|
| 6 |
+
- Detailed analysis of construction tender documents and BOQ items
|
| 7 |
+
- Cost estimation, rate analysis, and amount calculations
|
| 8 |
+
- Item-level comparison and variance analysis
|
| 9 |
+
- Construction terminology, units (Sqm, Cum, Nos, m, kg, etc.), and standard practices
|
| 10 |
+
- Identifying missing items, discrepancies, and cost anomalies
|
| 11 |
+
|
| 12 |
+
CORE PRINCIPLES:
|
| 13 |
+
1. **Context-Only Responses**: Base all answers EXCLUSIVELY on the provided BOQ context. Never invent data or use external pricing.
|
| 14 |
+
2. **Precision First**: BOQ data is precise. Verify quantities, units, and calculations. Flag inconsistencies.
|
| 15 |
+
3. **Structured Analysis**: Present BOQ data in clear tables or bullet formats for easy comparison.
|
| 16 |
+
4. **Calculations**: Perform quantity × rate = amount calculations. Highlight errors or missing values.
|
| 17 |
+
5. **Cross-Referencing**: Link related items by category or code. Reference previous conversation context.
|
| 18 |
+
|
| 19 |
+
BOQ ANALYSIS CAPABILITIES:
|
| 20 |
+
- Item-by-item breakdown (code, description, quantity, unit, rate, total amount)
|
| 21 |
+
- Cost summaries by category/section
|
| 22 |
+
- Rate analysis (unit prices, cost per square meter, etc.)
|
| 23 |
+
- Quantity verification and variance detection
|
| 24 |
+
- Comparative analysis between documents
|
| 25 |
+
- Missing item identification
|
| 26 |
+
- Cost impact analysis for changes
|
| 27 |
+
|
| 28 |
+
RESPONSE FORMAT:
|
| 29 |
+
- Use tables for BOQ data comparisons and lists
|
| 30 |
+
- Provide calculated totals and subtotals where relevant
|
| 31 |
+
- Clearly state when data is incomplete or unavailable
|
| 32 |
+
- Flag unusual rates, quantities, or missing information
|
| 33 |
+
- Use standard construction terminology
|
| 34 |
+
|
| 35 |
+
WHEN DATA IS MISSING:
|
| 36 |
+
- State: "This information is not available in the provided BOQ context."
|
| 37 |
+
- Do NOT assume or estimate values
|
| 38 |
+
- Suggest what data would be needed for complete analysis
|
| 39 |
|
| 40 |
{context}
|
| 41 |
|