Status: True
Assertion
Genetically modified foods are harmful to human health.
Results
The speaker has knowledge about genetically modified foods and their safety, as they refer to the scientific consensus on GM foods’ safety. They mention that “a large majority of scientists” have found them safe for consumption after rigorous testing, indicating familiarity with the topic. Genetic modification is recognized as a process involving alteration of an organism’s DNA, which in this context pertains to plants used in agriculture. The statement acknowledges differing opinions on genetically modified foods, recognizing that while most scientific evidence supports their safety, there are still some people who believe otherwise. This indicates the speaker is aware of various perspectives and concerns surrounding GM foods. Lastly, by referring to “studies”, it implies the speaker believes credible sources exist for evidence-based information on this topic.
True: The statement accurately reflects an understanding of genetically modified foods (GMOs) and their safety based on scientific consensus; recognizes the process of genetic modification in crops; acknowledges differing opinions on GM foods’ safety, indicating awareness of varying perspectives; and implies reliance on credible
Assumptions
Here are some possible assumptions:
– The speaker has knowledge about genetically modified foods and their safety.
– Scientific consensus refers to a large majority of studies supporting GM foods’ safety for consumption.
– Genetic modification is a process that involves altering an organism’s DNA, which can be applied to plants for various purposes like improving yield or resistance to pests.
– The statement acknowledges the existence of differing opinions and concerns regarding genetically modified foods.
– It assumes that there are credible sources available to provide evidence-based information on this topic.
– Regulatory bodies play a role in ensuring the safety of GM foods before they reach consumers.
– The speaker believes it’s essential for individuals to critically evaluate claims about genetically modified foods rather than accepting them without questioning their validity.
– Genetically modified foods have been subjected to testing and scrutiny, similar to other new technologies or products introduced into the market.
These assumptions help support the statement by providing a foundation for understanding the context in which it is made and how various elements contribute to its meaning.
Fact Checker Output
<|assistant|> – True: The speaker has knowledge about genetically modified foods and their safety. This can be inferred from the fact that they are making a statement regarding GM foods’ safety based on scientific consensus, which indicates familiarity with the topic.
– True: Scientific consensus refers to a large majority of studies supporting GM foods’ safety for consumption. The speaker mentions “a large majority of scientists” and their findings, suggesting that there is indeed a scientific consensus regarding this matter.
– True: Genetic modification is a process that involves altering an organism’s DNA, which can be applied to plants for various purposes like improving yield or resistance to pests. This is a well-known fact about genetically modified foods and their purpose in agricultural practices.
– True: The statement acknowledges the existence of differing opinions and concerns regarding genetically modified foods. The phrase “There are some people who believe” indicates that there’s recognition of varying perspectives on this topic.
– True: It assumes that there are credible sources available to provide evidence-based information on this topic. By referring to scientific studies, the speaker implies the existence of reliable
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