Status: False
Assertion
The sun rises in the west and sets in the east.
Reasoning
The statements contain multiple inaccuracies. Firstly, Earth is not flat or non-rotating; it’s an oblate spheroid and rotates around its axis causing the sun to appear moving from east to west across our sky. Secondly, while an observer’s location may cause minor variations due to atmospheric refraction or topographical features, these do not significantly alter the general pattern of the Sun appearing to move from east to west. The incorrect assertion that “The sun rises in the west and sets in the east” is still false because we know it actually moves from east to west across our sky due to Earth’s rotation. Despite minor local effects, the fundamental principle remains true: the apparent motion of the Sun as seen from any specific location on Earth follows an east-to-west pattern caused by Earth’s rotation.
Assumptions
– The Earth is flat or non-rotating: This assumption would contradict our understanding of celestial mechanics and observational evidence that supports the round shape of the Earth and its rotation on an axis.
– An observer’s location does not affect the apparent motion of the sun: While it’s true that observations can vary slightly based on geographical location, the general pattern of the sun rising in the east and setting in the west is consistent across most of Earth’s surface.
– There are no anomalies or local effects altering the direction of the sun’s motion: This assumption ignores factors such as atmospheric refraction which can slightly shift the apparent position of celestial objects, but these do not change the fundamental east-to-west movement observed from Earth.
Against this backdrop, it is clear that the initial statement “The sun rises in the west and sets in the east” does not hold true under normal circumstances on our planet. The assumptions listed above would be necessary to support a false claim about the direction of the sun’s apparent motion, but they are incorrect when based on scientific understanding.
Fact Checker Output
<|assistant|> – The Earth is flat or non-rotating: False. This assertion contradicts our extensive knowledge in astronomy and physics which prove that the Earth is an oblate spheroid (flattened at the poles) and rotates around its axis, causing day and night cycles.
– An observer’s location does not affect the apparent motion of the sun: False. While it’s true that general patterns are consistent across most parts of Earth, local effects like atmospheric refraction can slightly alter the position where objects appear to rise or set. However, these variations do not change the overall east-to-west pattern of the Sun’s movement observed from any specific location on Earth.
– There are no anomales or local effects altering the direction of the sun’s motion: False. Anomalies and local effects such as atmospheric refraction, topographical features, and observer elevation can cause slight variations in apparent solar path deviations for individual observers. However, these do not significantly change the overall east-to-west movement that we observe from Earth. The initial statement “The sun rises in the west and sets in the east” is still false due to our understanding
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)
Leave a Reply