Spaces:
No application file
No application file
| """gradio app for Chat Interface for DataStax Langflow calls""" | |
| import json | |
| from typing import Optional, Sequence, Tuple | |
| from uuid import uuid4 | |
| import requests | |
| import gradio as gr | |
| import os | |
| BASE_API_URL = "https://api.langflow.astra.datastax.com" | |
| LANGFLOW_ID = "e99b525a-84dd-4cf2-bac6-8e5ebc6a7d17" | |
| FLOW_ID = "bfbf7237-50dd-40dd-baba-cc680288d788" | |
| APPLICATION_TOKEN = os.getenv('DATASTAX_TOKEN') | |
| ENDPOINT = 'ai_traveller' | |
| # SESSION_ID = str(uuid4()) | |
| TWEAKS = { | |
| "Memory-fCuCs": { | |
| "n_messages": 100, | |
| "order": "Ascending", | |
| "sender": "Machine and User", | |
| "sender_name": "", | |
| "template": "{sender_name}: {text}" | |
| }, | |
| "ChatInput-PN5E4": {}, | |
| "Prompt-vGvVG": {}, | |
| "GoogleGenerativeAIModel-6n0Ft": {}, | |
| "ChatOutput-HjfF1": {} | |
| } | |
| def call_travel_ai( | |
| message: str, | |
| history: Sequence[Tuple[str, str]], | |
| session_id: str, | |
| endpoint: str = ENDPOINT, | |
| output_type: str = "chat", | |
| input_type: str = "chat", | |
| tweaks: Optional[dict] = None, | |
| application_token: Optional[str] = APPLICATION_TOKEN | |
| ) -> dict: | |
| """ | |
| Run a flow with a given message and optional tweaks. | |
| :param message: The message to send to the flow | |
| :param endpoint: The ID or the endpoint name of the flow | |
| :param tweaks: Optional tweaks to customize the flow | |
| :return: The JSON response from the flow | |
| """ | |
| api_url = f"{BASE_API_URL}/lf/{LANGFLOW_ID}/api/v1/run/{endpoint}" | |
| payload = { | |
| 'session_id': session_id, | |
| "input_value": message, | |
| "output_type": output_type, | |
| "input_type": input_type, | |
| } | |
| headers = None | |
| if tweaks: | |
| payload["tweaks"] = tweaks | |
| if application_token: | |
| headers = { | |
| "Authorization": "Bearer " + application_token, | |
| "Content-Type": "application/json" | |
| } | |
| response = requests.post( | |
| api_url, | |
| json=payload, | |
| headers=headers, | |
| timeout=360 | |
| ) | |
| response = response.json() | |
| resp_message = '' | |
| for resp in response['outputs']: | |
| for _resp in resp['outputs']: | |
| for message in _resp['messages']: | |
| resp_message = message['message'] | |
| return resp_message | |
| def generate_session_id(): | |
| return str(uuid4()) | |
| def render_value(value): | |
| return value | |
| with gr.Blocks() as demo: | |
| session_id = gr.Textbox( | |
| value=generate_session_id, | |
| visible=False, | |
| interactive=False, | |
| label="Session ID", | |
| ) | |
| chat_interface = gr.ChatInterface( | |
| call_travel_ai, | |
| type='messages', | |
| title=f"AI Travel Partner", | |
| additional_inputs=[session_id], | |
| autofocus=True, | |
| fill_height=True, | |
| ) | |
| demo.launch(share=False, debug=True,) | |