Развертывание FastAPI Визуальный диалоговый интерфейс Ollama

I. Структура каталога

Блокнот хранилища находится в папке C6:

fastapi_chat_app/
│
├── app.py
├── websocket_handler.py
├── static/
│   └── index.html
└── requirements.txt
  • app.py Основная настройка и маршрутизация приложений FastAPI.
  • websocket_handler.py Обрабатывает соединения WebSocket и потоки сообщений.
  • static/index.html HTML-страница.
  • requirements.txt Необходимые зависимости, устанавливаемые с помощью файла pip install -r requirements.txt.

 

II. Клонирование этого склада

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

 

III. Установка зависимостей

pip install -r requirements.txt

 

IV. Основной код

app.py Основной код в файле выглядит следующим образом:

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连接

Принимает соединение WebSocket:

  • await websocket.accept(): Сначала функция принимает запрос на соединение WebSocket от клиента и устанавливает с ним канал связи.

Получение пользовательского ввода:

  • user_input = await websocket.receive_text(): Получение текстового сообщения от клиента через WebSocket для получения пользовательского ввода.

Инициализируйте диалоговый поток:

  • stream = ollama.chat(...): Вызовите метод chat из библиотеки ollama, указав, что используется модель llama3.1. Передайте модели пользовательский ввод в виде сообщения и включите потоковую передачу (stream=True), чтобы получать генерируемый моделью ответ постепенно.

Обработка выходных данных модели:

  • for chunk in stream: Итерация блоков данных, передаваемых из модели.
  • model_output = chunk['message']['content']: Извлеките сгенерированный моделью текстовый контент из каждого блока данных.
  • await websocket.send_text(model_output): Отправка извлеченных ответов модели обратно клиенту через WebSocket для диалога в реальном времени.

Обработка исключений:

  • except Exception as e: Если во время обработки возникает какое-либо исключение (например, проблема с сетью, ошибка модели и т. д.), поймайте исключение и отправьте сообщение об ошибке через WebSocket, чтобы проинформировать клиента о том, что произошла ошибка.

Закройте соединение WebSocket:

  • finally: Независимо от того, возникло ли исключение, в конечном итоге гарантируется, что соединение WebSocket будет закрыто, чтобы освободить ресурсы и завершить сеанс.

 

V. Запуск приложения

  1. В каталоге (fastapi_chat_app/);
  2. Запустите файл app.py.
uvicorn app:app --reload

Открыть страницу.

FastAPI 部署 Ollama 可视化对话界面

Нормальный вывод, отображаемый в фоновом режиме.

FastAPI 部署 Ollama 可视化对话界面
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...