旧手机部署LLM,作为服务端给其他App(萌译)翻译,Galgame神器
·
MNN Chat
首先安装MNN Chat :
MNN 项目地址
README_CN
在市场下载要跑的模型,我这边实测4B的模型效果不错

在设置里开启API服务

启动模型后右上角可以设置API参数

要给其他设备调用的话地址需设成自动获取,自用的话可关闭验证

此时已经可以作为LLM服务访问了
如
192.168.1.160:10000/v1
192.168.1.160:10000/v1/chat/completions
萌译
App 萌译 可以选择区域截屏OCR翻译,其中OCR可调用本地模型,翻译API除了调用大厂API,也能调用自定义API
官网:https://www.moetranslate.top/
官方教程:自定义文本API
在App中配置自定义API参数:

由于萌译接受的json接口结构比较简单,因此可再在部署模型的手机运行脚本转发,见下一节:
ZeroTermux
我这里使用ZeroTermux跑脚本进行转发
项目地址:https://github.com/hanxinhao000/ZeroTermux/
pkg install python
后创建转发脚本:
# 极简萌译LLM翻译中转服务
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import urllib.request
import socket
def get_ipv4():
try:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
return ip
except:
return "127.0.0.1"
llm_url = "{}:8080".format(get_ipv4())
# 本地LLM接口地址
LLM_API = "http://{}/v1/chat/completions".format(llm_url)
class TranslateHandler(BaseHTTPRequestHandler):
# 关闭日志输出
def log_message(self, format, *args):
return
def do_POST(self):
# 1. 接收萌译发来的请求
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length).decode('utf-8')
data = json.loads(post_data)
text = data.get("text", "")
source = data.get("source", "ja")
target = data.get("target", "zh-CN")
# 2. 构造翻译Prompt(强制LLM只输出纯翻译结果)
# prompt = f"请将{source}语言翻译成{target}语言,此为OCR识别生成,若有识别错误请自行修正和分段,直接输出翻译结果,不要添加任何解释、标点、额外文字:{text}"
prompt = f"请将如下语言翻译成简体中文,此为OCR识别生成,若有识别错误请自行修正和分段,直接输出翻译结果,不要添加任何解释、标点、额外文字:{text}"
# 3. 转发请求给本地LLM
llm_data = json.dumps({
"model": "qwen",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.1,
"stream": False
}).encode('utf-8')
req = urllib.request.Request(LLM_API, data=llm_data, headers={"Content-Type": "application/json"})
with urllib.request.urlopen(req) as f:
llm_response = json.loads(f.read().decode('utf-8'))
# 4. 提取翻译结果,返回单层JSON(适配萌译)
result = llm_response["choices"][0]["message"]["content"].strip()
# 返回萌译支持的单层JSON
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps({"result": result}).encode('utf-8'))
# 启动服务(端口8080,电脑IP:192.168.1.88)
if __name__ == '__main__':
print(llm_url)
server = HTTPServer(('0.0.0.0', 8080), TranslateHandler)
print("萌译翻译中转服务已启动")
server.serve_forever()
跑起模型后,同时跑脚本进行转发

效果
此时运行的萌译即可调用部署模型的手机进行翻译

要更好的翻译效果可以试试腾讯的混元MT模型,官方MNN只有7B的版本,抱脸上有1.8B的版本,要导入本地模型,见下一节
第三方模型
要加载第三方模型,可以试试 Tiggy-Chan 大佬编译的版本
项目地址:gemma4-mnn-android
要导入模型需要adb调试:
adb shell mkdir -p /data/local/tmp/mnn_models && adb push ${model_path} /data/local/tmp/mnn_models/
如 /data/local/tmp/mnn_models/Tencent-HY-MT1.5-1.8B-MNN
├── llm.mnn
├── llm.mnn.weight
├── tokenizer.txt
├── llm_config.json
└── config.json
放进去


更多推荐


所有评论(0)