Status: True
Assertion
Humans have more than five senses.
Results
Humans have innate abilities beyond the classical five senses (sight, hearing, taste, smell, touch), such as proprioception and interoception. This assertion aligns with current scientific understanding that humans possess additional perceptual systems like proprioception for body awareness and interoception for internal bodily states recognition. Proprioception allows humans to perceive their body’s positioning in space without visual aid, while interoception enables individuals to understand bodily internal states such as hunger or thirst. These additional senses play a crucial role in human interaction with the environment and self-awareness by contributing to spatial orientation and monitoring physiological needs.
Assumptions
Assumptions:
– Humans have innate abilities beyond the classical five senses (sight, hearing, taste, smell, touch), such as proprioception and interoception.
– Proprioception allows humans to perceive their body’s positioning in space without visual aid.
– Interoception enables humans to understand bodily internal states like hunger, heartbeat or thirst.
– These additional senses play an essential role in human interaction with the environment and understanding of self.
– There is a consensus among scientists that these non-traditional ‘senses’ exist and are integral parts of human perception.
– The concept of ‘sixth sense’, including extrasensory phenomena, has been proposed by some researchers though it remains controversial in the scientific community due to lack of empirical evidence.
– Our understanding or knowledge about these additional senses is continuously expanding with ongoing research and exploration into human perception and cognition.
– The statement doesn’t imply that these additional senses are common among all humans, but acknowledges their existence in some individuals based on current scientific understanding.
Fact Checker Output
<|assistant|> – True: Humans have innate abilities beyond the classical five senses (sight, hearing, taste, smell, touch), such as proprioception and interoception. This assertion aligns with current scientific understanding that humans possess additional perceptual systems like proprioception for body awareness and interoception for internal bodily states recognition.
– True: Proprioception allows humans to perceive their body’s positioning in space without visual aid. Through proprioception, individuals can sense the location of their limbs and other body parts even without looking at them, which is widely accepted among scientists.
– True: Interoception enables humans to understand bodily internal states like hunger, heartbeat or thirst. This assertion is true as interoception refers to the perception of stimuli originating from within the body, such as sensations related to internal physiological states.
– True: These additional senses play an essential role in human interaction with the environment and understanding of self. Proprioception and interoception are crucial for navigation through space and recognizing one’s physical condition and needs, respectively. They significantly contribute to a holistic sense of
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)
Leave a Reply