import os import g4f import json import home import websockets import datetime import asyncio import sqlite3 import requests import http.server import socketserver import fireworks.client import streamlit as st import streamlit.components.v1 as components import gradio as gr import home from streamlit_modules import characterAI from streamlit_modules import fireworksLlama2 from streamlit_modules import bingG4F from streamlit_modules import chatGPT4F from streamlit_modules import forefrontAI from streamlit_modules import flowiseAgent from streamlit_modules import chaindesk from PyCharacterAI import Client from websockets.sync.client import connect client = Client() servers = [] clients = [] inputs = [] outputs = [] used_ports = [] server_ports = [] client_ports = [] # Stop the WebSocket server async def stop_websockets(): global server if server: # Close all connections gracefully await server.close() # Wait for the server to close await server.wait_closed() home.servers.clear() home.clients.clear() print("Stopping WebSocket server...") else: print("WebSocket server is not running.") # Stop the WebSocket client async def stop_client(): global ws # Close the connection with the server await ws.close() home.clients.clear() print("Stopping WebSocket client...") async def main(): st.set_page_config(layout="wide") st.title("serverovnia") if "server_ports" not in st.session_state: st.session_state['server_ports'] = "" if "client_ports" not in st.session_state: st.session_state['client_ports'] = "" if "servers" not in st.session_state: st.session_state['servers'] = "" if "clients" not in st.session_state: st.session_state['clients'] = "" if "gradio_Port" not in st.session_state: st.session_state.gradio_Port = "" if "server" not in st.session_state: st.session_state.server = False if "client" not in st.session_state: st.session_state.client = False if "api_key" not in st.session_state: st.session_state.api_key = "" if "user_ID" not in st.session_state: st.session_state.user_ID = "" if "gradio_Port" not in st.session_state: st.session_state.gradio_Port = "" if "forefront_api" not in st.session_state: st.session_state.forefront_api = "" if "tokenChar" not in st.session_state: st.session_state.tokenChar = "" if "charName" not in st.session_state: st.session_state.charName = "" if "character_ID" not in st.session_state: st.session_state.character_ID = "" if "flow" not in st.session_state: st.session_state.flow = "" if "agentID" not in st.session_state: st.session_state.agentID = "" if "googleAPI" not in st.session_state: st.session_state.googleAPI = "" if "cseID" not in st.session_state: st.session_state.cseID = "" if "server_state" not in st.session_state: st.session_state.server_state = "complete" if "client_state" not in st.session_state: st.session_state.client_state = "complete" if "http_server" not in st.session_state: PORT = 8001 Handler = http.server.SimpleHTTPRequestHandler st.session_state.http_server = PORT with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever() c1, c2 = st.columns(2) selectServ = st.selectbox("Select source", ("Fireworks", "Bing", "GPT-3,5", "Character.ai", "Forefront", "ChainDesk", "Flowise")) userInput = st.chat_input("Ask Agent") with c1: websocketPort = st.number_input("Websocket server port", min_value=1000, max_value=9999, value=1000) startServer = st.button("Start server") stopServer = st.button("Stop server") st.text("Server ports") serverPorts1 = st.empty() serverPorts = serverPorts1.status(label="websocket servers", state=st.session_state.server_state, expanded=False) serverPorts.write(home.servers) with c2: clientPort = st.number_input("Websocket client port", min_value=1000, max_value=9999, value=1000) runClient = st.button("Start client") stopClient = st.button("Stop client") st.text("Client ports") clientPorts1 = st.empty() clientPorts = clientPorts1.status(label="websocket clients", state=st.session_state.client_state, expanded=False) clientPorts.write(home.clients) with st.sidebar: # Wyświetlanie danych, które mogą być modyfikowane na różnych stronach st.text("Server ports") srv_status = st.empty() server_status1 = srv_status.status(label="websocket servers", state=st.session_state.server_state, expanded=True) server_status1.write(home.servers) if st.session_state.server == True: st.session_state.server_state = "running" srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state=st.session_state.server_state, expanded=True) server_status1.write(home.servers) st.text("Client ports") cli_status = st.empty() client_status1 = cli_status.status(label="websocket clients", state=st.session_state.client_state, expanded=True) client_status1.write(home.clients) if st.session_state.client == True: st.session_state.client_state = "running" cli_status.empty() client_status1 = cli_status.status(label="websocket clients", state=st.session_state.client_state, expanded=True) client_status1.write(home.clients) if stopServer: stop_websockets if stopClient: stop_client if selectServ == "Fireworks": fireworksAPI = st.text_input("Fireworks API") if startServer: st.session_state.server = True fireworks.client.api_key = fireworksAPI st.session_state.api_key = fireworks.client.api_key srv_name1 = f"Fireworks Llama2 server port: {websocketPort}" home.servers.append(srv_name1) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server = fireworksLlama2(fireworksAPI) await server.start_server(websocketPort) print(f"Starting WebSocket server on port {websocketPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True fireworks.client.api_key = fireworksAPI st.session_state.api_key = fireworks.client.api_key cli_name1 = f"Fireworks Llama2 client port: {clientPort}" home.clients.append(cli_name1) cli_status.empty() client_status1 = cli_status.status(label=cli_name1, state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label=cli_name1, state="running", expanded=True) clientPorts.write(home.clients) try: client = fireworksLlama2(fireworksAPI) await client.startClient(clientPort) print(f"Connecting client on port {clientPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if userInput: print(f"User B: {userInput}") user_input = st.chat_message("human") user_input.markdown(userInput) fireworks1 = fireworksLlama2(fireworksAPI) response1 = await fireworks1.handleUser(userInput) print(response1) outputMsg = st.chat_message("ai") outputMsg.markdown(response1) if selectServ == "Bing": if startServer: st.session_state.server = True srv_name2 = f"Bing/Copilot server port: {websocketPort}" home.servers.append(srv_name2) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server1 = bingG4F() await server1.start_server(websocketPort) print(f"Starting WebSocket server on port {websocketPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True cli_name2 = f"Bing/Copilot client port: {clientPort}" home.clients.append(cli_name2) cli_status.empty() client_status1 = cli_status.status(label=cli_name2, state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label=cli_name2, state="running", expanded=True) clientPorts.write(home.clients) try: client1 = bingG4F() await client1.startClient(clientPort) print(f"Connecting client on port {clientPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if userInput: user_input1 = st.chat_message("human") user_input1.markdown(userInput) bing = bingG4F() response = await bing.handleUser(userInput) outputMsg1 = st.chat_message("ai") outputMsg1.markdown(response) if selectServ == "GPT-3,5": if startServer: st.session_state.server = True srv_name3 = f"GPT-3,5 server port: {websocketPort}" home.servers.append(srv_name3) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server2 = chatGPT4F() await server2.start_server(websocketPort) print(f"Starting WebSocket server on port {websocketPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True cli_name3 = f"GPT-3,5 client port: {clientPort}" home.clients.append(cli_name3) cli_status.empty() client_status1 = cli_status.status(label="clients", state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label="clients", state="running", expanded=True) clientPorts.write(home.clients) try: client2 = chatGPT4F() await client2.startClient(clientPort) print(f"Connecting client on port {clientPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if userInput: user_input1 = st.chat_message("human") user_input1.markdown(userInput) gpt = chatGPT4F() response = await gpt.handleUser(userInput) outputMsg1 = st.chat_message("ai") outputMsg1.markdown(response) if selectServ == "Chaqracter.ai": characterToken = st.text_input("Character AI user token") characterID = st.text_input("Your characters ID") if startServer: st.session_state.server = True srv_name4 = f"Character.ai server port: {websocketPort}" home.servers.append(srv_name4) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server4 = characterAI(characterToken) await server4.start_server(characterID, websocketPort) print(f"Starting WebSocket server on port {websocketPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True cli_name4 = f"Character.ai client port: {clientPort}" home.clients.append(cli_name4) cli_status.empty() client_status1 = cli_status.status(label="clients", state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label="clients", state="running", expanded=True) clientPorts.write(home.clients) try: client4 = characterAI(characterToken) await client4.startClient(characterID, clientPort) print(f"Connecting client on port {clientPort}...") st.session_state.client = client await asyncio.Future() except Exception as e: print(f"Error: {e}") if userInput: print(f"User B: {userInput}") user_input1 = st.chat_message("human") user_input1.markdown(userInput) character = characterAI(characterToken) response1 = await character.handleUser(characterID, userInput) outputMsg1 = st.chat_message("ai") outputMsg1.markdown(response1) print(response1) return response1 if selectServ == "Forefront": forefrontAPI = st.text_input("Forefront API") if startServer: st.session_state.server = True srv_name5 = f"Forefront AI server port: {websocketPort}" home.servers.append(srv_name5) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server5 = forefrontAI(forefrontAPI) await server5.start_server(websocketPort) print(f"Starting WebSocket server on port {websocketPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True cli_name5 = f"Forefront AI client port: {clientPort}" home.clients.append(cli_name5) cli_status.empty() client_status1 = cli_status.status(label="clients", state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label="clients", state="running", expanded=True) clientPorts.write(home.clients) try: client = forefrontAI(forefrontAPI) await client.startClient(clientPort) print(f"Connecting client on port {clientPort}...") await asyncio.Future() except Exception as e: print(f"Error: {e}") if userInput: print(f"User B: {userInput}") user_input = st.chat_message("human") user_input.markdown(userInput) forefront = forefrontAI(forefrontAPI) response1 = await forefront.handleUser(userInput) print(response1) outputMsg = st.chat_message("ai") outputMsg.markdown(response1) if selectServ == "ChainDesk": agentID = st.text_input("Agent ID") if userInput: user_input6 = st.chat_message("human") user_input6.markdown(userInput) chaindesk1 = chaindesk(agentID) response6 = await chaindesk1.handleUser(userInput) outputMsg = st.chat_message("ai") outputMsg.markdown(response6) if startServer: st.session_state.server = True srv_name6 = f"Chaindesk agent server port: {websocketPort}" home.servers.append(srv_name6) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server6 = chaindesk(agentID) print(f"Starting WebSocket server on port {websocketPort}...") await server6.start_server(websocketPort) await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True cli_name6 = f"Chaindesk agent client port: {clientPort}" home.clients.append(cli_name6) cli_status.empty() client_status1 = cli_status.status(label="clients", state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label="clients", state="running", expanded=True) clientPorts.write(home.clients) try: client6 = chaindesk(agentID) print(f"Connecting client on port {clientPort}...") await client6.startClient(clientPort) await asyncio.Future() except Exception as e: print(f"Error: {e}") if selectServ == "Flowise": flow = st.text_input("flow ID") if userInput: user_input6 = st.chat_message("human") user_input6.markdown(userInput) flowise = flowiseAgent(flow) response6 = await flowise.handleUser(userInput) outputMsg = st.chat_message("ai") outputMsg.markdown(response6) if startServer: st.session_state.server = True srv_name7 = f"Flowise agent server port: {websocketPort}" home.servers.append(srv_name7) srv_status.empty() server_status1 = srv_status.status(label="websocket servers", state="running", expanded=True) server_status1.write(home.servers) serverPorts1.empty() serverPorts = serverPorts1.status(label="websocket servers", state="running", expanded=True) serverPorts.write(home.servers) try: server7 = flowiseAgent(flow) print(f"Starting WebSocket server on port {websocketPort}...") await server7.start_server(websocketPort) await asyncio.Future() except Exception as e: print(f"Error: {e}") if runClient: st.session_state.client = True cli_name7 = f"Chaindesk agent client port: {clientPort}" home.clients.append(cli_name7) cli_status.empty() client_status1 = cli_status.status(label="clients", state="running", expanded=True) client_status1.write(home.clients) clientPorts1.empty() clientPorts = clientPorts1.status(label="clients", state="running", expanded=True) clientPorts.write(home.clients) try: client7 =flowiseAgent(flow) print(f"Connecting client on port {clientPort}...") await client7.startClient() await asyncio.Future() except Exception as e: print(f"Error: {e}") asyncio.run(main())