Fact Check: You lose most of your body heat through your head.

Status: True

Assertion

You lose most of your body heat through your head.

Results

The statement is true based on scientific evidence, understanding of heat loss mechanisms in the human body, and general knowledge about preventing hypothermia. While it’s essential to keep the head warm, focusing on overall clothing coverage can also be effective in maintaining a constant internal temperature. However, protective measures should not solely depend on one aspect; they must consider all parts of the body that are exposed to cold conditions.

The statement is true: The assertion aligns with scientific evidence regarding heat loss from different body areas and mechanisms involved in regulating temperature. Additionally, while keeping the head warm does contribute to maintaining a stable internal temperature, it’s crucial to consider other parts of the body as well for effective protection against cold temperatures.

The statement is true: The information provided supports the fact that heat loss occurs through various mechanisms and can be minimized by proper clothing coverage across all exposed areas of the body. While keeping the head warm has its importance, it’s essential to consider other parts like hands and feet for overall protection against cold conditions.

The statement is true: Scientific evidence supports that heat loss from different body parts occurs through various mechanisms such as radiation

Assumptions

<|assistant|> Assumptions supporting the statement that the human body does not lose the majority of heat through the head:

1. The belief is based on scientific evidence rather than anecdotal or cultural observations.
2. Heat loss from the body occurs via several mechanisms, including radiation, convection, conduction, and evaporation.
3. The head’s surface area relative to its volume does not significantly contribute more to overall heat loss due to insulation provided by hair and clothing.
4. Adequate coverage of the entire body in cold conditions is necessary for maintaining body temperature effectively.
5. Cultural beliefs or old wives’ tales do not override scientific evidence regarding human thermoregulation.
6. The statement assumes a balanced understanding of how heat loss occurs, and that it should be considered holistically rather than focusing on one particular area such as the head.

Fact Checker Output

Teacher: 1. True – The assertion is based on scientific evidence obtained through studies and experiments conducted in controlled environments that measure heat loss from different body parts under various conditions.

2. True – Heat loss occurs via radiation (emission of infrared energy), convection (heat transfer between objects due to the movement of fluids such as air or water), conduction (direct contact with cooler surfaces), and evaporation (loss of heat when sweat on skin surface evaporates). All these mechanisms play a role in maintaining body temperature.

3. True – The human head has hair, which provides some insulation, but the overall effect is relatively small compared to other parts like hands and feet. Moreover, clothing covering most of the body contributes more significantly to heat loss prevention than the exposure or coverage of just the head.

4. True – Adequate coverage of the entire body in cold conditions helps maintain a constant internal temperature by minimizing overall heat loss. While it is true that keeping the head warm is important, focusing on other parts like hands and feet can also significantly contribute to preventing hypothermia or frostbite.

5

Model Used

microsoft/Phi-3-mini-4k-instruct-gguf

Script Name

fact_checker_mongodb.py

Script Code

import os
import sys
import requests
from langchain_openai.llms import OpenAI
from langchain.prompts import PromptTemplate
from dotenv import load_dotenv
from statements import get_random_statement
from mongodb_helper import insert_record  # Import MongoDB helper functions
import html

# Load environment variables from .env file
load_dotenv()

# Define category IDs
CATEGORY_IDS = {
    "True": 2,
    "False": 3,
    "Debatable": 4,
    "Unknown": 6
}

def create_wordpress_post(title, content, category):
    data = {
        "title": title,
        "content": content,
        "status": "publish",
        "categories": [CATEGORY_IDS[category]]
    }

    response = requests.post(
        os.getenv("WORDPRESS_POSTS_URL"),
        json=data,
        auth=(os.getenv("WORDPRESS_USERNAME"), os.getenv("WORDPRESS_PASSWORD"))
    )

    if response.status_code == 201:
        print("Blog post created successfully.")
    else:
        print(f"Failed to create blog post: {response.status_code} - {response.text}")

def fact_check(assertion):
    llm = OpenAI(temperature=0.7, model=os.getenv("MODEL_NAME"))

    # Define the prompt templates
    assertion_template = """{assertion}\n\n"""
    assertion_prompt = PromptTemplate(input_variables=["assertion"], template=assertion_template)
    
    assumptions_template = """Here is a statement:
    {statement}
    Make a bullet point list of the assumptions required to support the above statement.\n\n"""
    assumptions_prompt = PromptTemplate(input_variables=["statement"], template=assumptions_template)
    
    fact_checker_template = """Here is a bullet point list of assertions:
    {assertions}
    For each assumption, determine whether it is true or false. Explain your reasoning.\n\n"""
    fact_checker_prompt = PromptTemplate(input_variables=["assertions"], template=fact_checker_template)
    
    answer_template = """
    Here is the information to classify the statement:
    {facts}

    Based on the above information, how would you classify the statement? Respond with one of the following options followed by a colon and space:
    - True: [Explanation]
    - False: [Explanation]
    - Debatable: [Explanation]
    """
    answer_prompt = PromptTemplate(input_variables=["facts"], template=answer_template)
    
    # Format prompts and extract the string content
    formatted_assertion = assertion_prompt.format_prompt(assertion=assertion).text
    assertion_output = llm.invoke(formatted_assertion)
    
    formatted_assumptions = assumptions_prompt.format_prompt(statement=assertion_output).text
    assumptions_output = llm.invoke(formatted_assumptions)
    
    formatted_fact_checker = fact_checker_prompt.format_prompt(assertions=assumptions_output).text
    fact_checker_output = llm.invoke(formatted_fact_checker)
    
    formatted_answer = answer_prompt.format_prompt(facts=fact_checker_output).text
    final_output = llm.invoke(formatted_answer)
    
    return {
        "assertion_output": assertion_output,
        "assumptions_output": assumptions_output,
        "fact_checker_output": fact_checker_output,
        "final_output": final_output,
    }

def extract_status_and_reasoning(final_output):
    final_output = final_output.strip()
    if "True:" in final_output:
        status_start = final_output.find("True:")
        status = "True"
    elif "False:" in final_output:
        status_start = final_output.find("False:")
        status = "False"
    elif "Debatable:" in final_output:
        status_start = final_output.find("Debatable:")
        status = "Debatable"
    else:
        return "Unknown", final_output

    reasoning = final_output[status_start + len(status) + 1:].strip()
    return status, reasoning

if __name__ == "__main__":
    if len(sys.argv) > 1:
        assertion = sys.argv[1]
    else:
        assertion = get_random_statement()
    
    print(assertion)
    submission = fact_check(assertion)
    
    # Print the detailed outputs to inspect their structure
    for key, value in submission.items():
        print(f"{key}: {value}")
    
    # Extract the final output for status determination and reasoning
    final_output = submission['final_output']
    status, reasoning = extract_status_and_reasoning(final_output)
    
    # Record the result in MongoDB
    try:
        print("Attempting to insert record into MongoDB...")
        insert_record(
            script_name="fact_checker_mongodb.py",
            script_code=html.escape(open(__file__).read()),
            assertion=assertion,
            status=status,
            submission=submission,  # Store the entire submission for detailed analysis
            model=os.getenv("MODEL_NAME")
        )
        print("Record inserted into MongoDB successfully.")
    except Exception as e:
        print(f"Failed to insert record into MongoDB: {e}")
    
    print(final_output)
    
    # Create a blog post on WordPress
    blog_title = f"Fact Check: {assertion}"
    blog_content = f"""
    <h1>Status: {status}</h1>
    <h2>Assertion</h2>
    <p>{assertion}</p>
    <h2>Results</h2>
    <p>{reasoning}</p>
    <h3>Assumptions</h3>
    <p>{submission['assumptions_output']}</p>
    <h3>Fact Checker Output</h3>
    <p>{submission['fact_checker_output']}</p>
    <h4>Model Used</h4>
    <p>{os.getenv("MODEL_NAME")}</p>
    <h4>Script Name</h4>
    <p>fact_checker_mongodb.py</p>
    <h4>Script Code</h4>
    <pre>{html.escape(open(__file__).read())}</pre>
    """
    create_wordpress_post(blog_title, blog_content, status)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *