使用python调用翻译大模型实现本地翻译【exe客户端版】

以前分享过一个 关于python 部署 网页端的 翻译大模型的 文章

有兴趣的小伙伴可以去看一下
https://blog.csdn.net/Drug_/article/details/144488795

今天就再分享一个 使用python 来制作一个 exe 客户端版的 本地大模型。
实际也很简单 只不过把 用 fastApi 框架 做的 网页端 换成 PyQt5 来制作 客户端的桌面应用
实现的效果如下:
在这里插入图片描述

使用 exe 制作 客户端 的代码 如下

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QComboBox, QTextEdit, QPushButton, QLabel, QSplitter
from PyQt5.QtCore import QThread, pyqtSignal, Qt
import traceback
from translateUtils import TranslateZhclass TranslateThread(QThread):result_signal = pyqtSignal(str)error_signal = pyqtSignal(str)def __init__(self, keyword, lang_type):super().__init__()self.keyword = keywordself.lang_type = lang_typedef run(self):try:translator = TranslateZh()translation_result = translator.getTo(self.keyword, self.lang_type)self.result_signal.emit(translation_result)except Exception as e:# 获取异常的详细信息error_message = f"翻译过程中出现错误: {str(e)}"# 获取堆栈追踪信息error_traceback = traceback.format_exc()# 将错误信息和堆栈信息发送到界面self.error_signal.emit(f"{error_message}\n详细信息:\n{error_traceback}")# PyQt5 桌面应用
class DesktopApp(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('本地翻译器')# 设置窗口大小和背景颜色self.setGeometry(100, 100, 1000, 600)self.setStyleSheet("background-color: #f0f0f0;")# 创建界面控件self.lang_type_combobox = QComboBox()self.lang_type_combobox.addItems(["英 - 中", "中 - 英"])self.lang_type_combobox.setStyleSheet("font-size: 16px; padding: 5px; background-color: white;")self.input_text = QTextEdit()self.input_text.setPlaceholderText("请输入需要翻译的内容...")self.input_text.setStyleSheet("font-size: 16px; padding: 10px; background-color: white; border-radius: 5px;")self.translate_button = QPushButton("翻译")self.translate_button.setStyleSheet("""QPushButton {font-size: 18px;background-color: #4CAF50;color: white;border-radius: 5px;padding: 10px 20px;}QPushButton:hover {background-color: #45a049;}""")# 使用 QTextEdit 来显示翻译结果self.result_text_edit = QTextEdit()self.result_text_edit.setPlaceholderText("翻译结果将显示在这里...")self.result_text_edit.setStyleSheet("font-size: 18px; color: #333; padding: 10px;")self.result_text_edit.setReadOnly(True)self.result_text_edit.setWordWrapMode(True)  # 启用自动换行self.loading_label = QLabel("翻译中,请稍等...")self.loading_label.setStyleSheet("color: blue; font-size: 16px;")self.loading_label.setVisible(False)  # 默认隐藏# 左侧布局(语言选择和输入框)left_layout = QVBoxLayout()left_layout.addWidget(self.lang_type_combobox)left_layout.addWidget(self.input_text)left_layout.addWidget(self.translate_button)left_layout.addWidget(self.loading_label)# 右侧布局(翻译结果显示)right_layout = QVBoxLayout()right_layout.addWidget(self.result_text_edit)# 创建 QSplitter 用于调整左右两侧宽度splitter = QSplitter(Qt.Horizontal)left_widget = QWidget()left_widget.setLayout(left_layout)right_widget = QWidget()right_widget.setLayout(right_layout)splitter.addWidget(left_widget)splitter.addWidget(right_widget)# 设置布局main_layout = QVBoxLayout()main_layout.addWidget(splitter)container = QWidget()container.setLayout(main_layout)self.setCentralWidget(container)# 连接事件self.translate_button.clicked.connect(self.translate_text)def translate_text(self):keyword = self.input_text.toPlainText().strip()if not keyword:self.result_text_edit.setText("请输入需要翻译的内容!")returnlang_type = "en" if self.lang_type_combobox.currentText() == "英 - 中" else "zh"self.loading_label.setVisible(True)self.result_text_edit.clear()  # 清空结果# 启动翻译线程self.translate_thread = TranslateThread(keyword, lang_type)self.translate_thread.result_signal.connect(self.update_result)self.translate_thread.error_signal.connect(self.update_error)self.translate_thread.start()def update_result(self, result):self.loading_label.setVisible(False)self.result_text_edit.setText(result)def update_error(self, error_message):self.loading_label.setVisible(False)self.result_text_edit.setText(error_message)if __name__ == '__main__':qt_app = QApplication(sys.argv)window = DesktopApp()window.show()sys.exit(qt_app.exec_())

python 版本:Python 3.8.20

安装打包依赖

pip install pyinstaller==6.0   

打包命令:

 pyinstaller --onefile --windowed main.py 

打包后的文件在dist 文件夹里
在这里插入图片描述
运行此项目要有python编程基础!!!

代码内置的 翻译大模型 不保证 翻译的准确性。
内置翻译大模型 支持:
中文翻译英文
英文翻译中文

大模型和 源码地址如下:
https://wwwoop.com/home/Index/projectInfo?goodsId=42&typeParam=2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501826.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3GUI--智慧交通监控与管理系统 By:PyQt5

文章目录 一.前言二.预览三.软件组成&技术难点1.软件组成结构2.技术难点3.项目结构 四.总结 大小:35.5 M,软件安装包放在了这里! 一.前言 博主高产,本次给大家带来一款我自己使…

JavaVue-Get请求 数组参数(qs格式化前端数据)

前言 现在管理系统,像若依,表格查询一般会用Get请求,把页面的查询条件传递给后台。其中大部分页面会有日期时间范围查询这时候,为了解决请求参数中的数组文件,前台就会在请求前拦截参数中的日期数组数据,然…

Vue2/Vue3使用DataV

Vue2 注意vue2与3安装DataV命令命令是不同的Vue3 DataV - Vue3 官网地址 注意vue2与3安装DataV命令命令是不同的 vue3vite 与 Vue3webpack 对应安装也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…

RocketMQ消费者如何消费消息以及ack

1.前言 此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂 这篇文章紧挨着上一篇博客来进行编写,有些不清楚的可以看下上一篇博客: https://blog.csdn.net/u013127325/article/details/144934073 2.broker是如何…

高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换

1. 无穷小比较 1. 本质:就是函数的极限趋于0时的速度,谁快谁慢的问题。 2. 定义:若是在同一自变量的变化过程中的无穷小,且,则: ①:若,则称是比的高阶无穷小,记作&…

django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程

django后端环境介绍: Python 3.10.14 pip install django-cors-headers4.4.0 Django5.0.6 django-cors-headers4.4.0 djangorestframework3.15.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 总环境如下: Package Version -…

Kafka为什么快(高性能的原因)

我们知道,Kafka 是基于磁盘存储的,但它却又具有高性能、高吞吐、低延时等特点,吞吐量可达几十上百万。那么 Kafka 这么快的原因是什么呢? Kafka 高性能主要取决于以下几方面: (1)消息批处理压缩…

Luma AI 简单几步生成视频

简单几步生成视频 登录我们的 AceDataPlatform 网站,按照下图所示即可生成高质量的视频,同时,我们也提供了简单易用的 API 方便集成调用,可以查看 Luma API了解详情 技术介绍 我们使用了 Luma 的技术,实现了上面的图…

Postman[7] 内置动态参数及自定义的动态参数

postman 内置动态参数和自定义的动态参数 1.内置动态参数 格式:{{$参数名}} 1.1时间戳 {{$timestamp}} //生成当前时间的时间戳 1.2随机整数 {{$randomint}} //生成0-1000之间的随机数 1.3GUID字符串 {{$guid}} //生成随机GUID字符串 2.自定义动态参数 格式…

Excel VBA 自动填充空白并合并相同值的解决方案

文章目录 Excel VBA: 自动填充空白并合并相同值的解决方案问题背景解决方案1. VBA代码实现2. 代码说明3. 使用方法4. 注意事项 扩展优化总结 Excel VBA: 自动填充空白并合并相同值的解决方案 问题背景 在Excel中经常会遇到这样的数据处理需求:一列数据中存在多个空…

STM32-笔记32-ESP8266作为服务端

esp8266作为服务器的时候,这时候网络助手以客户端的模式连接到esp8266,其中IP地址写的是esp8266作为服务器时的IP地址,可以使用ATCIFSR查询esp8266的ip地址,端口号默认写333。 当esp8266作为服务器的时候,需要完成哪些…

JavaScript性能

随着应用规模的增长,JavaScript 性能的优化变得尤为重要。这篇文章将分享 10 个实用的优化技巧,帮助开发者提升前端性能。 减少 DOM 操作 操作 DOM 是性能瓶颈。将多个操作合并到一个操作中,或者使用虚拟 DOM(如 React&#xff…

组网实训实现

小型单元网络实现 IP划分: 外网:172.1.1.0/24 172.1.2.0/24 内网:基于192.168.3.0/24的子网划分 综合办公楼:192.168.3.00 000000 /26(192.168.3.0-192.168.3.63) 综合一楼:192.168.3.0000 0000 /28&…

GIT 企业级开发学习 1_基本操作

本节主要命令: git init ls 不能列出 .git ls -a 列出 .git 创建本地仓库 1. 初始化 Git 仓库 git init • 初始化一个新的 Git 仓库,在当前目录下生成一个 .git 隐藏文件夹,用于存储版本控制信息。 2. 查看隐藏文件 ls -a • 使用 ls …

Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询

作者:来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…

《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记

1.LPI(Locality-specific Peripheral Interrupts)是一种基于消息的中断(Message Signaled Interrupt,MSI),由中断翻译服务(ITS)提供翻译。这是因为LPI的设计目标是为系统中大量的设备提供高效的中断管理&am…

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念,所以直接整理可能用到的东西。 sd简单的说…

性能测试03|JMeter:断言、关联、web脚本录制

目录 一、断言 1、响应断言 2、json断言 3、持续时间断言 二、关联 1、正则表达式介绍 2、正则表达式提取器 3、Xpath提取器 4、JSON提取器 5、JMeter属性 三、web脚本录制 一、断言 定义:让程序自动判断实际的返回结果是否与预期结果保持一致 自动校验…

GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程20241231

GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程 快速导航 引言Fork 与 Clone 概念对比完整开发流程Pull Request 最佳实践常见问题与解决方案最佳实践建议实战案例 引言 在开发者的协作世界中,GitHub 就像一座桥梁,连…

『 Linux 』高级IO (三) - Epoll模型的封装与EpollEchoServer服务器

文章目录 前情提要Epoll 的封装Epoll封装完整代码(供参考) Epoll Echo ServerEpoll Echo Server 测试及完整代码 前情提要 在上一篇博客『 Linux 』高级IO (二) - 多路转接介绍并完成了两种多路转接方案的介绍以及对应多路转接方案代码的编写,分别为SelectServer服务器与PollSe…