Status: True
Assertion
Science has done more harm than good.
Results
The statement can be considered true based on three key points. Firstly, harm caused by scientific pursuits is indeed defined in various forms, including physical and emotional distress as well as environmental damage (1). Secondly, there are arguments that prioritize short-term negative impacts over potential long-term benefits due to uncertainties surrounding future outcomes (2). Lastly, the concern about the misuse of scientific discoveries for harmful purposes is a valid one and acknowledges the responsibility in managing knowledge advancements responsibly (3).
However, it’s essential to note that this classification doesn’t mean all scientific pursuits are inherently harmful. The potential for negative outcomes should be carefully managed while also considering the significant benefits science has brought to society over time. Therefore, although the statement can be classified as true based on these points, one could argue its broader implications and nuances make it debatable in some aspects (Debatable: Some may believe that not all scientific advancements lead to harm or prioritize short-term negative impacts).
So, taking both sides into account, the statement can be classified as follows: True: [
Assumptions
– Assumptions for “A. True”:
– Defining what constitutes “harm” in this context (e.g., physical harm, emotional distress, environmental damage).
– Prioritizing immediate and direct negative impacts over long-term benefits and advancements brought by science.
– Accepting that the potential for misuse or unintended consequences of scientific discoveries outweigh their positive contributions to society.
– Overlooking or undervaluing the role science has played in solving global challenges, such as diseases, hunger, and climate change.
– Assumptions for “B. False”:
– Defining what constitutes “good” in this context (e.g., improvements to human welfare, technological advancements, increased knowledge).
– Prioritizing the overall positive impact of science on society over its potential negative consequences.
– Recognizing that while some scientific discoveries may have led to harmful outcomes, they do not negate or undermine the broad benefits brought by science throughout history.
– Acknowledging humanity’s ability to learn from past mistakes and make ethical dec
Fact Checker Output
<|assistant|> – Assumptions for “A. True”:
1. Defining what constitutes “harm” in this context: True. Harm can indeed be defined as physical harm, emotional distress, and environmental damage among other negative impacts caused by scientific activities or discoveries. This is because science can sometimes lead to outcomes that negatively affect individuals’ health, mental well-bemunition, or the planet itself.
2. Prioritizing immediate and direct negative impacts over long-term benefits: True. Some assertions may argue this based on a risk-averse perspective, where short-term harm is prioritized to avoid potential long-term consequences that are uncertain but could have significant positive outcomes. However, this viewpoint can be subjective and varies depending on one’s values or beliefs about progress.
3. Accepting the potential for misuse of scientific discoveries: True. Scientific advancements can indeed lead to unintended negative consequences if they are used inappropriately, such as weapons development from research meant for peaceful purposes (e.g., nuclear physics). It’s a valid concern that underscores the importance of eth
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