WebSockets
WebSockets are useful for LLM microservices which require a bi-directional connection between the client and server. For example, a chat application would require a WebSocket to hold a persistent connection between the client and server during an active user session.
Lanarky builds on top of FastAPI to support LLM microservices over WebSockets.
WebsocketSession¶
The WebsocketSession class establishes a WebSocket session inside an endpoint logic to define
the interaction between the client and server. This is particularly useful for building chatbot
applications.
Example¶
To understand how to use WebsocketSession, let's look at an example.
from lanarky import Lanarky
from lanarky.websockets import WebSocket, WebsocketSession
app = Lanarky()
@app.websocket("/ws")
async def endpoint(websocket: WebSocket):
async with WebsocketSession().connect(websocket) as session:
async for message in session:
await websocket.send_json({"data": message["data"].capitalize()})
Here, we have a simple websocket endpoint which capitalizes the message sent by the client.
We use the WebsocketSession class to establish a session with the client. The session
allows us to send and receive messages from the client.
To receive the events, let's build a simple client script.
from lanarky.clients import WebSocketClient
def main():
client = WebSocketClient(uri="ws://localhost:8001/ws")
with client.connect() as session:
while True:
user_input = input("Enter a message: ")
session.send(dict(data=user_input))
response = session.receive()
print(f"Received: {response}")
if __name__ == "__main__":
main()
First run the application server.
Then run the client script.
Received: {'data': 'Hi'}
Enter a message: hola
Received: {'data': 'Hola'}