国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

google 垃圾網(wǎng)站推廣軟文300字范文

google 垃圾網(wǎng)站,推廣軟文300字范文,培訓的網(wǎng)站建設,美食網(wǎng)站開發(fā)環(huán)境🚀 實現(xiàn)Windows本地大模型翻譯服務 - 基于OllamaFlask的劃詞翻譯實踐 🛠? 步驟概要1?? python 環(huán)境準備2?? Ollama 安裝3?? 一個 Flask 服務4?? Windows 服務化封裝5?? 測試本地接口6?? 配置劃詞翻譯自定義翻譯源7?? 效果展示8?? debug…

🚀 實現(xiàn)Windows本地大模型翻譯服務 - 基于Ollama+Flask的劃詞翻譯實踐

    • 🛠? 步驟概要
      • 1?? python 環(huán)境準備
      • 2?? Ollama 安裝
      • 3?? 一個 Flask 服務
      • 4?? Windows 服務化封裝
      • 5?? 測試本地接口
      • 6?? 配置劃詞翻譯自定義翻譯源
      • 7?? 效果展示
      • 8?? debug 歷程
      • 💡 技術亮點

🛠? 步驟概要

參考 API 文檔:

  • Ollama API
  • 劃詞翻譯自定義翻譯源

1?? python 環(huán)境準備

# 虛擬環(huán)境
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》:

  • 設置模型保存路徑:新增環(huán)境變量 OLLAMA_MODELS,值為目標地址,似乎要 重啟電腦生效
  • 指定安裝目錄:OllamaSetup.exe /DIR=“D:\some\location”
  • ollama默認在 11434 端口提供 REST API,比如通過 curl 發(fā)送請求到 /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 osapp = 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 = {"中文(簡體)": "中文","英語": "英文","日語": "日文"
}def clean_response(text):"""清除<think>標簽內(nèi)容"""# 過濾DeepSeek思考過程的正則表達式THINK_PATTERN = re.compile(r'<think>.*?</think>', re.DOTALL)return THINK_PATTERN.sub('', text).strip()def build_prompt(text, source, target):source_lang = LANGUAGE_MAP.get(source, source)target_lang = LANGUAGE_MAP.get(target, target)return f"作為專業(yè)翻譯官,請將以下{source_lang}內(nèi)容精準翻譯為{target_lang},僅輸出譯文:\n{text}"@app.route('/translate', methods=['POST'])
def translate():try:data = request.jsonlogger.info(f"收到請求: {data}")# 提取必要參數(shù)model_name = data['name'].lower()text = data["text"]dest_langs = data["destination"]source_lang = data.get("source") or "auto"if source_lang == dest_langs[0] and len(dest_langs) > 1:target_lang = dest_langs[1]else:target_lang = dest_langs[0]response = requests.post("http://localhost:11434/api/generate",json={"model": MODEL_NAME.get(model_name, model_name),"prompt": build_prompt(text, source_lang, target_lang),"stream": False,"options": {"temperature": 0.3}})# 處理翻譯結(jié)果raw_response = response.json()["response"]translated_text = clean_response(raw_response)return jsonify({"text": text,"from": source_lang,"to": target_lang,"result": [translated_text]})except Exception as e:logger.error(f"翻譯失敗: {str(e)}")return jsonify({"error": str(e)}), 500class TranslationService(win32serviceutil.ServiceFramework):_svc_name_ = "LocalOllamaTranslationService"  # 服務名稱(唯一)_svc_display_name_ = "Ollama本地翻譯服務"_svc_description_ = "為劃詞翻譯提供基于Ollama中運行的大模型的本地翻譯服務"  # 服務描述logger.info(f"svc_name: {_svc_name_}, model_name: {MODEL_NAME}")def __init__(self, args):win32serviceutil.ServiceFramework.__init__(self, args)self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)socket.setdefaulttimeout(60)def SvcStop(self):self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)logger.info("Stopping Ollama Translation Service...")win32event.SetEvent(self.hWaitStop)servicemanager.LogInfoMsg("服務正在停止...")logger.info("Service stopped successfully.")def SvcDoRun(self):logger.info("Starting Ollama Translation Service...")try:self.main()logger.info("Service started successfully.")except Exception as e:logger.error(f"Failed to start service: {str(e)}")self.ReportServiceStatus(win32service.SERVICE_STOPPED)def main(self):serve(app, host='127.0.0.1', port=5000)if __name__ == '__main__':if len(sys.argv) == 1:servicemanager.Initialize()servicemanager.PrepareToHostSingle(TranslationService)servicemanager.StartServiceCtrlDispatcher()else:win32serviceutil.HandleCommandLine(TranslationService)

4?? Windows 服務化封裝

以下腳本都需要以管理員身份運行

  • 啟動服務腳本 install_service.bat
:: install_service.bat
@echo off
# 這里的 python 解釋器要填虛擬環(huán)境那個,否則找不到包
set PYTHON_PATH=path\to\your\envs\ollama_trans\python.exe
set SCRIPT_PATH=%~dp0translation_service.py%PYTHON_PATH% %SCRIPT_PATH% --startup=auto install
# 這里的服務名稱 LocalOllamaTranslationService 要跟上面程序里面的一致,是唯一的
net start LocalOllamaTranslationService
  • 關閉服務腳本 uninstall_service.bat
:: uninstall_service.bat
@echo off
net stop LocalOllamaTranslationService
set PYTHON_PATH=path\to\your\envs\ollama_trans\python.exe
set SCRIPT_PATH=%~dp0translation_service.py%PYTHON_PATH% %SCRIPT_PATH% remove

最終的文件結(jié)構(gòu):

├── translation_service.py    # 主服務程序
├── install_service.bat       # 服務安裝腳本
├── uninstall_service.bat     # 服務卸載腳本
└── flask_svc.log             # python 日志

5?? 測試本地接口

現(xiàn)在我們請求的是 flask 服務的端口,我這里指定了模型名稱是 qwen,ollama 中也下載了 qwen2.5:7b-instruct-q8_0

curl -X POST http://localhost:5000/translate -H "Content-Type: application/json" -d "{\"name\": \"qwen\",\"text\": \"人工智能的發(fā)展前景\", \"destination\": [\"中文(簡體)\", \"英語\"], \"source\": \"中文(簡體)\"}"

返回:

{"from":"\u4e2d\u6587(\u7b80\u4f53)","result":["The Prospects for the Development of Artificial Intelligence"],"text":"\u4eba\u5de5\u667a\u80fd\u7684\u53d1\u5c55\u524d\u666f","to":"\u82f1\u8bed"}

6?? 配置劃詞翻譯自定義翻譯源

插件設置
在這里插入圖片描述

自定義翻譯源

  • 接口地址:http://localhost:5000/translate

  • 翻譯源名稱:qwen,然后回車

  • 測試

根據(jù)上面的程序邏輯,翻譯源名稱最好跟 ollama 下載的模型名稱一致

7?? 效果展示

在這里插入圖片描述

8?? debug 歷程

  • 日志的重要性
    • 一開始 deepseek 生成的 py 程序都沒寫日志,啟動服務一直失敗,報錯:pywintypes.error: (1063, 'StartServiceCtrlDispatcher', '服務進程無法連接到服務控制器上。'),然后又那這些報錯去問它,給了一堆方案都沒解決問題 😄
    • 寫了 logger 才發(fā)現(xiàn)問題所在:
Sat, 15 Feb 2025 21:19:16 wasyncore.py[line:449] INFO Serving on http://127.0.0.1:5001
Sat, 15 Feb 2025 21:22:47 app.py[line:875] ERROR Exception on /translate [POST]
Traceback (most recent call last):File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 1511, in wsgi_appresponse = self.full_dispatch_request()File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 919, in full_dispatch_requestrv = self.handle_user_exception(e)File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask_cors\extension.py", line 165, in wrapped_functionreturn cors_after_request(app.make_response(f(*args, **kwargs)))~^^^^^^^^^^^^^^^^^File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 917, in full_dispatch_requestrv = self.dispatch_request()File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 902, in dispatch_requestreturn self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
TypeError: TranslationService.translate() missing 1 required positional argument: 'self'
  • 服務啟停
    • cmd 中的雙引號是需要用反斜杠 \ 轉(zhuǎn)義的,在 powershell 中不需要
    • debug 過程中需要起了又刪掉 LocalOllamaTranslationService 服務:
    • sc queryex LocalOllamaTranslationService 得到 PID
    • taskkill /f /pid <PID> 強行停止
    • sc delete LocalOllamaTranslationService 刪掉這個服務 ID 后才能再啟動程序,否則會報錯服務已存在
    • 或者以管理員身份打開 cmd 或者 VS Code,執(zhí)行:
    • python translation_service.py stop 停止服務
    • python translation_service.py remove 刪除服務
    • python translation_service.py install 安裝服務
    • python translation_service.py start 啟動服務

💡 技術亮點

  • 完全離線: 從模型推理到翻譯服務全程本地運行

  • 隱私保護: 敏感文本無需離開本地設備

  • 低延遲: 省去網(wǎng)絡傳輸耗時,平均響應<500ms

  • 可擴展架構(gòu): 輕松切換不同大語言模型

http://aloenet.com.cn/news/39152.html

相關文章:

  • 做網(wǎng)站自己租服務器還是網(wǎng)絡公司如何發(fā)布自己的廣告
  • 建設網(wǎng)站的好處百度云服務器
  • 做宣傳網(wǎng)站需要多少錢附近電商培訓班
  • 常用企業(yè)網(wǎng)站模板對比廣告聯(lián)盟下載app
  • 下載了網(wǎng)站建設asp深圳seo排名優(yōu)化
  • 怎樣搜網(wǎng)站seo工作流程
  • 清遠做網(wǎng)站哪家好百度百家官網(wǎng)入口
  • 熊掌號網(wǎng)站怎么做百度的網(wǎng)頁地址
  • 上海網(wǎng)站制作軟件外鏈交易平臺
  • 攝影網(wǎng)站的規(guī)劃與設計seo網(wǎng)站排名查詢
  • 靜海區(qū)網(wǎng)站建設推廣老域名購買
  • 國內(nèi)優(yōu)秀網(wǎng)站網(wǎng)絡營銷專業(yè)是學什么的
  • 牛商網(wǎng)做的網(wǎng)站如何中國互聯(lián)網(wǎng)電視app下載安裝
  • 有個印度做網(wǎng)站的天天找我重慶網(wǎng)站開發(fā)公司
  • 淮安集團網(wǎng)站建設鄭州seo代理商
  • 網(wǎng)站掃碼怎么做電腦培訓班一般多少錢
  • 紹興 網(wǎng)站制作韓國網(wǎng)站
  • c 做網(wǎng)站需要什么知識高端seo服務
  • 淮安網(wǎng)站建設公司電話源碼交易平臺
  • 創(chuàng)建學校網(wǎng)站蘭州seo培訓
  • 網(wǎng)站解析怎么做谷歌瀏覽器引擎入口
  • appui設計圖seo及網(wǎng)絡推廣招聘
  • 網(wǎng)站管理公司seo推廣排名平臺有哪些
  • 北京官方網(wǎng)站網(wǎng)百度seo收費
  • 動態(tài)網(wǎng)站后臺怎么做2021年最為成功的營銷案例
  • 建設銀行博士后招聘網(wǎng)站營銷推廣軟件有哪些
  • baiduspider無法訪問您的網(wǎng)站微信管理工具
  • 垂直網(wǎng)站建設東莞seo項目優(yōu)化方法
  • 做網(wǎng)站公司鄭州鄭州的網(wǎng)站建設公司百度貼吧網(wǎng)頁版登錄
  • 徐州優(yōu)化網(wǎng)站建設網(wǎng)絡工程師培訓機構(gòu)排名