CPAChatUI / app.py
rossiter78's picture
Create app.py
72dab5c verified
Raw
History Blame
2.26 kB
import gradio as gr
import requests
import os
# Configuration
LANGFLOW_API_URL = os.environ.get("LANGFLOW_API_URL", "https://rossiter78-langflowpoc.hf.space/api/v1/run/d53e1b2f-3572-40c8-84ab-725106ee858f")
#LANGFLOW_API_URL = "https://rossiter78-langflowpoc.hf.space/api/v1/run/d53e1b2f-3572-40c8-84ab-725106ee858f"
LANGFLOW_API_KEY = os.environ.get("LANGFLOW_API_KEY", "") # If needed
HF_API_KEY = os.environ.get("HF_API_KEY", "")
def call_langflow(message, history):
"""
Call Langflow API and return the response
"""
headers = {
"Content-Type": "application/json",
}
# Add API key if needed
if LANGFLOW_API_KEY:
headers["Authorization"] = f"Bearer {LANGFLOW_API_KEY}"
if HF_API_KEY:
headers["x-api-key"] = f"{HF_API_KEY}"
# Adjust this payload based on your Langflow API structure
payload = {
"input_value": message,
"output_type": "chat",
"input_type": "chat",
"tweaks": {}
}
try:
response = requests.post(
LANGFLOW_API_URL,
json=payload,
headers=headers,
timeout=30
)
response.raise_for_status()
# Parse response - adjust based on your API response structure
data = response.json()
# Common Langflow response structures:
# Option 1: data["outputs"][0]["outputs"][0]["results"]["message"]["text"]
# Option 2: data["result"]["message"]
# Adjust the following line based on your actual response:
bot_message = data["outputs"][0]["outputs"][0]["results"]["message"]["text"]
return bot_message
except requests.exceptions.RequestException as e:
return f"Error connecting to Langflow: {str(e)}"
except (KeyError, IndexError) as e:
return f"Error parsing response: {str(e)}\nResponse: {data}"
# Create Gradio Chat Interface
demo = gr.ChatInterface(
fn=call_langflow,
title="My Langflow Chatbot",
description="Chat with my AI assistant powered by Langflow",
examples=["Hello!", "What can you help me with?"],
theme=gr.themes.Soft(),
retry_btn=None,
undo_btn=None,
)
if __name__ == "__main__":
demo.launch()