Status: True
Assertion
The human body produces roughly 25 million new cells each second.
Reasoning
The statement accurately reflects scientific knowledge about human cellular regeneration, highlighting the body’s ability to replace and renew cells for maintaining health and adapting to changes. This process involves different rates of turnover across various cell types, with red blood cells being replaced approximately every seven days due to their limited lifespan.
– True: The statement aligns with established scientific facts about human biology, emphasizing the continuous regeneration and replacement of cells essential for bodily functions and adapting to environmental changes. Red blood cells have a notable turnover rate as they have an average lifespan of around 120 days before being replaced.
– True: The statement is supported by scientific evidence regarding human cellular renewal, underscoring the body’s remarkable ability to replace and regenerate cells for maintaining tissue health, performing daily functions, and adapting to external factors. Red blood cells serve as an example with a turnover rate of approximately 100 billion every seven days due to their finite lifespan.
Assumptions
<|assistant|> – The human body continuously regenerates and replaces its cells at an astonishing rate.
– Average daily cell generation ranges from 20 billion to 30 billion new cells.
– Cellular turnover occurs in various parts of the body, such as skin, blood, bone marrow, and internal organs.
– The body’s natural regenerative capabilities are essential for maintaining overall health and wellbeing.
– Red blood cells have a specific turnover rate: approximately 100 billion replaced every seven days.
– Cellular renewal processes allow the body to carry out vital functions, repair damage caused by injury or disease, and adapt to new conditions as needed.
– Different types of cells may have varying rates of cell production due to factors such as stress, age, environmental exposure, and other influences.
Fact Checker Output
<|assistant|> 1. True – The human body does continuously regenerate and replace its cells at an impressive rate. This constant cell renewal allows for the maintenance of tissue health and function.
2. True – On average, about 20 to 30 billion new cells are generated daily in the human body as part of the natural process of cellular turnover.
3. True – Cellular turnover occurs throughout various parts of the body including skin (for renewing outer layers), blood (red and white blood cells have different lifespans), bone marrow (where new blood cells are produced), and internal organs, each with their specific rates of cell replacement.
4. True – The natural regenerative capabilities of the human body are crucial for overall health and wellbeing since they allow for tissue repair, adaptation to environmental changes, and maintenance of organ function.
5. True – Red blood cells have a turnover rate where about 100 billion are replaced every seven days. This high turnover is necessary due to red blood cells’ limited lifespan of around 120 days.
6. True – Cellular renewal processes enable the body to perform essential functions,
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
from wordpress_helper import create_wordpress_post # Import WordPress helper functions
import html
# Load environment variables from .env file
load_dotenv()
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):
llm = OpenAI(temperature=0.7, model=os.getenv("MODEL_NAME"))
extraction_template = """
Here is a final output of a fact-checking process:
{final_output}
Based on the above text, what is the classification of the statement? Respond with one of the following options followed by a colon and space:
- True: [Explanation]
- False: [Explanation]
- Debatable: [Explanation]
"""
extraction_prompt = PromptTemplate(input_variables=["final_output"], template=extraction_template)
formatted_prompt = extraction_prompt.format_prompt(final_output=final_output).text
extraction_output = llm.invoke(formatted_prompt).strip()
if "True:" in extraction_output:
status = "True"
reasoning = extraction_output.split("True:", 1)[1].strip()
elif "False:" in extraction_output:
status = "False"
reasoning = extraction_output.split("False:", 1)[1].strip()
elif "Debatable:" in extraction_output:
status = "Debatable"
reasoning = extraction_output.split("Debatable:", 1)[1].strip()
else:
status = "Unknown"
reasoning = extraction_output
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)
# Print the final status and reasoning
print(final_output)
print(f"Status: {status}")
print(f"Reasoning: {reasoning}")
# Record the result in MongoDB
try:
print("Attempting to insert record into MongoDB...")
insert_record(
script_name=__file__,
script_code=html.escape(open(__file__).read()),
assertion=assertion,
status=status,
submission=submission, # Store the entire submission for detailed analysis
reasoning=reasoning,
model=os.getenv("MODEL_NAME")
)
print("Record inserted into MongoDB successfully.")
except Exception as e:
print(f"Failed to insert record into MongoDB: {e}")
# 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>Reasoning</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