Implantación de FastAPI Interfaz de diálogo visual de Ollama

I. Estructura del catálogo

El cuaderno de repositorio está en la carpeta C6:

fastapi_chat_app/
│
├── app.py
├── websocket_handler.py
├── static/
│   └── index.html
└── requirements.txt
  • app.py La configuración y el enrutamiento principales de las aplicaciones FastAPI.
  • websocket_handler.py Maneja conexiones WebSocket y flujos de mensajes.
  • static/index.html Página HTML.
  • requirements.txt Las dependencias necesarias se instalan mediante pip install -r requirements.txt.

 

II. Clonación de este almacén

git clone https://github.com/AXYZdong/handy-ollama

 

III. Instalación de dependencias

pip install -r requirements.txt

 

IV. Código del núcleo

app.py El código central del archivo es el siguiente:

import ollama
from fastapi import WebSocket
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()  # 接受WebSocket连接
user_input = await websocket.receive_text()  # 接收用户输入的文本消息
stream = ollama.chat(  # 使用ollama库与指定模型进行对话
model='llama3.1',  # 指定使用的模型为llama3.1
messages=[{'role': 'user', 'content': user_input}],  # 传入用户的输入消息
stream=True  # 启用流式传输
)
try:
for chunk in stream:  # 遍历流式传输的结果
model_output = chunk['message']['content']  # 获取模型输出的内容
await websocket.send_text(model_output)  # 通过WebSocket发送模型输出的内容
except Exception as e:  # 捕获异常
await websocket.send_text(f"Error: {e}")  # 通过WebSocket发送错误信息
finally:
await websocket.close()  # 关闭WebSocket连接

Acepta una conexión WebSocket:

  • await websocket.accept()En primer lugar, la función acepta una solicitud de conexión WebSocket del cliente y establece un canal de comunicación con el cliente.

Recibir la información del usuario:

  • user_input = await websocket.receive_text(): Recibe un mensaje de texto del cliente vía WebSocket para obtener la entrada del usuario.

Inicializar el flujo de diálogo:

  • stream = ollama.chat(...)Llamada al método chat de la librería ollama, especificando que el modelo utilizado es llama3.1. Pasa la entrada del usuario como un mensaje al modelo, y activa el streaming (stream=True) para obtener la respuesta generada por el modelo de forma incremental.

Procesamiento de los resultados del modelo:

  • for chunk in streamIterar sobre los bloques de datos transmitidos desde el modelo.
  • model_output = chunk['message']['content']Extraer el contenido textual generado por el modelo de cada bloque de datos.
  • await websocket.send_text(model_output)Enviar las respuestas del modelo extraído al cliente a través de WebSocket para un diálogo en tiempo real.

Gestión de excepciones:

  • except Exception as eSi se produce alguna excepción durante el procesamiento (por ejemplo, un problema de red, un error de modelo, etc.), capture la excepción y envíe un mensaje de error a través de WebSocket para informar al cliente de que se ha producido un error.

Cierra la conexión WebSocket:

  • finally: Independientemente de que se produzca una excepción, en última instancia se garantiza que la conexión WebSocket se cierra para liberar recursos y finalizar la sesión.

 

V. Ejecución de la aplicación

  1. En el directorio (fastapi_chat_app/);
  2. Ejecuta el archivo app.py.
uvicorn app:app --reload

Abrir página.

FastAPI 部署 Ollama 可视化对话界面

Salida normal mostrada en segundo plano.

FastAPI 部署 Ollama 可视化对话界面
© declaración de copyright
AiPPT

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...