Status: False
Assertion
The human heart beats around 100,000 times per day.
Results
<|assistant|> – False
This classification is based on the fact that an individual’s heart rate does indeed vary due to various factors such as physical activity levels, age, sex, health status, fitness level, and medication use. These variations are a normal part of human physiology and reflect the body’s response to different stimuli or demands placed upon it.
Assumptions
Solution:
– The heart rate is constant throughout the day and does not fluctuate significantly during different activities or periods (resting, light activity, moderate activity).
– All individuals maintain an average resting heart rate within the range of 72 to 80 beats per minute.
– There are no significant variations in heart rates due to factors such as age, sex, health status, fitness level, or medication use among different people at a given moment.
– The individual is considered “healthy,” meaning their overall wellbeing does not affect the resting heart rate significantly.
– One day consists of 24 hours with no disruptions in sleep or activity that could impact the daily total number of heartbeats.
– Blood circulation efficiency and oxygen/nutrient delivery mechanisms do not vary between individuals, thus supporting a uniform distribution across all cells.
– All waste products are efficiently removed from each cell within an average day without any variations in effectiveness among different people.
– The statement is referring to the heart rate of adults only, excluding children or older populations who may have different resting heart rates due to physiological differences and development stages
Fact Checker Output
<|assistant|> – The heart rate is constant throughout the day and does not fluctuate significantly during different activities or periods (resting, light activity, moderate activity).
False. This assertion is generally incorrect because an individual’s heart rate will naturally increase with physical activity due to increased demand for oxygen and nutrients by muscles. During rest and varying levels of activity, the heart rate fluctuates significantly.
– All individuals maintain an average resting heart rate within the range of 72 to 80 beats per minute.
False. While it’s common for adults to have a resting heart rate in that range, there are individual variations due to factors like age, fitness level, and health status. Some may have rates slightly outside this range.
– There are no significant variations in heart rates due to factors such as age, sex, health status, fitness level, or medication use among different people at a given moment.
False. Heart rate can be significantly influenced by the mentioned factors. For example, athletes may have lower resting heart rates compared to non-athletes, and certain medications can increase or decrease heart rate.
– The
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