fact-checker / app.py
shikharyashmaurya's picture
Update app.py
6e14f1e verified
# import streamlit as st
# import google.generativeai as genai
# import ast
# import time
# import re
# def extract_python_code(text):
# pattern = r"```python\n(.*?)```"
# match = re.search(pattern, text, re.DOTALL)
# if match:
# return match.group(1).strip()
# else:
# return None
# import os
# secret_key = os.getenv("SECRET_KEY")
# genai.configure(api_key=secret_key)
# def get_gemini_response(input):
# prompt2='''you are an fact checker,you will get an text.
# you will respond with two thing-
# 1.true false or unsure(if you are unsure)
# 2.evidence in support
# you will respond in this format -
# ['true','false','unsure'],['evidence','other']
# example-'google company founded in 2024'
# response-['false','Google was officially launched in 1998']
# Now give response in the exact described format of the following text - '''
# old=prompt2+input
# model = genai.GenerativeModel('gemini-1.5-flash')
# response1 = model.generate_content(old)
# return response1.text
# st.title("Fact Checker")
# text=st.text_input('paste the text to fact check.Ask facts before that of 2021')
# prompt1='''impoprtant - give answer only in python list format.
# you will get an long paragraph of text.
# But the long text is diffcult to fact check in google.
# Your work is to break down the long text into small pieces so that it can be checked independently.
# You will break down texts into list elements.
# example-'india got independence in 1947 its first prime minister was nehru'.
# response-['india got independence in 1947','india first prime minister was nehru']
# impoprtant - give answer only in python list format
# Now you will give me a response of the given following text in the described format as a python list- '''
# if text:
# new=prompt1+text
# model=genai.GenerativeModel('gemini-1.5-flash')
# response=model.generate_content(new)
# a=response.text
# b=extract_python_code(a)
# try:
# my_list = ast.literal_eval(b)
# except:
# my_list=''
# st.warning('rerun code')
# if isinstance(my_list,list):
# for i in my_list:
# c=get_gemini_response(i)
# st.write(i)
# st.write(c)
# time.sleep(2)
# else:
# st.warning('rerun code')
import streamlit as st
import ast
import time
import re
import os
from groq import Groq
# Helper to extract Python code block
def extract_python_code(text):
pattern = r"```python\n(.*?)```"
match = re.search(pattern, text, re.DOTALL)
if match:
return match.group(1).strip()
else:
return None
# Configure Groq
api_key = os.getenv("SECRET_KEY")
client = Groq(api_key=api_key)
# Function to call Groq API
def query_groq(prompt, model_name="gemma2-9b-it"):
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": prompt}],
model=model_name
)
return chat_completion.choices[0].message.content
# Fact checking logic
def get_fact_check_response(input_text):
prompt2 = '''you are a fact checker, you will get a text.
you will respond with two things:
1. true, false, or unsure (if you are unsure)
2. evidence in support
You will respond in this format:
['true','false','unsure'],['evidence','other']
Example:
Input: 'google company founded in 2024'
Response: ['false','Google was officially launched in 1998']
Now give response in the exact described format of the following text - '''
full_prompt = prompt2 + input_text
return query_groq(full_prompt)
# Splitting paragraph into small factual units
def split_into_facts(paragraph):
prompt1 = '''important - give answer only in python list format.
you will get a long paragraph of text.
But the long text is difficult to fact check in google.
Your work is to break down the long text into small pieces so that it can be checked independently.
You will break down text into a large number of list elements.
Example:
Input: 'india got independence in 1947 its first prime minister was nehru'
Response: ['india got independence in 1947','india first prime minister was nehru']
important - give answer only in python list format
Now you will give me a response of the given following text in the described format as a python list - '''
full_prompt = prompt1 + paragraph
return query_groq(full_prompt)
# Streamlit UI
st.title("Fact Checker using Groq")
text = st.text_input('Paste the text to fact-check (ask facts before 2021)')
if text:
response = split_into_facts(text)
code_block = extract_python_code(response)
try:
fact_list = ast.literal_eval(code_block)
except:
fact_list = ''
st.warning('⚠️ Could not parse list. Try rerunning.')
if isinstance(fact_list, list):
for fact in fact_list:
result = get_fact_check_response(fact)
st.write(f"**Fact:** {fact}")
st.write(result)
time.sleep(2)
else:
st.warning('⚠️ Invalid response format. Try rerunning.')