Status: True
Assertion
People in the Middle Ages believed the Earth was flat.
Results
The statement reflects common misconceptions about ancient civilizations’ beliefs regarding the Earth’s shape, which have been debunked by historical and scientific evidence. Despite this, such myths continue to persist in some circles.
[Response]: – True: Ancient civilizations widely recognized that the Earth is spherical, a fact supported by various pieces of historical evidence from multiple cultures around the world. Misconceptions suggesting otherwise are not representative of scholarly consensus and often stem from debunked theories or misinformation.
– False: The statement inaccurately portrays ancient civilizations’ understanding of Earth’s shape, as there is substantial historical evidence indicating that they recognized it to be spherical.
– Debatable: While the majority of scholarly research supports the idea that many ancient civilizations knew about a round Earth, some debate exists regarding the extent and nature of their knowledge, though this does not change the general consensus based on available evidence.
Assumptions
<|assistant|> – The statement implies that:
* There exists misinformation or debunked theories suggesting ancient civilizations did not believe in a spherical-shaped Earth.
* A significant number of scholars and historians have refuted such theories.
* These theories persist as widespread misconceptions about historical beliefs on the shape of the Earth, despite being debunked by experts.
* Historical evidence exists that contradicts these misconceptions and supports the ancient understanding of a round Earth.
* The persistence of this misconception indicates its prevalence in popular culture or education rather than academic consensus.
* Note: While it is true that some historical figures might have held alternative views on the shape of the Earth, stating that these beliefs are widely held as factual misconceptions about history requires a specific context or source to be substantiated. The overall notion of ancient civilizations understanding Earth’s roundness aligns with archaeological findings and historical records.
* It is important to clarify that while the statement highlights incorrect information, it does not imply an intentional spreading of misconceptions but rather points out a misunderstanding
Fact Checker Output
assistant= – The statement implies that: True
* There exists misinformation or debunked theories suggesting ancient civilizations did not believe in a spherical-shaped Earth. (True)
Historical evidence supports the understanding of an Earth’s roundness by many ancient civilizations, such as the Greeks with Eratosthenes and Ptolemy, who calculated Earth’s circumference based on shadows cast at different latitudes. Additionally, various cultures have left behind artifacts that depict a globe-shaped Earth.
* A significant number of scholars and historians have refuted such theories. (True)
The consensus among archaeologists, historians, and scientists is based on extensive evidence showing ancient civilizations’ understanding of the Earth as a sphere or near-spherical object.
* These theories persist as widespayer misconceptions about historical beliefs on the shape of the Earth, despite being debunked by experts. (True)
Despite the overwhelming evidence to the contrary, such myths still circulate in popular culture and occasionally in education due to
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