|
|
|
|
|
from civil_engineering_rag_verifier import CivilEngineeringRAGVerifier |
|
|
|
|
|
def main(): |
|
|
|
|
|
verifier = CivilEngineeringRAGVerifier(similarity_threshold=0.7) |
|
|
|
|
|
|
|
|
model_response = """ |
|
|
For a reinforced concrete beam with a span of 6 m carrying a uniform load of 25 kN/m: |
|
|
|
|
|
1. The maximum bending moment will be approximately 112.5 kNm at midspan. |
|
|
2. Assuming a concrete strength of 30 MPa and steel yield strength of 500 MPa, a beam depth of 450 mm would be appropriate. |
|
|
3. The minimum reinforcement ratio should be 0.3% according to ACI 318. |
|
|
4. The beam should have a minimum width of 250 mm to accommodate the required reinforcement. |
|
|
5. Shear reinforcement with 10 mm diameter stirrups at 200 mm spacing will be sufficient near the supports. |
|
|
""" |
|
|
|
|
|
|
|
|
retrieved_documents = [ |
|
|
{ |
|
|
"content": "For simply supported beams with uniform loading (w), the maximum bending moment occurs at midspan and equals wL²/8, where L is the span length.", |
|
|
"source": "structural_engineering_handbook_p127" |
|
|
}, |
|
|
{ |
|
|
"content": "ACI 318 specifies a minimum flexural reinforcement ratio of 0.33% for beams using Grade 60 (420 MPa) steel. For higher strength steels, this may be adjusted.", |
|
|
"source": "concrete_design_manual" |
|
|
}, |
|
|
{ |
|
|
"content": "For concrete with compressive strength of 30 MPa and steel with yield strength of 500 MPa, recommended beam depths typically range from L/12 to L/15 for normal loading conditions.", |
|
|
"source": "design_guidelines" |
|
|
}, |
|
|
{ |
|
|
"content": "Shear reinforcement spacing should not exceed d/2 or 600 mm, whichever is smaller, where d is the effective depth of the beam.", |
|
|
"source": "code_provisions" |
|
|
} |
|
|
] |
|
|
|
|
|
|
|
|
is_verified, modified_response, verification_details = verifier.verify_response( |
|
|
model_response, |
|
|
retrieved_documents |
|
|
) |
|
|
|
|
|
|
|
|
print(f"Response verified: {is_verified}") |
|
|
print(f"Verification score: {verification_details['verification_score']:.2f}") |
|
|
print(f"Claims verified: {verification_details['claims_verified']}/{verification_details['total_claims']}") |
|
|
print(f"Units verified: {verification_details['units_verified']}/{verification_details['total_units']}") |
|
|
|
|
|
print("\nOriginal response:") |
|
|
print(model_response) |
|
|
|
|
|
if not is_verified: |
|
|
print("\nModified response with verification:") |
|
|
print(modified_response) |
|
|
|
|
|
print("\nDetailed verification results:") |
|
|
print("\nTechnical Claims:") |
|
|
for claim_result in verification_details['claim_details']: |
|
|
status = "✓" if claim_result['verified'] else "✗" |
|
|
print(f"{status} {claim_result['claim']}") |
|
|
|
|
|
print("\nUnits and Values:") |
|
|
for unit_result in verification_details['unit_details']: |
|
|
status = "✓" if unit_result['verified'] else "✗" |
|
|
print(f"{status} {unit_result['unit_value']}") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
main() |
|
|
|