Status: True
Assertion
Deserts are always hot.
Results
Answer: Debatable
AI>
Debatable
The classification of the statement as “True” or “False” heavily depends on specific details that are not provided in your query. Each point raised requires information about the individual’s employment agreement, any legal constraints present (like non-compete clauses), and potential external commitments. Without these details, it is impossible to definitively classify the statement as true or false; thus, it remains debatable until further context is provided.
Assumptions
# Answer
To support the statement “He will leave his job before 2 months,” the following assumptions can be made:
– The individual’s employment contract or agreement does not stipulate a minimum tenure period, allowing for early departure without penalty.
– There are no legal constraints preventing the person from leaving their current position within the specified timeframe (e.g., non-compete clauses).
– There is an absence of binding commitments to other companies or projects that would require the individual’s presence beyond 2 months.
– The person does not have any personal obligations, such as family responsibilities or health conditions, that are likely to occur within this period and could interfere with their ability to work.
– There are no foreseeable events (such as layoffs or company restructuring) expected to happen in the near future at the current employer’s location that would necessitate remaining employed beyond 2 months.
– The person has sufficient financial reserves, savings, or another source of income to support themselves without needing immediate employment after leaving their job within the next two months.
These assumptions are hypothetical
Fact Checker Output
Response: 1. The individual’s employment contract or agreement does not stipulate a minimum tenure period, allowing for early departure without penalty. – True/False: This statement can be either true or false depending on the specific terms of the person’s employment contract. If their contract indeed has no clause requiring them to remain with the company for at least 2 months before leaving, then this assumption would be true. However, if there is a minimum tenure requirement in place, it would be false.
2. There are no legal constraints preventing the person from leaving their current position within the specified timeframe (e.g., non-compete clauses). – True/False: This statement can also vary based on the individual’s employment agreement or contract with their company. If there aren’t any such clauses restricting early departure, it would be true; if there are, then this assumption is false.
3. There is an absence of binding commitments to other companies or projects that require the person’s presence beyond 2 months. – True/False: This statement can change based on whether the individual has any external obligations such as contractual work or personal relationships (e.
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
}
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)
# 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:
- True
- False
- Debatable
"""
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(final_output):
final_output = final_output.lower().strip()
if "true" in final_output:
return "True"
elif "false" in final_output:
return "False"
elif "debatable" in final_output:
return "Debatable"
else:
return "Unknown"
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
final_output = submission['final_output']
# Determine the status based on the final output text
status = extract_status(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>{final_output}</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