Implantación de FastAPI Interfaz de diálogo visual de Ollama
Tutoriales prácticos sobre IAPublicado hace 10 meses Círculo de intercambio de inteligencia artificial 36.7K 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.pyLa configuración y el enrutamiento principales de las aplicaciones FastAPI.websocket_handler.pyManeja conexiones WebSocket y flujos de mensajes.static/index.htmlPágina HTML.requirements.txtLas 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
- 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
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...




