Spaces:
Build error
Build error
| import streamlit as st | |
| import requests | |
| import json | |
| from PIL import Image | |
| from io import BytesIO | |
| def create_template(name, image_url, category, prompt): | |
| url = "https://ai-agent-backend-v50m.onrender.com/api/v1/templates/" | |
| payload = { | |
| "name": name, | |
| "image": image_url, | |
| "category": category, | |
| "prompt": prompt | |
| } | |
| headers = { | |
| "Content-Type": "application/json" | |
| } | |
| response = requests.post(url, json=payload, headers=headers) | |
| if response.status_code == 200: | |
| return response.json() | |
| elif response.status_code == 404: | |
| return "Not found" | |
| elif response.status_code == 422: | |
| return response.json() | |
| else: | |
| return f"Unexpected error: {response.status_code}" | |
| def get_templates(skip=0, limit=10): | |
| url = f"https://ai-agent-backend-v50m.onrender.com/api/v1/templates/?skip={skip}&limit={limit}" | |
| try: | |
| response = requests.get(url) | |
| if response.status_code == 200: | |
| return response.json() | |
| else: | |
| return f"Error fetching templates: {response.status_code}" | |
| except requests.RequestException as e: | |
| return f"Request failed: {str(e)}" | |
| def display_image_from_url(image_url): | |
| try: | |
| response = requests.get(image_url) | |
| if response.status_code == 200: | |
| image = Image.open(BytesIO(response.content)) | |
| st.image(image, caption="Template Image", use_column_width=True) | |
| else: | |
| st.error(f"Failed to load image from URL: {image_url}") | |
| except Exception as e: | |
| st.error(f"Error displaying image: {str(e)}") | |
| st.title("AI Agent Template Creator") | |
| # Create tabs for different functionalities | |
| tab1, tab2 = st.tabs(["Create Template", "View Templates"]) | |
| with tab1: | |
| st.header("Create New Template") | |
| name = st.text_input("Name") | |
| image_url = st.text_input("Image URL") | |
| category = st.text_input("Category") | |
| prompt = st.text_area("Prompt") | |
| if st.button("Create Template"): | |
| if name and image_url and category and prompt: | |
| result = create_template(name, image_url, category, prompt) | |
| st.json(result) | |
| else: | |
| st.error("Please fill in all fields including the image URL.") | |
| if image_url: | |
| display_image_from_url(image_url) | |
| with tab2: | |
| st.header("Existing Templates") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| skip = st.number_input("Skip", min_value=0, value=0, step=10) | |
| with col2: | |
| limit = st.number_input("Limit", min_value=1, value=10, max_value=100, step=5) | |
| if st.button("Fetch Templates"): | |
| templates = get_templates(skip=skip, limit=limit) | |
| if isinstance(templates, list): | |
| st.write(f"Showing templates {skip+1}-{skip+len(templates)}") | |
| for template in templates: | |
| with st.expander(f"Template: {template.get('name', 'Unnamed')}"): | |
| st.write(f"Category: {template.get('category', 'N/A')}") | |
| st.write(f"Prompt: {template.get('prompt', 'N/A')}") | |
| if template.get('image'): | |
| display_image_from_url(template['image']) | |
| st.write("---") | |
| else: | |
| st.error(f"Failed to fetch templates: {templates}") | |
| st.markdown(""" | |
| ### Pagination Controls | |
| - **Skip**: Number of templates to skip (default: 0) | |
| - **Limit**: Maximum number of templates to return (default: 10) | |
| """) | |
| st.markdown("---") | |
| st.subheader("API Information") | |
| st.markdown(""" | |
| - POST Endpoint: https://ai-agent-backend-v50m.onrender.com/api/v1/templates/ | |
| - GET Endpoint: https://ai-agent-backend-v50m.onrender.com/api/v1/templates/ | |
| - Query Parameters: | |
| - skip (integer, default: 0) | |
| - limit (integer, default: 10) | |
| - Content-Type: application/json | |
| - Required fields for POST: name, image (URL), category, prompt | |
| """) |