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 your Clarifai credentials and model details for GPT-4 Vision PAT_GPT4 = '3ca5bd8b0f2244eb8d0e4b2838fc3cf1' USER_ID_GPT4 = 'openai' APP_ID_GPT4 = 'chat-completion' MODEL_ID_GPT4 = 'openai-gpt-4-vision' MODEL_VERSION_ID_GPT4 = '266df29bc09843e0aee9b7bf723c03c2' # Set your Clarifai credentials and model details for DALL-E PAT_DALLE = 'bfdeb4029ef54d23a2e608b0aa4c00e4' USER_ID_DALLE = 'openai' APP_ID_DALLE = 'dall-e' MODEL_ID_DALLE = 'dall-e-3' MODEL_VERSION_ID_DALLE = 'dc9dcb6ee67543cebc0b9a025861b868' # Streamlit app st.title("Smart Crop Adviser") # Inserting logo st.image("https://cdn.tractorkarvan.com/tr:f-webp/images/Blogs/smart-farming-in-india/Smart-Farming-Blog.jpg", width=200) # Choose model type model_type = st.radio("Select Model Type", ["GPT-4 Vision", "DALL-E"]) # Input text prompt from the user raw_text = st.text_input("Enter a text prompt:", 'What time of day is it?') # File upload for image image_upload = st.file_uploader("Upload an image:", type=["jpg", "jpeg", "png"]) # Button to generate result if st.button("Generate Result"): if model_type == "GPT-4 Vision": # Set up gRPC channel for GPT-4 Vision 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 GPT-4 Vision 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 ) # Check if the request was successful for GPT-4 Vision if post_model_outputs_response_gpt4.status.code != status_code_pb2.SUCCESS: st.error(f"GPT-4 Vision API request failed: {post_model_outputs_response_gpt4.status.description}") else: # Get the output for GPT-4 Vision output_gpt4 = post_model_outputs_response_gpt4.outputs[0].data # Display the result for GPT-4 Vision if output_gpt4.HasField("image"): st.image(output_gpt4.image.base64, caption='Generated Image (GPT-4 Vision)', use_column_width=True) elif output_gpt4.HasField("text"): st.text(output_gpt4.text.raw) 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) # Add the beautiful social media icon section st.markdown("""