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 streamIterate 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 eSi 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 :

  • finallyLe 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

  1. Dans le répertoire (fastapi_chat_app/) ;
  2. Exécutez le fichier app.py.
uvicorn app:app --reload

Ouvrir la page.

FastAPI 部署 Ollama 可视化对话界面

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

FastAPI 部署 Ollama 可视化对话界面
© déclaration de droits d'auteur
AiPPT

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...