File size: 3,195 Bytes
4faf887
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

from civil_engineering_rag_verifier import CivilEngineeringRAGVerifier

def main():
    # Initialize the verifier
    verifier = CivilEngineeringRAGVerifier(similarity_threshold=0.7)
    
    # Example model response for a structural engineering question
    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.
    """
    
    # Example retrieved engineering documents
    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"
        }
    ]
    
    # Verify the response
    is_verified, modified_response, verification_details = verifier.verify_response(
        model_response, 
        retrieved_documents
    )
    
    # Print results
    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()