Status: Unknown
Assertion
Eating spicy food can cause ulcers.
Results
Response: 1. True : The belief about eating spicy food leading to ulcers is not directly supported by scientific evidence as a cause for ulcers, but it can cause discomfort or heartburn in some individuals due to irritation of the stomach lining; however, this differs from causing peptic ulcers which are primarily caused by H. pylori infection and NSAIDs use. 2. True : Spicy food may indeed cause discomfort or heartburn in certain people when consumed due to irritation of the stomach lining but it is not a direct causative factor for ulcers; however, this is distinct from peptic ulcer causes such as H. pylori and NSAIDs use which are well-established. 3. True : Helicobacter pylori infection and the usage of nonsteroidal anti-inflammatory drugs (NSAIDs) are confirmed primary factors leading to peptic ulcers, as documented by extensive medical research. 4. True : Sensitivity to spicy food varies among individuals, making it an individual’s subjective experience and not a direct
Assumptions
<|assistant|> – The belief about eating spicy food leading to ulcers is widespread but not supported by direct causation evidence.
– Spicy food may cause discomfort or heartburn in some individuals due to irritation, but this does not equate to developing ulcers.
– H. pylori bacteria and NSAIDs are recognized as the primary causes of peptic ulcers.
– Individual sensitivity to spicy food may vary; what is uncomfortable for some might be tolerable by others.
– Medical understanding on this topic continues to evolve, so recommendations can change with new research findings.
– Balanced diet considerations should take into account individual health needs and potential sensitivities rather than focusing solely on the presence of spicy foods.
Fact Checker Output
[output]: 1. True – The belief about eating spicy food leading to ulcers is not directly supported by scientific evidence as a cause for ulcers. Peptic ulcers are more commonly caused by H. pylori bacteria and the use of NSAIDs, although some individuals might experience discomfort after consuming spicy food due to irritation or heartburn.
2. True – Spicy food may indeed cause discomfort or heartburn in certain people when consumed because it can lead to irritation of the stomach lining. However, this is not equivalent to causing ulcers, which are generally caused by other factors such as H. pylori bacteria and NSAIDs.
3. True – It is well-established that Helicobacter pylori (H. pylori) infection and the use of nonsteroidal anti-inflammatous drugs (NSAIDs) are primary causes for peptic ulcers. These two factors have been extensively documented through medical research.
4. True – The sensitivity to spicy food varies among individuals, making it a subjective experience rather
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