Implantación de FastAPI Interfaz de diálogo visual de Ollama
Tutoriales prácticos sobre IAPublicado hace 5 meses Círculo de intercambio de inteligencia artificial 1.4K 00
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 stream
Iterar 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 e
Si 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
- En el directorio (
fastapi_chat_app/
); - Ejecuta el archivo app.py.
uvicorn app:app --reload
Abrir página.

Salida normal mostrada en segundo plano.

© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...