g4f搭配fastapi-websocket篇


websocket 在fastapi中的使用

import g4f
from fastapi import APIRouter, Body, WebSocket, WebSocketDisconnect, WebSocketException
from asyncio import sleep as async_sleep

g4f.debug.logging = True
router = APIRouter()


@router.websocket("/ws-chat")
async def ws_chat(
	websocket: WebSocket,
):
	await websocket.accept()
	try:
		while True:
			json_input = await websocket.receive_json()
			event_type = json_input.get("event_type", "")
			if event_type == "ping":
				await websocket.send_text("pong")

			if event_type == "chat":
				model = json_input.get("model", "gpt-3.5-turbo")
				messages = json_input.get("messages", [])
				response = g4f.Provider.FreeGpt.create_completion(
					model=model,
					messages=messages,
					stream=True,
				)
				for message in response:
					await websocket.send_json({"text": message, "finish_reason": ""})
				await websocket.send_json({"text": "", "finish_reason": "finish"})
			await async_sleep(0.1)

	except WebSocketException: ...
	except WebSocketDisconnect: ...
	except Exception as e:
		print(e)

调用结果

postman调用结果


文章作者: Wanheng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wanheng !
评论
  目录