Spaces:
Runtime error
Runtime error
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 | |
# Set your Clarifai credentials for Text-to-Speech (TTS) | |
PAT_TTS = 'bfdeb4029ef54d23a2e608b0aa4c00e4' | |
USER_ID_TTS = 'openai' | |
APP_ID_TTS = 'tts' | |
MODEL_ID_TTS = 'openai-tts-1' | |
MODEL_VERSION_ID_TTS = 'fff6ce1fd487457da95b79241ac6f02d' | |
# Set up gRPC channel for Text-to-Speech (TTS) | |
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("Smart Crop Advisor") | |
# Inserting logo | |
st.image("data:image/png;base64,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", width=200) | |
# Function to get gRPC channel for Text-to-Speech (TTS) | |
def get_tts_channel(): | |
channel_tts = ClarifaiChannel.get_grpc_channel() | |
return channel_tts, channel_tts.metadata | |
# User input | |
model_type = st.selectbox("Select Model", ["GPT-4 Vision", "DALL-E", "Text-to-Speech (TTS)"]) | |
raw_text = st.text_area("Enter Text") | |
image_upload = st.file_uploader("Upload 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 # Use metadata directly in the gRPC request | |
) | |
# 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"): | |
# 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"Text-to-Speech (TTS) 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 == "Text-to-Speech (TTS)": | |
# Set up gRPC channel for Text-to-Speech (TTS) | |
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 Text-to-Speech (TTS) | |
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 Text-to-Speech (TTS) | |
if post_model_outputs_response_tts.status.code != status_code_pb2.SUCCESS: | |
st.error(f"Text-to-Speech (TTS) API request failed: {post_model_outputs_response_tts.status.description}") | |
else: | |
# Get the output for Text-to-Speech (TTS) | |
output_tts = post_model_outputs_response_tts.outputs[0].data | |
# Display the result for Text-to-Speech (TTS) | |
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(""" | |
<div align="center"> | |
<a href="https://github.com/pyresearch/pyresearch" style="text-decoration:none;"> | |
<img src="https://user-images.githubusercontent.com/34125851/226594737-c21e2dda-9cc6-42ef-b4e7-a685fea4a21d.png" width="2%" alt="" /></a> | |
<img src="https://user-images.githubusercontent.com/34125851/226595799-160b0da3-c9e0-4562-8544-5f20460f7cc9.png" width="2%" alt="" /> | |
<a href="https://www.linkedin.com/company/pyresearch/" style="text-decoration:none;"> | |
<img src="https://user-images.githubusercontent.com/34125851/226596446-746ffdd0-a47e-4452-84e3-bf11ec2aa26a.png" width="2%" alt="" /></a> | |
<img src="https://user-images.githubusercontent.com/34125851/226595799-160b0da3-c9e0-4562-8544-5f20460f7cc9.png" width="2%" alt="" /> | |
<a href="https://twitter.com/Noorkhokhar10" style="text-decoration:none;"> | |
<img src="https://user-images.githubusercontent.com/34125851/226599162-9b11194e-4998-440a-ba94-c8a5e1cdc676.png" width="2%" alt="" /></a> | |
<img src="https://user-images.githubusercontent.com/34125851/226595799-160b0da3-c9e0-4562-8544-5f20460f7cc9.png" width="2%" alt="" /> | |
<a href="https://www.youtube.com/@Pyresearch" style="text-decoration:none;"> | |
<img src="https://user-images.githubusercontent.com/34125851/226599904-7d5cc5c0-89d2-4d1e-891e-19bee1951744.png" width="2%" alt="" /></a> | |
<img src="https://user-images.githubusercontent.com/34125851/226595799-160b0da3-c9e0-4562-8544-5f20460f7cc9.png" width="2%" alt="" /> | |
<a href="https://www.facebook.com/Pyresearch" style="text-decoration:none;"> | |
<img src="https://user-images.githubusercontent.com/34125851/226600380-a87a9142-e8e0-4ec9-bf2c-dd6e9da2f05a.png" width="2%" alt="" /></a> | |
<img src="https://user-images.githubusercontent.com/34125851/226595799-160b0da3-c9e0-4562-8544-5f20460f7cc9.png" width="2%" alt="" /> | |
<a href="https://www.instagram.com/pyresearch/" style="text-decoration:none;"> | |
<img src="https://user-images.githubusercontent.com/34125851/226601355-ffe0b597-9840-4e10-bbef-43d6c74b5a9e.png" width="2%" alt="" /></a> | |
</div> | |
<hr> | |
""", unsafe_allow_html=True) |