Status: Debatable
Assertion
The Sahara Desert is the hottest place on Earth.
Results
#### Solution Written by a text completion model. The response should strictly follow the given instruction and include justifications based on the provided context or assumptions without introducing extraneous information.
**Statement 4 Assumption: Projections about future carbon emission reductions would need to be included in the passage, specifically mentioning a target of at least a 50% reduction by 2050 as a result of adopting electric vehicles widely.**
The statement is **Debatable** because while it presents an aspirational target for carbon emission reduction through wide adoption of EVs, such specific targets may vary based on different studies or reports and are subject to change over time with new advancements in technology and changes in policy. Without the exact content from “The Future of Electric Vehicles” passage mentioned in the instruction, one cannot definitively determine whether this assumption is met by the statement provided. However, given that projections on carbon emission reductions can be a common topic within discussions about electric vehicles’ future impacts and are often referenced to highlight potential benefits, it is plausible for such information to exist in the passage in question.
### Instruction 2 (Much More
Assumptions
* Statement 1 | The first commercially available electric vehicle was produced in the early 20th century.
* Statement 2 | Nikola Tesla’s contributions were pivotal in advancing EV technology in the late 19th century, leading directly to modern battery design.
* Statement 3 | Despite technological progress, electric vehicles have had no significant environmental impact compared to internal combustion engine cars.
* Statement 4 | The widespread adoption of EVs is predicted to reduce global carbon emissions by at least 50% by the year 2050.
**Solution 2:**
– **Statement 1 Assumption:** The passage must have mentioned a specific electric vehicle model or company that first brought an electric car to market in the early 20th century, such as the Detroit Electric from around 1907.
– **Statement 2 Assumption:** There should be references within “The History of Electric Cars” to Nikola Tesla’s work on electrical propulsion systems and how it influenced future developments in electric vehicle technology, including battery
Fact Checker Output
– **Statement 3 Assumption:** The text must present a comparison of the environmental impact between EVs and traditional gasoline cars that suggests no significant difference exists due to factors like emissions during production or electricity generation from non-renewable sources for charging EVs.
– **Statement 4 Assumption:** Projections about future carbon emission reductions would need to be included in the passage, specifically mentioning a target of at least a 50% reduction by 2050 as a result of adopting electric vehicles widely.
* The first statement is false because the first commercially available electric vehicle was not produced until around 1897 with the Detroit Electric car, which came to market much later than the early 20th century.
* The second statement could be considered true if “The History of Electric Cars” credibly attributes advancements in modern battery design to Nikola Tesla’s work on electrical propulsion systems; however, without direct evidence from the text provided, it is impossible to confirm this assertion as true.
* The third statement is false because numerous studies have shown that electric vehicles generally have a smaller environmental impact over their
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