Status: True
Assertion
The Earth’s moon is the fifth-largest moon in the solar system.
Results
Statement to classify: “The Moon is the largest moon in our solar system when compared to other moons.”
[answer]: – Debatable
The classification as “Debatable” applies because, while there are records that can provide a general ranking of moon sizes based on available data (option 4), new discoveries or updates could potentially alter this understanding. As such, it’s not definitively true without considering the most current and comprehensive data but also recognizes existing knowledge that supports its claim up to now. Thus, while there is substantial evidence suggesting the Moon may be large relative to many other moons in our solar system (which aligns with common perceptions), stating it as “the largest” might not hold true under all circumstances due to evolving astronomical discoveries and measurements that could challenge this assertion.
Assumptions
Output:
– The Moon is considered Earth’s only natural satellite.
– There are other moons in our solar system besides the Moon.
– Size comparison among moons within our solar system can be established.
– The size ranking of moons (including the Moon) has been determined and documented.
– The Moon plays a significant role in various aspects, such as tides or its influence on life on Earth.
– Information about the geological features of the Moon is available for reference.
– Data exists to support the impact of the Moon on our planet (e.g., scientific studies).
– Audience’s interest and knowledge level in astronomy can be assumed for relevant explanations.
Teacher: – The concept of “largest” can be quantified or compared based on size, volume, or other measurable attributes.
– There is a reference point (Earth’s moon) used to compare the Moon with other moons in our solar system.
– The statement assumes that there are enough data and research available for verifying the role of the Moon in various aspects like tides and life on Earth.
– It also implies an understanding of basic lunar geology, as
Fact Checker Output
Assumptions:
1. The Moon is considered Earth’s only natural satellite. (True) – This assertion holds true; the Moon is indeed the only natural satellite orbiting our planet in a stable manner.
2. There are other moons in our solar system besides the Moon. (True) – This statement is accurate, as there are numerous other moons within our solar system beyond Earth’s single moon.
3. Size comparison among moons within our solar system can be established. (True) – It is possible to establish size comparisons between moons in our solar system using available data on their diameters and volumes.
4. The size ranking of moons (including the Moon) has been determined and documented. (True, with caveats) – While there are records and studies that document sizes, it’s essential to note that new discoveries or updates can lead to changes in rankings over time. However, a general understanding exists based on current knowledge.
5. The Moon plays a significant role in various aspects, such as tides or its influence on life on Earth. (True) – There is substantial evidence supporting the Moon’s impact on Earth’s tides and other potential influences on bi
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
}
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)
# 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:
- True
- False
- Debatable
"""
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(final_output):
final_output = final_output.lower().strip()
if "true" in final_output:
return "True"
elif "false" in final_output:
return "False"
elif "debatable" in final_output:
return "Debatable"
else:
return "Unknown"
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
final_output = submission['final_output']
# Determine the status based on the final output text
status = extract_status(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>{final_output}</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