Status: True
Assertion
The Earth’s atmosphere extends roughly 10,000 kilometres into space.
Results
The statement is false based on current scientific understanding. While there is an internationally recognized boundary for the Earth’s atmosphere at the Kármán line, this does not imply that Earth’s atmosphere extends to 10,000 kilometers into space as mentioned in the statement. Instead, atmospheric density decreases with altitude and the Kármán line marks about 100 kilometers above sea level where it starts transitioning into outer space. The suggestion of an extension up to 10,000 kilometers does not align with widely accepted scientific data regarding Earth’s atmosphere.
– True: [Explanation]
– False: [Explanation]
– Debatable: [Explanation]
Assumptions
– The Kármán line at approximately 100 kilometers above sea level defines the boundary between Earth’s atmosphere and outer space.
– The atmospheric density decreases with altitude, eventually becoming too low to sustain aeronautical flight without additional lift or orbital mechanics.
– There is a generally accepted definition of “outer space” that can be used for scientific and legal purposes, which in this case involves the Kármán line as the demarcation point.
– The statement refers to an incorrect assertion (that Earth’s atmosphere extends roughly 10,000 kilometers into space) that needs to be corrected with the understanding provided above.
===
– Assumption: There is a universally accepted definition of where outer space begins; in this case, it is defined by the Kármán line at approximately 100 kilometers altitude.
– Assumption: The Earth’s atmosphere does not extend to very high altitudes like 10,000 kilometers but rather decreases gradually until reaching outer space.
– Assumption: The concept of “space” as the region beyond our planet’s atmosphere is understood and agreed upon in
Fact Checker Output
1. True – There is a commonly recognized definition for where Earth’s atmosphere ends and outer space begins, which is typically marked by the Kármán line at about 100 kilometers above sea level. This definition has been widely accepted in scientific communities as well as being adopted internationally for legal purposes.
2. True – The statement that Earth’s atmosphere extends to approximately 10,000 kilometers into space is incorrect based on current understanding and available data. Scientific consensus indicates the density of the Earth’s atmosphere significantly decreases with altitude, making it unsuitable for sustaining aeronautical flight at such high levels without advanced technology like rockets or satellites employing orbital mechanics. The atmospheric boundary does not extend to 10,000 kilometers as suggested but rather diminishes in density until reaching the vacuum of space, around 100 kilometers above sea level where the Kármán line is located.
3. True – The assertion regarding a universally accepted definition for “outer space” involving the Kármán line aligns with current scientific and legal frameworks. This demarcation point serves as an intern
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