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

MnnLlmChat-v5-release.apk

要导入模型需要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

Hunyuan-MT1.5-1.8B-MNN
中的

├── llm.mnn
├── llm.mnn.weight
├── tokenizer.txt
├── llm_config.json
└── config.json

放进去

在这里插入图片描述
在这里插入图片描述

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐