Termux:在手机上跑Python AI应用的真实体验

我一直有个执念:能不能在手机上跑 AI 助手?不是调用云端 API,而是本地运行。

上周末我终于折腾成功了,用 Termux 在手机上跑起了 Python AI 应用。体验嘛......有惊喜,也有坑。

什么是 Termux?

Termux 是 Android 上的一个终端模拟器,但它不只是个终端------它是一个完整的 Linux 环境。

装上 Termux,你可以在手机上:

  • 运行 Python、Node.js、Ruby
  • 安装 apt 包(是的,真正的 apt)
  • 用 pip 安装 Python 库
  • 甚至跑 PostgreSQL、Nginx

对于想在手机上搞开发的程序员来说,Termux 就是神器。

安装配置:从零开始

第一步:安装 Termux

从 F-Droid 下载(别从 Play Store 下,那个版本太老了):

https://f-droid.org/packages/com.termux/

第二步:换源

国内直接用官方源很慢,换成清华源:

bash 复制代码
# 在 Termux 里执行
termux-change-repo
# 选择 Single mirror,然后选 mirrors.tuna.tsinghua.edu.cn

第三步:更新包管理器

bash 复制代码
pkg update && pkg upgrade

第四步:安装 Python

bash 复制代码
pkg install python
pkg install python-numpy  # 如果需要 numpy

第五步:安装 pip 包

bash 复制代码
pip install requests
pip install openai
pip install litellm

到这里,基本的 Python 环境就有了。

跑个 AI 助手试试

我写了个简单的 AI 助手脚本:

python 复制代码
# ai_assistant.py
from openai import OpenAI

client = OpenAI(
    base_url="https://api.openai.com/v1",
    api_key="your-api-key"
)

def chat(message):
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": message}]
    )
    return response.choices[0].message.content

if __name__ == "__main__":
    while True:
        user_input = input("你: ")
        if user_input.lower() in ["exit", "quit"]:
            break
        reply = chat(user_input)
        print(f"AI: {reply}")

运行:

bash 复制代码
python ai_assistant.py

能跑!但是......每次请求都要等好几秒,体验一般。

性能实测:手机 vs 笔记本

我做了个简单测试,调用同一个 API 100 次:

设备 平均响应时间 成功率
小米 14 (Termux) 3.2s 98%
MacBook Pro M1 2.8s 100%

差距不大,主要是网络延迟。但如果是本地模型......

本地模型?想多了

我试过在 Termux 里跑 Ollama,结果:

复制代码
ollama run llama2
Error: cannot allocate memory

手机内存不够,而且 Termux 不支持 GPU 加速。本地大模型基本没戏。

但是!小模型可以跑:

bash 复制代码
pip install transformers
python 复制代码
from transformers import pipeline

# 用 CPU 跑小模型
classifier = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love Termux!")
print(result)  # [{'label': 'POSITIVE', 'score': 0.9998}]

能跑,但速度感人。一条文本分类要 2-3 秒。

Termux 的优势场景

虽然跑不了大模型,但 Termux 在这些场景很有用:

1. 轻量级脚本

python 复制代码
# 每天早上推送天气
import requests
import json

def get_weather(city):
    url = f"https://wttr.in/{city}?format=j1"
    resp = requests.get(url)
    data = json.loads(resp.text)
    return data["current_condition"][0]

# 用 Termux:Task 插件,可以在通知栏显示结果

2. 远程控制

python 复制代码
# 通过 SSH 连接到服务器
import paramiko

client = paramiko.SSHClient()
client.connect("my-server.com", username="user", password="pass")
stdin, stdout, stderr = client.exec_command("ls -la")
print(stdout.read().decode())

3. 数据处理

python 复制代码
import pandas as pd

# 处理 CSV 文件
df = pd.read_csv("data.csv")
result = df.groupby("category").sum()
result.to_csv("output.csv")

踩坑记录

坑1:pip 安装失败

有些包需要编译,Termux 缺少头文件。

解决:安装编译工具

bash 复制代码
pkg install clang python-dev

坑2:存储权限

Termux 默认只能访问自己的目录。

解决:

bash 复制代码
termux-setup-storage
# 授权后可以访问 /sdcard/

坑3:后台运行

手机锁屏后 Termux 会被杀掉。

解决:用 tmuxnohup

bash 复制代码
pkg install tmux
tmux new -s ai
python ai_assistant.py
# Ctrl+B, D 分离会话

坑4:输入法问题

中文输入在某些情况下会乱码。

解决:用外接键盘,或者用 SSH 从电脑连接手机。

Termux + AI 的最佳实践

经过一番折腾,我的结论是:

手机端 :跑轻量级脚本,做数据采集、API 调用、远程控制
云端:跑大模型,提供 API 服务

架构:

复制代码
手机 Termux <--HTTP--> 云端 AI 服务 <--LLM--> 大模型

这样既利用了手机的便携性,又不用担心性能问题。

实际项目:手机上的 AI 助手

我做了个简单的项目:

python 复制代码
# mobile_assistant.py
import requests
import json

class MobileAssistant:
    def __init__(self, api_base, api_key):
        self.api_base = api_base
        self.api_key = api_key
    
    def chat(self, message):
        """调用云端 AI"""
        resp = requests.post(
            f"{self.api_base}/v1/chat/completions",
            headers={"Authorization": f"Bearer {self.api_key}"},
            json={
                "model": "gpt-3.5-turbo",
                "messages": [{"role": "user", "content": message}]
            }
        )
        return resp.json()["choices"][0]["message"]["content"]
    
    def get_location(self):
        """获取手机位置(需要 Termux:API)"""
        resp = requests.get("http://localhost:8080/location")
        return resp.json()
    
    def send_notification(self, title, message):
        """发送通知"""
        requests.post("http://localhost:8080/notification", json={
            "title": title,
            "content": message
        })

# 使用
assistant = MobileAssistant("https://api.openai.com", "your-key")
reply = assistant.chat("今天天气怎么样?")
assistant.send_notification("AI 回复", reply)

配合 Termux:API 插件,可以获取位置、发送通知、读取通讯录等。

写在最后

Termux 让手机变成了一个真正的开发环境,但受限于硬件性能,本地跑大模型还是不现实。

最佳实践是:手机做客户端,云端做计算

如果你也想尝试,建议:

  1. 先从简单脚本开始
  2. 用 SSH 连接,输入更方便
  3. 善用 Termux:API 扩展功能
  4. 别指望本地跑大模型

下一篇聊聊 Python 项目移植 Android 的 4 种方案对比,看看哪种最适合你。

相关推荐
前端不太难4 分钟前
OpenClaw:AI 权限治理的核心问题
人工智能·状态模式
hans汉斯14 分钟前
《人工智能与机器人研究》期刊推介&征稿指南
人工智能·机器人
电商API&Tina19 分钟前
比价 / 选品专用:京东 + 淘宝 核心接口实战(可直接复制运行)
大数据·数据库·人工智能·python·json·音视频
love530love30 分钟前
Windows 开源项目部署评估与决策清单(完整版)
人工智能·windows·python·开源·github
HyperAI超神经31 分钟前
数据集汇总丨英伟达/OpenAI及多所科研机构开源推理数据集,覆盖数学/全景空间/Wiki问答/科研任务/视觉常识等
人工智能·深度学习·机器学习·数据集·ai编程·llama·图像合成
今夕资源网33 分钟前
零基础 Python 环境搭建工具 一键安装 Python 环境自动配置 升级 pip、setuptools、wheel
开发语言·python·pip·环境变量·python环境变量·python自动安装
intcube37 分钟前
从“数”到“智”——智达方通EPM如何推动企业韧性增长与创新?
大数据·人工智能·全面预算管理·财务规划·商业智能
Flittly42 分钟前
【SpringAIAlibaba新手村系列】(3)ChatModel 与 ChatClient 的深度对比
java·人工智能·spring boot·spring
大厂观察员42 分钟前
AI日记:BERT 和 GPT 选型难题怎么破
大数据·人工智能
Derrick__11 小时前
Scrapling 爬取豆瓣电影Top250
开发语言·python·网络爬虫·豆瓣·scrapling