🚀 实现Windows本地大模型翻译服务 - 基于Ollama+Flask的划词翻译实践
🛠️ 步骤概要
参考 API 文档:
1️⃣ python 环境准备
# 虚拟环境
conda create -n ollama_trans
conda activate ollama_trans
pip install flask flask-cors pywin32 requests waitress
# 请确保完成 pywin32_postinstall.py 的安装步骤。:
python path\to\your\envs\ollama_trans\Scripts\pywin32_postinstall.py -install
2️⃣ Ollama 安装
安装 Ollama 最好提前设置安装路径和模型下载路径,否则它都一股脑干到 C 盘。可以参考前一篇博客 《本地投喂deepseek》:
- 设置模型保存路径:新增环境变量
OLLAMA_MODELS
,值为目标地址,似乎要 重启电脑生效 - 指定安装目录:OllamaSetup.exe /DIR=“D:\some\location”
- ollama默认在 11434 端口提供 REST API,比如通过 curl 发送请求到
/api/generate
来生成文本:
curl http://localhost:11434/api/generate -d "{
\"model\": \"deepseek-r1:14b\", \"prompt\": \"Why is the sky blue?\", \"stream\": false}"
- 我们的目的就是用 flask 写一个服务器适配 Ollama 和划词翻译的 API
3️⃣ 一个 Flask 服务
遇事不决问 DS
# translation_service.py
import re
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
from flask import Flask, request, jsonify
from flask_cors import CORS
from waitress import serve
import requests
import logging
import sys
import os
app = Flask(__name__)
CORS(app)
# 获取当前脚本所在的目录
current_directory = os.path.dirname(os.path.abspath(__file__))
# 定义日志文件名
log_file_path = os.path.join(current_directory, 'flask_svc.log')
# 配置日志记录器
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename=log_file_path,
filemode='a' # 使用 'a' 表示追加模式,'w' 表示覆盖模式
)
logger = logging.getLogger(__name__)
# 选择ollama的模型
MODEL_NAME = {
"qwen": "qwen2.5:7b-instruct-q8_0",
"llama": "llama3.2:3b",
"deepseek": "deepseek-r1:14b" # 其实 deepseek-r1 擅长推理,并不适合翻译,有点慢
}
# 语言映射
LANGUAGE_MAP = {
"中文(简体)"