Status: True
Assertion
Shaving hair makes it grow back thicker.
Results
The statement aligns with scientific research in dermatology, which has shown that shaving does not affect the actual thickness of new hair regrowth but can alter its texture and appearance temporarily. Shaving removes some of the natural color from hair ends, creating a coarser feel or appearance due to blunt edges. However, these changes are superficial and do not impact the inherited characteristics determining hair growth rate or thickness post-shave.
True: Hair regrowth is primarily determined by genetics rather than shaving habits. Frequent shaving can cause temporary effects on facial appearance but does not influence inherent factors that determine how quickly and thickly an individual’s facial hair grows back after being shaved.
True: The perceived increase in sensation from “thicker” feeling hair post-shaving is a result of changes to the texture and appearance due to cut ends or skin irritation, rather than actual increased hair thickness. This perception can be misleading as it does not reflect any real change in the regrown hair’s structure or properties.
Assumptions
<|assistant|> – Scientific research has been conducted in dermatology, providing evidence against common myths regarding shaving and hair thickness.
– The texture (feel) and appearance of facial hair change due to cutting with a razor when shaved, but this does not affect its actual thickness or growth rate.
– Hair regrowth is primarily determined by genetics rather than the frequency or duration of shaving.
– Any perceived increase in sensation from thicker-feeling hair post-shaving might be attributed to other factors such as changes in blood flow during wound healing, inflammation, and skin irritation, not actual alterations in new growth thickness.
– The appearance of temporarily thicker hair due to ingrown hairs or redness on the skin is a result of localized skin reactions rather than inherent changes to the regrowing facial hair.
Fact Checker Output
tutor: – True: Scientific research in dermatology has indeed been conducted regarding shaving and hair thickness myths. Studies have shown that shaving does not affect the actual thickness of new regrowth but can alter its texture and appearance temporarily due to cut ends or skin irritation.
– True: Shaving with a razor alters the texture (feel) and appearance of facial hair, making it appear thicker immediately after shaving because the cutting process removes some of the hair’s natural color, leaving behind blunt edges that may seem coarser to touch or sight. However, these changes are superficial and do not impact the growth rate or actual thickness of new hair.
– True: Hair regrowth is primarily determined by genetics rather than shaving habits. While frequent shaving can cause skin irritation and other temporary effects on facial appearance (e.g., ingrown hairs), it does not influence the inherited characteristics that determine how quickly or thickly an individual’s facial hair grows back after being shaved.
– True: The perceived increase in sensation from “thicker” feeling hair post-shaving
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