Spaces:
Sleeping
Sleeping
import threading | |
import streamlit as st | |
import requests | |
from scripts.api import start_api_server | |
import os | |
# Start the API server in a separate thread | |
api_thread = threading.Thread(target=start_api_server) | |
api_thread.start() | |
# Use localhost as FastAPI and Streamlit run in the same environment on Spaces | |
API_PORT = os.getenv("PORT", "7861") | |
API_URL = f"http://localhost:{API_PORT}/search" | |
st.title("Prompt Search App") | |
st.write("Enter a query below to find similar prompts.") | |
query = st.text_input("Query:") | |
n_results = st.slider("Number of Results:", min_value=1, max_value=10, value=5) | |
if st.button("Search"): | |
if query.strip(): | |
payload = {"query": query, "n_results": n_results} | |
try: | |
response = requests.post(API_URL, json=payload) | |
if response.status_code == 200: | |
data = response.json() | |
st.write(f"**Query:** {data['query']}") | |
st.write("**Similar Prompts:**") | |
for idx, result in enumerate(data["similar_queries"], 1): | |
st.write(f"{idx}. {result['prompt']} (Score: {result['score']:.4f})") | |
else: | |
st.error(f"API Error: {response.status_code} - {response.json().get('detail', 'No details available.')}") | |
except Exception as e: | |
st.error(f"Failed to connect to the API. Error: {e}") | |
else: | |
st.warning("Please enter a valid query.") | |