Aprendizagem pessoal com IA
e orientação prática
TRAE

Implementação da FastAPI Interface de diálogo visual Ollama

I. Estrutura do catálogo

do notebook do repositório:

fastapi_chat_app/
│
├── app.py
├── websocket_handler.py
├── static/
│   └── index.html
└── requirements.txt
  • app.py A configuração e o roteamento principais dos aplicativos FastAPI.
  • websocket_handler.py Manipula conexões WebSocket e fluxos de mensagens.
  • static/index.html Página HTML.
  • requirements.txt Dependências necessárias, instaladas via pip install -r requirements.txt.

 

II - Clonagem desse depósito

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

 

III. instalação de dependências

pip install -r requirements.txt

 

IV. código principal

app.py O código principal do arquivo é o seguinte:

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

Aceita uma conexão WebSocket:

  • await websocket.accept()Primeiro, a função aceita uma solicitação de conexão WebSocket do cliente e estabelece um canal de comunicação com o cliente.

Receber entrada do usuário:

  • user_input = await websocket.receive_text()Mensagem de texto: Recebe uma mensagem de texto do cliente via WebSocket para obter a entrada do usuário.

Inicializar o fluxo de diálogo:

  • stream = ollama.chat(...)Chamada do método chat da biblioteca ollama, especificando que o modelo usado é o llama3.1. Passe a entrada do usuário como uma mensagem para o modelo e ative o streaming (stream=True) para obter a resposta gerada pelo modelo de forma incremental.

Processamento da saída do modelo:

  • for chunk in streamIteração sobre os blocos de dados transmitidos pelo modelo.
  • model_output = chunk['message']['content']Extraia o conteúdo textual gerado pelo modelo de cada bloco de dados.
  • await websocket.send_text(model_output)Resposta do modelo extraído: envia as respostas do modelo extraído de volta ao cliente via WebSocket para diálogo em tempo real.

Tratamento de exceções:

  • except Exception as eSe ocorrer alguma exceção durante o processamento (por exemplo, problema de rede, erro de modelo etc.), capture a exceção e envie uma mensagem de erro via WebSocket para informar ao cliente que ocorreu um erro.

Feche a conexão WebSocket:

  • finallyIndependentemente de ocorrer ou não uma exceção, é garantido que a conexão WebSocket seja fechada para liberar recursos e encerrar a sessão.

 

V. Executando o aplicativo

  1. No diretório (fastapi_chat_app/);
  2. Execute o arquivo app.py.
uvicorn app:app --reload

Abrir página.

Implementação da FastAPI Ollama Visual Dialogue Interface-1


Saída normal exibida em segundo plano.

Implementação FastAPI da Ollama Visual Dialogue Interface-2

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Implementação da FastAPI Interface de diálogo visual Ollama
pt_BRPortuguês do Brasil