FastAPI Deployment Ollama Visual Dialogue Interface
I. Structure du catalogue
Le cahier de dépôt se trouve dans le dossier C6 :
fastapi_chat_app/
│
├── app.py
├── websocket_handler.py
├── static/
│ └── index.html
└── requirements.txt
app.py
La configuration principale et le routage des applications FastAPI.websocket_handler.py
Gère les connexions WebSocket et les flux de messages.static/index.html
Page HTML.requirements.txt
Les dépendances requises sont installées via pip install -r requirements.txt.
II. clonage de cet entrepôt
git clone https://github.com/AXYZdong/handy-ollama
III. installation des dépendances
pip install -r requirements.txt
IV. code de base
app.py
Le code principal du fichier est le suivant :
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连接
Accepte une connexion WebSocket :
await websocket.accept()
La fonction accepte tout d'abord une demande de connexion WebSocket de la part du client et établit un canal de communication avec ce dernier.
Recevoir les données de l'utilisateur :
user_input = await websocket.receive_text()
Le message texte est envoyé par le client via WebSocket afin d'obtenir les données de l'utilisateur.
Initialiser le flux de dialogue :
stream = ollama.chat(...)
Appeler la méthode chat de la bibliothèque ollama, en spécifiant que le modèle utilisé est llama3.1. Transmettre les données de l'utilisateur sous forme de message au modèle, et activer le streaming (stream=True) pour obtenir la réponse générée par le modèle de manière incrémentale.
Traitement des résultats du modèle :
for chunk in stream
Iterate over the data blocks streamed from the model (Itérer sur les blocs de données provenant du modèle).model_output = chunk['message']['content']
Les données sont extraites de chaque bloc de données et le contenu textuel généré par le modèle est extrait de chaque bloc de données.await websocket.send_text(model_output)
Le modèle d'analyse de l'information est un outil d'aide à l'analyse de l'information : il renvoie les réponses extraites du modèle au client via WebSocket pour un dialogue en temps réel.
Gestion des exceptions :
except Exception as e
Si une exception se produit pendant le traitement (par exemple, un problème de réseau, une erreur de modèle, etc.), il faut rattraper l'exception et envoyer un message d'erreur via WebSocket pour informer le client qu'une erreur s'est produite.
Fermer la connexion WebSocket :
finally
Le cas échéant, la connexion WebSocket est fermée afin de libérer les ressources et de mettre fin à la session.
V. Exécution de l'application
- Dans le répertoire (
fastapi_chat_app/
) ; - Exécutez le fichier app.py.
uvicorn app:app --reload
Ouvrir la page.

Sortie normale affichée en arrière-plan.

© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...