import streamlit as st from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel from clarifai_grpc.grpc.api import resources_pb2, service_pb2, service_pb2_grpc from clarifai_grpc.grpc.api.status import status_code_pb2 import torch from transformers import AutoModelForCausalLM, AutoTokenizer # GPT-4 credentials PAT_GPT4 = "3ca5bd8b0f2244eb8d0e4b2838fc3cf1" USER_ID_GPT4 = "openai" APP_ID_GPT4 = "chat-completion" MODEL_ID_GPT4 = "openai-gpt-4-vision" MODEL_VERSION_ID_GPT4 = "266df29bc09843e0aee9b7bf723c03c2" # DALL-E credentials PAT_DALLE = "bfdeb4029ef54d23a2e608b0aa4c00e4" USER_ID_DALLE = "openai" APP_ID_DALLE = "dall-e" MODEL_ID_DALLE = "dall-e-3" MODEL_VERSION_ID_DALLE = "dc9dcb6ee67543cebc0b9a025861b868" # TTS credentials PAT_TTS = "bfdeb4029ef54d23a2e608b0aa4c00e4" USER_ID_TTS = "openai" APP_ID_TTS = "tts" MODEL_ID_TTS = "openai-tts-1" MODEL_VERSION_ID_TTS = "fff6ce1fd487457da95b79241ac6f02d" # NewsGuardian model credentials PAT_NEWSGUARDIAN = "your_news_guardian_pat" USER_ID_NEWSGUARDIAN = "your_user_id" APP_ID_NEWSGUARDIAN = "your_app_id" MODEL_ID_NEWSGUARDIAN = "your_model_id" MODEL_VERSION_ID_NEWSGUARDIAN = "your_model_version_id" # import streamlit as st from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel from clarifai_grpc.grpc.api import resources_pb2, service_pb2, service_pb2_grpc from clarifai_grpc.grpc.api.status import status_code_pb2 # Set up gRPC channel for NewsGuardian model channel_tts = ClarifaiChannel.get_grpc_channel() stub_tts = service_pb2_grpc.V2Stub(channel_tts) metadata_tts = (('authorization', 'Key ' + PAT_TTS),) userDataObject_tts = resources_pb2.UserAppIDSet(user_id=USER_ID_TTS, app_id=APP_ID_TTS,) # Streamlit app st.title("Fake-news-facts") # Inserting logo st.image("https://am.africanewschannel.org/wp-content/uploads/2021/08/000-Fake-News.jpg") # Function to get gRPC channel for NewsGuardian model def get_tts_channel(): channel_tts = ClarifaiChannel.get_grpc_channel() return channel_tts, channel_tts.metadata # User input model_type = st.selectbox("Select Model", ["NewsGuardian model","NewsGuardian model"]) raw_text = st.text_area("This news is real or fake?") image_upload = st.file_uploader("Upload Image", type=["jpg", "jpeg", "png"]) # Button to generate result if st.button("NewsGuardian News Result"): if model_type == "NewsGuardian model": # Set up gRPC channel for NewsGuardian model channel_gpt4 = ClarifaiChannel.get_grpc_channel() stub_gpt4 = service_pb2_grpc.V2Stub(channel_gpt4) metadata_gpt4 = (('authorization', 'Key ' + PAT_GPT4),) userDataObject_gpt4 = resources_pb2.UserAppIDSet(user_id=USER_ID_GPT4, app_id=APP_ID_GPT4) # Prepare the request for NewsGuardian model input_data_gpt4 = resources_pb2.Data() if raw_text: input_data_gpt4.text.raw = raw_text if image_upload is not None: image_bytes_gpt4 = image_upload.read() input_data_gpt4.image.base64 = image_bytes_gpt4 post_model_outputs_response_gpt4 = stub_gpt4.PostModelOutputs( service_pb2.PostModelOutputsRequest( user_app_id=userDataObject_gpt4, model_id=MODEL_ID_GPT4, version_id=MODEL_VERSION_ID_GPT4, inputs=[resources_pb2.Input(data=input_data_gpt4)] ), metadata=metadata_gpt4 # Use metadata directly in the gRPC request ) # Check if the request was successful for NewsGuardian model if post_model_outputs_response_gpt4.status.code != status_code_pb2.SUCCESS: st.error(f"NewsGuardian model API request failed: {post_model_outputs_response_gpt4.status.description}") else: # Get the output for NewsGuardian model output_gpt4 = post_model_outputs_response_gpt4.outputs[0].data # Display the result for NewsGuardian model if output_gpt4.HasField("image"): st.image(output_gpt4.image.base64, caption='Generated Image (NewsGuardian model)', use_column_width=True) elif output_gpt4.HasField("text"): # Display the text result st.text(output_gpt4.text.raw) # Convert text to speech and play the audio stub_tts = service_pb2_grpc.V2Stub(channel_gpt4) # Use the same channel for TTS tts_input_data = resources_pb2.Data() tts_input_data.text.raw = output_gpt4.text.raw tts_response = stub_tts.PostModelOutputs( service_pb2.PostModelOutputsRequest( user_app_id=userDataObject_tts, model_id=MODEL_ID_TTS, version_id=MODEL_VERSION_ID_TTS, inputs=[resources_pb2.Input(data=tts_input_data)] ), metadata=metadata_gpt4 # Use the same metadata for TTS ) # Check if the TTS request was successful if tts_response.status.code == status_code_pb2.SUCCESS: tts_output = tts_response.outputs[0].data st.audio(tts_output.audio.base64, format='audio/wav') else: st.error(f"NewsGuardian model API request failed: {tts_response.status.description}") elif model_type == "DALL-E": # Set up gRPC channel for DALL-E channel_dalle = ClarifaiChannel.get_grpc_channel() stub_dalle = service_pb2_grpc.V2Stub(channel_dalle) metadata_dalle = (('authorization', 'Key ' + PAT_DALLE),) userDataObject_dalle = resources_pb2.UserAppIDSet(user_id=USER_ID_DALLE, app_id=APP_ID_DALLE) # Prepare the request for DALL-E input_data_dalle = resources_pb2.Data() if raw_text: input_data_dalle.text.raw = raw_text post_model_outputs_response_dalle = stub_dalle.PostModelOutputs( service_pb2.PostModelOutputsRequest( user_app_id=userDataObject_dalle, model_id=MODEL_ID_DALLE, version_id=MODEL_VERSION_ID_DALLE, inputs=[resources_pb2.Input(data=input_data_dalle)] ), metadata=metadata_dalle ) # Check if the request was successful for DALL-E if post_model_outputs_response_dalle.status.code != status_code_pb2.SUCCESS: st.error(f"DALL-E API request failed: {post_model_outputs_response_dalle.status.description}") else: # Get the output for DALL-E output_dalle = post_model_outputs_response_dalle.outputs[0].data # Display the result for DALL-E if output_dalle.HasField("image"): st.image(output_dalle.image.base64, caption='Generated Image (DALL-E)', use_column_width=True) elif output_dalle.HasField("text"): st.text(output_dalle.text.raw) elif model_type == "NewsGuardian model": # Set up gRPC channel for NewsGuardian model channel_tts = ClarifaiChannel.get_grpc_channel() stub_tts = service_pb2_grpc.V2Stub(channel_tts) metadata_tts = (('authorization', 'Key ' + PAT_TTS),) userDataObject_tts = resources_pb2.UserAppIDSet(user_id=USER_ID_TTS, app_id=APP_ID_TTS) # Prepare the request for NewsGuardian model input_data_tts = resources_pb2.Data() if raw_text: input_data_tts.text.raw = raw_text post_model_outputs_response_tts = stub_tts.PostModelOutputs( service_pb2.PostModelOutputsRequest( user_app_id=userDataObject_tts, model_id=MODEL_ID_TTS, version_id=MODEL_VERSION_ID_TTS, inputs=[resources_pb2.Input(data=input_data_tts)] ), metadata=metadata_tts ) # Check if the request was successful for NewsGuardian model if post_model_outputs_response_tts.status.code != status_code_pb2.SUCCESS: st.error(f"NewsGuardian model API request failed: {post_model_outputs_response_tts.status.description}") else: # Get the output for NewsGuardian model output_tts = post_model_outputs_response_tts.outputs[0].data # Display the result for NewsGuardian model if output_tts.HasField("text"): st.text(output_tts.text.raw) if output_tts.HasField("audio"): st.audio(output_tts.audio.base64, format='audio/wav') # Add the beautiful social media icon section st.markdown("""

""", unsafe_allow_html=True)