Fact Check: Electric cars are the solution to climate change.

Status: True

Assertion

Electric cars are the solution to climate change.

Reasoning

The first assumption suggests that uniform policies might limit students’ ability to express themselves through clothing, which can be a valid concern for those who believe in the importance of self-expression in education settings. However, this claim may vary based on individual experiences and cultural contexts.
– False: While it acknowledges deeper issues within the educational system, uniform policies alone are not designed as solutions to these complex problems. This statement doesn’t directly refute the potential benefits or drawbacks of uniforms but rather points out that they don’t address more significant disparities in education.
– Debatable: Given that both assumptions highlight important aspects related to student self-expression and systemic educational issues, with varying implications depending on individual perspectives and contextual factors, the statement can be seen as debatable. The effectiveness of uniforms is a nuanced topic, with potential benefits in terms of equality and focus, but also concerns regarding expression and deeper social challenges that they may not address.

Assumptions

– Assumption 1: Wearing specific clothing items can visibly indicate an individual’s economic status.
– Assumption 2: Socioeconomic disparities among students have negative social consequences that uniforms can help mitigate.

2. Uniforms reduce distractions and enhance focus on academics.
Make a bullet point list of the assumptions required to support the above statement.

– Assumption 1: Differences in clothing choices among students create distractions that affect learning environments.
– Assumption 2: By standardizing attire, uniforms minimize visual stimuli and allow for a more focused educational experience.

3. Uniforms instill discipline and prepare students for professional settings.
Make a bullet point list of the assumptions required to support the above statement.

– Assumption 1: Adherence to dress codes requires self-discipline, which can translate into other aspects of life.
– Assumption 2: Professional environments often have specific attire requirements that uniforms prepare students for in the future.

Arguments AGAINST school uniforms:
1.

Fact Checker Output

– False. While clothing can sometimes indicate economic status, this assertion oversimplifies complex socioeconomic issues and does not consider other factors like brand choices that may also signal wealth without uniforms being a factor.
explanation=2.
– True. Differences in clothing can indeed create distractions among students due to varying styles, colors, logos, etc., which can be visually stimulating and divert attention from learning activities. By standardizing attire through uniforms, these visual distractions are minimized, potentially leading to a more focused educational experience for all students.
– True. Uniforms do prepare students for professional settings by instilling habits of conformity, adherence to rules (like dress codes), and an understanding that certain environments have specific expectations regarding attire. This can help transition them into workplaces where uniform or dress code policies may be in place.

3. Arguments AGAINST school uniforms:
1. Cost of Uniforms May Be Prohibitive for Some Families
– Assumption: Not all families have the financial means to purchase multiple sets of uniforms, especially if they need to replace them frequently

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
from wordpress_helper import create_wordpress_post  # Import WordPress helper functions
import html

# Load environment variables from .env file
load_dotenv()

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):
    llm = OpenAI(temperature=0.7, model=os.getenv("MODEL_NAME"))
    
    extraction_template = """
    Here is a final output of a fact-checking process:
    {final_output}
    
    Based on the above text, what is the classification of the statement? Respond with one of the following options followed by a colon and space:
    - True: [Explanation]
    - False: [Explanation]
    - Debatable: [Explanation]
    """
    
    extraction_prompt = PromptTemplate(input_variables=["final_output"], template=extraction_template)
    formatted_prompt = extraction_prompt.format_prompt(final_output=final_output).text
    extraction_output = llm.invoke(formatted_prompt).strip()
    
    if "True:" in extraction_output:
        status = "True"
        reasoning = extraction_output.split("True:", 1)[1].strip()
    elif "False:" in extraction_output:
        status = "False"
        reasoning = extraction_output.split("False:", 1)[1].strip()
    elif "Debatable:" in extraction_output:
        status = "Debatable"
        reasoning = extraction_output.split("Debatable:", 1)[1].strip()
    else:
        status = "Unknown"
        reasoning = extraction_output
    
    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)
    
    # Print the final status and reasoning
    print(final_output)
    print(f"Status: {status}")
    print(f"Reasoning: {reasoning}")

    # Record the result in MongoDB
    try:
        print("Attempting to insert record into MongoDB...")
        insert_record(
            script_name=__file__,
            script_code=html.escape(open(__file__).read()),
            assertion=assertion,
            status=status,
            submission=submission,  # Store the entire submission for detailed analysis
            reasoning=reasoning,
            model=os.getenv("MODEL_NAME")
        )
        print("Record inserted into MongoDB successfully.")
    except Exception as e:
        print(f"Failed to insert record into MongoDB: {e}")
    
    # 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>Reasoning</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 *