Fact Check: Climate change is the most critical issue facing humanity today.

Status: True

Assertion

Climate change is the most critical issue facing humanity today.

Reasoning

The statement aligns with all six pieces of evidence provided, which support the claim that human activities have contributed to climate change and efforts are being made worldwide to address it through technological advancements, government policies, business practices, and public awareness. Each piece of evidence directly confirms a part of the initial assertion:

1. Rising levels of greenhouse gases due to burning fossil fuels (Evidence 1) establishes human contribution to climate change.
2. The Intergovernmental Panel on Climate Change report (Evidence 2) indicates that a significant portion of the increase is from anthropogenic sources, reinforcing the first point.
3. Technological advancements in renewable energy and carbon capture (Evidence 3) demonstrate efforts to mitigate climate change impacts.
4. International agreements like the Paris Agreement (Evidence 4) show collective global action towards reducing emissions, complementing Evidence 2.
5. Changes in agricultural practices aimed at lowering methane and nitrous oxide emissions (Evidence 5) highlight sector-

Assumptions

<|assistant|> Assumptions supporting the statement about climate change:

1. Human activities are primarily responsible for the increase in greenhouse gas emissions, contributing significantly to global warming and its consequences.
2. Renewable energy sources (such as solar, wind, hydroelectric) have a viable potential that can replace fossil fuels and provide clean power on a large scale.
3. Technological advancements exist or are in development that can effectively reduce greenhouse gas emissions.
4. Governments worldwide are willing to prioritize climate change action within their policies, legislation, and international agreements.
5. Businesses recognize the importance of sustainability and will invest in cleaner technologies and practices.
6. Individuals acknowledge their role in addressing climate change and actively participate in eco-friendly behaviors (e.g., reducing waste, conserving energy).
7. International cooperation is possible, with nations committed to working together towards a sustainable future for the planet’s wellbeing.

8. There are economic benefits associated with transitioning to renewable energies and implementing green technologies that can motivate stakeholders to

Fact Checker Output

– Solution: 1. True – Numerous scientific studies have shown a strong correlation between human activities, particularly the burning of fossil fuels and deforestation, leading to increased greenhouse gas emissions, which contribute to global warming.
2. True – Renewable energy sources are already widely used in many parts of the world, with ongoing research and development focused on improving their efficiency and capacity to replace traditional energy sources.
3. True – Technological advancements have been made in areas such as carbon capture and storage (CCS), electric vehicles, and renewable energy technologies that help reduce greenhouse gas emissions.
4. True – Many governments worldwide prioritize climate change action by implementing policies like the Paris Agreement or creating their own national targets for reducing emissions. However, commitment levels may vary among nations.
5. True – An increasing number of businesses recognize the economic benefits and long-term viability associated with sustainable practices, investing in renewable energy infrastructure, eco-friendly technologies, and green initiatives.
6. True – Public awareness about climate change has grown significantly, leading to greater participation in environmentally

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 *