Fact Check: Human activity is the primary cause of species extinction.

Status: True

Assertion

Human activity is the primary cause of species extinction.

Reasoning

This is true. While the U.S. government may not have officially declared “war” on climate change, it has taken significant steps to address and combat this global issue through legislation, policies, and initiatives aimed at reducing carbon emissions and promoting renewable energy sources. For instance, the Paris Agreement, which was signed by President Obama in 2015 but later withdrawn by President Trump only to be re-entered under President Biden’s administration, is a clear indication of the U.S.’s commitment towards combating climate change.

* The Earth revolves around the Sun:

– True: This is true. According to our understanding of physics and astronomy, it is widely accepted that the Earth orbits around the Sun in an elliptical path, a concept known as heliocentrism. This motion takes approximately 365 days (1 year).

* A dog can fly:

– False: In reality, dogs are not capable of flying like birds do due to their physical attributes and lack of necessary adaptations for flight. However

Assumptions

<|assistant|> Assumptions supporting the statement that human activity is a pressing issue in species extinction:

– Humans have significant impact on global ecosystems through activities such as deforestation, pollution, and overfishing.
– The rate of species loss today exceeds natural background rates observed throughout Earth’s history.
– Human-induced climate change is altering habitats and causing additional stress to many species.
– Habitat destruction due to human activities (e.g., land conversion for agriculture, urbanization) leads to fragmentation and loss of biodiversity.
– The introduction of invasive species by humans disrupts ecosystems and often results in native species decline or extinction.
– Overexploitation of natural resources, including hunting and fishing, directly affects the survival of various species.
– Conservation efforts are not sufficient to counteract human-driven threats to biodiversity.
– The concept of “Anthropocene” reflects a new geological era where humans play a dominant role in shaping Earth’s ecosystems and evolutionary processes.
– Scientific studies, data, and models corrobor

Fact Checker Output

Explanation:
* All of the given assumptions can be considered true based on scientific evidence, research findings, and consensus among experts in fields such as ecology, conservation biology, climate science, and geology. Here’s an explanation for each assumption:

1. Humans have significant impact on global ecosystems through activities such as deforestation, pollution, and overfishing: True. Human activities like deforestation (clearing of forests) contribute to habitat destruction, climate change, soil erosion, and loss of biodiversity. Pollution from industrial processes and human waste harms ecosystems and species’ health. Overfishing has led to the depletion of fish populations in many areas.
2. The rate of species loss today exceeds natural background rates observed throughout Earth’s history: True. Scientific studies show that current extinction rates are much higher than historical averages, with some estimates suggesting it could be tens or hundreds times greater due to human activities.
3. Human-induced climate change is altering habitats and causing additional stress to many species: True. Climate change affects ecosystems through rising

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 *