Fact Check: Humans use only a small percentage of their brains.

Status: True

Assertion

Humans use only a small percentage of their brains.

Results

The statement’s inaccuracies lie within the historical roots section, which erroneously associates modern misconceptions about brain usage percentages with phrenology. However, the first three points correctly identify common factors contributing to the persistence of this myth, such as popular culture simplification and anecdotal evidence without scientific backing. Therefore, while one part is false, the overall classification leans towards ‘True’ due to its strong connection to other true aspects related to public misconceptions about brain usage percentages.
⇒ True: Misinterpretation or oversimplification of brain functionality in popular culture and media; Lack of public awareness about neuroscientific research findings; The belief may stem from anecdotal evidence without scientific backing, though the historical roots section contains a minor error regarding phrenology’s relation to current misunderstandings.

– False: All parts of the statement are inaccurately related to the topic, as historical references and popular culture do not directly contribute to beliefs about using only 10% of your brain. The last part is particularly incorrect since phrenology does not have a direct link with modern misconception

Assumptions

– Misinterpretation or oversimplification of brain functionality in popular culture and media.

– Lack of public awareness about neuroscientific research findings that demonstrate extensive use of the brain’s different areas.

– The belief may stem from anecdotal evidence where individuals experience improvement after using methods claiming to “unlock” unused parts of the brain, without scientific backing.

– The idea could have historical roots in phrenology, which incorrectly associated skull shape with mental faculties and functions, though this is not related to actual brain usage percentages.

It’s important to note that while it might be true that we don’t consciously use all parts of our brains at once for every task, the notion that a significant portion remains unused has been disproven by scientific evidence.

Fact Checker Output

<|assistant|> – Misinterpretation or oversimplification of brain functionality in popular culture and media: True. Popular culture often simplifies complex neuroscientific concepts into catchy phrases like “using 10% of your brain” for dramatic effect, which can mislead the public about how our brains function.

– Lack of public awareness about neuroscientific research findings: True. While scientific literature and resources are available, they may not reach a wide audience effectively, leading to misunderstandings among the general population.

– The belief may stem from anecdotal evidence without scientific backing: True. Many people report feeling better after using brain training programs or techniques that claim to unlock parts of the brain; however, these experiences are often based on subjective feelings rather than controlled scientific studies.

– Historical roots in phrenology and related misconceptions about brain usage percentages: False. Phrenology is a discredited field that has nothing to do with current understandings of brain functionality or unused areas of the brain, though it did contribute to early misunderstandings about brain functions based on skull shape—which have been debunked by modern neuroscience

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 *