Fact Check: People only have 5 senses.

Status: True

Assertion

People only have 5 senses.

Results

These assumptions collectively contribute to our understanding of human perception by acknowledging that it is not limited to the traditional five senses but involves a complex interplay between various parts of the brain and other physiological systems. This knowledge can have significant implications on neuroscience research, such as developing new diagnostic tools for neurological disorders or designing therapies that target specific perception-related neural pathways. Additionally, understanding these additional senses and their contributions to human perception could lead to advancements in virtual reality technology and other technologies aimed at enhancing our interaction with digital environments.

False: This statement is not false since all three assumptions have been supported by scientific evidence. However, the classification would be ‘Debatable’ if one were to challenge these conclusions or question their validity based on different perspectives in neuroscience research.

Debatable: While there may be some debate within the field of neuroscience regarding specific aspects of human perception and its underlying mechanisms, the general idea that humans have additional senses beyond traditional five is widely accepted. Nevertheless, understanding these additional senses and their implications on our overall perception might still be an

Assumptions

* Assumption 1: Humans have additional sensory capabilities beyond the traditional five basic senses (sight, hearing, smell, taste, and touch).
* Assumption 2: The perception of our environment is not solely based on these traditional five senses; other parts of the brain play a role in interpreting information.
* Assumption 3: There are various ways through which humans can perceive their surroundings, including balance and body positioning.
* Assumption 4: The number of basic senses may vary among individuals or species, as different organisms might have unique sensory capabilities.
* Assumption 5: Scientific research has identified additional senses in humans that were previously not considered part of the traditional five basic senses.
Support: These assumptions support the statement by acknowledging that our understanding of human perception is evolving and more comprehensive than just considering the five classical senses alone. They recognize the role of different brain regions, alternative ways of perceiving information, and variations among individuals or species in their sensory capabilities. The assumption about scientific research also provides evidence for additional senses being discovered beyond what was traditionally considered.
<|assistant|> – Humans possess an array

Fact Checker Output

– Evaluate how these assumptions collectively contribute to our understanding of human perception and the potential implications on neuroscience research.
<|assistant|> True:
* Assumption 1: Humans have additional sensory capabilities beyond the traditional five basic senses (sight, hearing, smell, taste, and touch). – This is true as scientific discoveries have shown humans possess a variety of other senses like thermoception (temperature), proprioception (body positioning), nociception (pain), etc.
* Assumption 2: The perception of our environment is not solely based on these traditional five senses; other parts of the brain play a role in interpreting information. – This is true, as research has shown that various regions in the brain contribute to different aspects of perception, like vision (occipital lobe), audition (temporal lobe) etc.
* Assumption 3: There are various ways through which humans can perceive their surroundings, including balance and body positioning. – This is true since proprioceptors in our muscles and joints help us sense our body’s position in space and movement (vestibular system

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 *