接口简介
详见手册
后端实现 Python
ChatGLM-6B模型本身是基于python的,且考虑到对硬件有较高要求,只能在本地PC上运行
云端服务器由GO实现
基于以上两点:决定继续用python开发本地服务,然后采用websocket与云端服务器进行通信。云端的GO服务器绑定公网IP,由本地的Python Client发起连接,然后由云端服务器发起请求,调用本地的AI对话功能
websocket
通过 asyncio 和 websockets 这两个py库进行ws通信,基础框架如下:
1 | async with websockets.connect(url) as ws: |
在while循环中接收消息,处理后再通过ws返回给server
心跳包的实现
由于云服务器用nginx代理了所有请求,而nginx有超时机制。需要client发送心跳包来保持长链接,对框架做出一点改动
1 | while True: |
通过asyncio.wait_for的超时机制,每隔60s便向server发送一个心跳包,以保持链接
数据存储
由于是单卡AI提供的轻量级服务,不考虑复杂的数据存储。直接以json的形式存储在本地文件夹下即可