Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import os | |
# WARNING: It is not recommended to hardcode sensitive data like API tokens in code. | |
# Consider using environment variables or other secure methods for production applications. | |
API_URL = "https://deployment.datasaur.ai/api/deployment/8/2717/chat/completions" | |
API_TOKEN = os.getenv("DATASAUR_API_TOKEN") | |
def magic_function(input_text): | |
""" | |
Sends text to the Datasaur deployment API and returns the processed text. | |
""" | |
headers = { | |
"Content-Type": "application/json", | |
"Authorization": f"Bearer {API_TOKEN}", | |
} | |
data = { | |
"messages": [{"role": "user", "content": input_text}] | |
} | |
try: | |
response = requests.post(API_URL, headers=headers, json=data) | |
response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx) | |
response_json = response.json() | |
# Extract content from a standard chat completion response structure. | |
# This may need adjustment if the API has a different format. | |
content = response_json.get("choices", [{}])[0].get("message", {}).get("content", "Error: Could not parse response.") | |
return content | |
except requests.exceptions.RequestException as e: | |
return f"API Request Error: {e}" | |
except (ValueError, KeyError, IndexError): | |
# Handle cases where response is not valid JSON or structure is unexpected | |
return f"Error processing API response: {response.text}" | |
def handle_magic_click(current_text): | |
""" | |
When the magic button is clicked, this function gets the improved text, | |
and returns the new and previous text to update the UI. | |
It also makes the "Previous Text" box visible. | |
""" | |
improved_text = magic_function(current_text) | |
return improved_text, current_text, gr.update(visible=True) | |
with gr.Blocks() as demo: | |
gr.Markdown("# Memo Improvement Workflow") | |
with gr.Row(): | |
with gr.Column(scale=4): | |
text_area = gr.Textbox(label="Your Text", lines=20) | |
previous_text_area = gr.Textbox(label="Previous Text", lines=20, visible=False) | |
with gr.Column(scale=1): | |
magic_button = gr.Button("Magic Button") | |
magic_button.click( | |
fn=handle_magic_click, | |
inputs=text_area, | |
outputs=[text_area, previous_text_area, previous_text_area] | |
) | |
if __name__ == "__main__": | |
demo.launch() | |