旧手机部署LLM,作为服务端给其他App(萌译)翻译,Galgame神器
文章目录MNN Chat萌译ZeroTermux效果第三方模型MNN Chat首先安装MNN Chat MNN 项目地址README_CN在市场下载要跑的模型我这边实测4B的模型效果不错在设置里开启API服务启动模型后右上角可以设置API参数要给其他设备调用的话地址需设成自动获取自用的话可关闭验证此时已经可以作为LLM服务访问了如192.168.1.160:10000/v1192.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翻译中转服务fromhttp.serverimportHTTPServer,BaseHTTPRequestHandlerimportjsonimporturllib.requestimportsocketdefget_ipv4():try:withsocket.socket(socket.AF_INET,socket.SOCK_DGRAM)ass:s.connect((8.8.8.8,80))ips.getsockname()[0]returnipexcept:return127.0.0.1llm_url{}:8080.format(get_ipv4())# 本地LLM接口地址LLM_APIhttp://{}/v1/chat/completions.format(llm_url)classTranslateHandler(BaseHTTPRequestHandler):# 关闭日志输出deflog_message(self,format,*args):returndefdo_POST(self):# 1. 接收萌译发来的请求content_lengthint(self.headers[Content-Length])post_dataself.rfile.read(content_length).decode(utf-8)datajson.loads(post_data)textdata.get(text,)sourcedata.get(source,ja)targetdata.get(target,zh-CN)# 2. 构造翻译Prompt强制LLM只输出纯翻译结果# prompt f请将{source}语言翻译成{target}语言此为OCR识别生成若有识别错误请自行修正和分段直接输出翻译结果不要添加任何解释、标点、额外文字{text}promptf请将如下语言翻译成简体中文此为OCR识别生成若有识别错误请自行修正和分段直接输出翻译结果不要添加任何解释、标点、额外文字{text}# 3. 转发请求给本地LLMllm_datajson.dumps({model:qwen,messages:[{role:user,content:prompt}],temperature:0.1,stream:False}).encode(utf-8)requrllib.request.Request(LLM_API,datallm_data,headers{Content-Type:application/json})withurllib.request.urlopen(req)asf:llm_responsejson.loads(f.read().decode(utf-8))# 4. 提取翻译结果返回单层JSON适配萌译resultllm_response[choices][0][message][content].strip()# 返回萌译支持的单层JSONself.send_response(200)self.send_header(Content-Type,application/json)self.end_headers()self.wfile.write(json.dumps({result:result}).encode(utf-8))# 启动服务端口8080电脑IP192.168.1.88if__name____main__:print(llm_url)serverHTTPServer((0.0.0.0,8080),TranslateHandler)print(萌译翻译中转服务已启动)server.serve_forever()跑起模型后同时跑脚本进行转发效果此时运行的萌译即可调用部署模型的手机进行翻译要更好的翻译效果可以试试腾讯的混元MT模型官方MNN只有7B的版本抱脸上有1.8B的版本要导入本地模型见下一节第三方模型要加载第三方模型可以试试 Tiggy-Chan 大佬编译的版本项目地址gemma4-mnn-androidMnnLlmChat-v5-release.apk要导入模型需要adb调试adb shellmkdir-p/data/local/tmp/mnn_modelsadb push${model_path}/data/local/tmp/mnn_models/如/data/local/tmp/mnn_models/Tencent-HY-MT1.5-1.8B-MNN把 Hunyuan-MT1.5-1.8B-MNN中的├── llm.mnn ├── llm.mnn.weight ├── tokenizer.txt ├── llm_config.json └── config.json放进去