我一直有个执念:能不能在手机上跑 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 会被杀掉。
解决:用 tmux 或 nohup
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 让手机变成了一个真正的开发环境,但受限于硬件性能,本地跑大模型还是不现实。
最佳实践是:手机做客户端,云端做计算。
如果你也想尝试,建议:
- 先从简单脚本开始
- 用 SSH 连接,输入更方便
- 善用 Termux:API 扩展功能
- 别指望本地跑大模型
下一篇聊聊 Python 项目移植 Android 的 4 种方案对比,看看哪种最适合你。