分类目录归档:编程

Apple Guardian(打字练习游戏)加Cursor/Trae使用体验

项目地址:https://vicalloy.github.io/letter-fall/

游戏地址:https://github.com/vicalloy/apple-guardian

小时候练打字的时候玩的最多的是小霸王上的一个空中掉落字母掉打字游戏。
最近看到很多宣传 Cursor 的帖子,另外字节也出了个类似的编辑器 Trae ,于是试着用 AI 编辑器将这个游戏复刻。

项目的大部分代码使用 Cursor 和 Trae 的 Agent 功能自动完成。就初步的体验而言,用自己不熟悉的开发框架写一些小东西 Cursor 这类的 AI 工具确实很好用,少了很多查资料的工作。部分功能反复打回依旧无法正确修改,这时候是需要手动介入。另外两个编辑器的推理速度都不算太理想,特别是 Trae 经常要等挺久。

就个人而言,写玩具 Cursor 和 Trae 很棒。大些的项目还是用 GitHub Copilot 之类的插件更可控一些。

bye 2024

忙碌的 2024,其中几个月的连续加班弄的身心俱疲,好在最终结果还不错,希望在 2025 能有所收获。

今年全马第一次跑进四小时,不过身体上的体验不太好,太累了。以后再跑全马应当真就为了体验氛围了。

今年尝试用 Tauri 写了两个小东西。由于有前端经验,使用 Tauri 实现界面还是比较舒服。Tauri 后端用的 Rust,也算说有实际的写一点 Rust。作为一个现代语言 Rust 有着比较现代化的工具链,使用体验还不错。Tauri 整体开发体验还不错,不过前端作为一个套壳浏览器,一些限制还是挺让人难受。两个项目由于各种原因,到现在都还是半成品。

相比自己用 Tauri 整的两个玩具项目。年末的时候,由于工作中要用到一个开源的 Rust 项目,算是真正有正经的写点 Rust 代码了。由于只是在已有的项目上做一些修修补补,没有用到太多 Rust 的特性。还是希望以后有机会用 Rust 从头构建一个有趣的项目。

Vim下Python(Poetry)环境的设置

近期迁移到了 Neovim 。在 Pyright 的加持下,vim的代码补全和错误校验功能已经很接近 IDE 了。在未正确配置 Python 环境的情况下打开 Python 项目,项目里一堆的告警让人很不舒服。

在 vim 中编辑 Python,重要的是 PYTHONPATH 的设置。正确设置 PYTHONPATH 后,Pyright 可以正确的查找到相关的依赖库。我目前的解决方案是使用 direnv

编辑 direnv 通用配置,添加 poetry 初始化函数。

vim $HOME/.direnvrc
layout_poetry() {
  if [[ ! -f pyproject.toml ]]; then
    log_error 'No pyproject.toml found.  Use `poetry new` or `poetry init` to create one first.'
    exit 2
  fi

  local VENV=$(dirname $(poetry run which python))
  export VIRTUAL_ENV=$(echo "$VENV" | rev | cut -d'/' -f2- | rev)
  export POETRY_ACTIVE=1
  PATH_add "$VENV"
}

在 python 项目中添加 direnv 设置

vim .envrc
# 进入 Poetry 环境
layout_poetry
# 设置 PYTHONPATH
export PYTHONPATH="`pwd`/vendor/Model1:`pwd`/vendor/Model2"

在设置好 direnv 后,在 CLI 下进入目录时将设置好环境变量。CLI 下进入对应的项目目录,然后启动 vim/neovim ,Pyright即可正确的找到相关依赖。

参考:

从Vim切换到Neovim

vim作者的离世,让vim的后续发展存在很大的不确定性。加上现在用的vim配置一直有些小问题,其中一些插件的活跃度不够,bug一直无法修复。

近期花了些时间把neovim配置好,从vim切换到neovim。

配置文件: https://github.com/vicalloy/dotfiles/blob/master/.config/nvim/init.lua

  1. 没有使用别人配置好的环境,完全自行配置。
    • 之前也热衷于使用流行的集成配置。实际下来发现不管多受欢迎的配置都会有些不符合自己喜欢的地方。而且一旦遇到问题,很难定位问题。而且现在的插件管理机制已经很完善了,自行配置的门槛低了很多。
    • 不少优秀的vim插件都转由lua实现,只能在Neovim中使用。
  2. GUI界面用的 Neovide 。用 Rust 实现的 Neovim 前端。

使用Docker在Orange Pi上LLM(使用GPU加速)

最初买 Orange Pi 5 的目的之一就是想跑一些 AI 应用。Orange Pi 5 虽带了 NPU,但这颗 NPU 实在太小众,除了官方的 Demo 就没法轻松把 NPU 用起来。近期看到有人用 RK3588 跑LLM,于是把吃灰已久的 Orange Pi 5 拿出来折腾。

Orange Pi 5 使用的是 RK3588 芯片,该芯片配备的 GPU 是 Mali-G610。在 Orange Pi 5 上跑 LLM 用的就是这颗 GPU 。

基本用法

LLM 模型通过 MLC LLM 项目加载运行。在 Orange Pi 5 上通过 OpenCL 实现 GPU 加速,因此要求系统支持 OpenCL 。Orange Pi 5 的官方 Linux 镜像已添加了 OpenCL 支持,因此不用再额外安装驱动。

如果 Orange Pi 5 上已经安装了 Docker 可以使用下面的命令把服务跑起来。7b-f16 的模型会用到 6.xG 的内存,如果你的系统只有4G内存可以试试 3b-f16 的模型。

# 更多镜像见 https://hub.docker.com/r/vicalloy/mlc-llm-rk3588/tags
docker run --rm -it --privileged \
    vicalloy/mlc-llm-rk3588:FlagAlpha-Llama2-Chinese-7b-Chat-q4f16_1

编译自己的Docker镜像

rock5-toolchain 项目中提供了 MLC LLMDockerfile ,可以通过修改 Dockerfile 里的 ARG MODEL 来打包不同的模型。

为了更方便的打包不同的模型,更为了白嫖 Github Actions 服务器,我参考 rock5-toolchain 项目写了自己的 Dockerfile。相比原始的 Dockerfile,我把TVM编译/G610驱动安装等步骤打包在镜像 vicalloy/mlc-llm-rk3588:base 预置 model 的镜像从该镜像继承。要预置不同的模型,只要将对应的模型复制到镜像就好。

对应项目地址:https://github.com/vicalloy/docker-images/tree/main/mlc-llm-rk3588

参考链接:

Magpie 股价价格提醒工具

项目地址:https://github.com/vicalloy/magpie/

股票工具。设置股票的止损点和营收点,在到达止损点或营收点时发起消息推送。提供一个简易点web服务器用于查看相关股票的当前价格。

注:

用法

编辑规则文件

提醒规则使用 Json 格式进行描述。编辑规则并保存为文件 rule.json 。

[
  {
    "stock_code": "sh000001",
    "stock_name": "上证指数",
    "base_price": 3200,  # 基准价格,用于计算涨幅
    "alarm_price_min": 3100,  # 止损点
    "alarm_price_max": 3400  # 营收点
  },
  {
    "stock_code": "sz000333",
    "stock_name": "美的",
    "base_price": 54,
    "alarm_percentage_min": 0.15,  # 止损点 base_price * (1 - alarm_percentage_min)
    "alarm_percentage_max": 0.15  # 营收点 base_price * (1 + alarm_percentage_max)
  },
]

启动 Web 服务器

docker run --rm \
    -v `pwd`/rules.json:/app/rules.json \
    -p 8000:8000 vicalloy/magpie:latest \
    python -m magpie server -r ./rules.json

在浏览器中访问网址 http://localhost:8000/ 。

检查股价

docker run --rm \
    -v `pwd`/rules.json:/app/rules.json \
    magpie:latest \
    python -m magpie check -r ./rules.json \
    --datasource qq \
    --bark-token $(bark-token) \
    --tg-token $(tg-token) \
    --tg-chat-id $(tg-chat-id)

可以通过设置 crontab 的方式定时执行股价的检查。

备注

10 9,10,11,12,13,14 * * * sudo docker run ....

谨慎的乐观的看 Modular 提出的 Mojo 语言

有了 faster-cpython 的前车之鉴,对 Mojo 谨慎的乐观。

宣称将成为 Python 的超集是 Mojo 相比 Codon 等项目最吸引人的一点。Codon类项目虽然宣称是Python的编译器,但实际上砍掉了 Python 所有的动态特性,几乎所有的 Python 库都无法正常使用。对我而言,如果用不了 Python 生态,那这和一个全新的语言又有什么区别。

如果 Mojo 真成为Python的超集,单就比 CPython 性能高出一大截的 Python 编译器就足够吸引人。但细看下来,“成为 Python 超集”可能只是一个美好的愿望,达成的可能性非常小。现在 Mojo 的完成度还非常低,除了支持 Python 风格的语法外,Python还差很远(连 Class 都不支持)。现在版本的 Mojo 支持导入 Python 模块,但导入的 Python 模块是以 Python 对象的方式运行。换句话说就是塞了个 CPython 解释器到 Mojo 里用来执行 Python 代码(是不是立马不高大上了)。

除去 Mojo 吹牛的部分(比如那个比 Python 快 3500 倍),对 Mojo 还是有所期待。Mojo 的创始人有着牛逼哄哄的履历(LLVM & Swift 的作者)。虽然不能完全兼容 Python ,但承诺后期会提供相关的迁移工具。如果 Mojo 的性能和开发体验确实不错,Python库的迁移成本不高,还是会有不少人会自发的将 Python 生态迁移到 Mojo 到。

注:

一个AI公司需要多少人

Stable DiffusionChatGPT 的大火,让沉寂已久的AI世界再次翻红。又开始有人在问,在AI越来越成熟的今天,程序员是否有必要去学算法,投身AI行业。在我看来对程序员而言AI带来的机会更多是如何利用AI带来的能力而不是去创造一个AI。

曾在AI公司待过一段时间,这段经历给我最大的感觉是: AI 行业是一个资本密集型产业,对普通程序员来说没太多的机会。AI的发展对普通程序员带来的最大变化是出现来一批很好用的 API ,可以实现一些以前实现不了的想法。另外就是如何利用新出现的一批AI工具提高自己的工作效率。

为什么不建议普通程序员进入AI行业

简单来说AI行业需要的专业算法人员非常少,且门槛非常高。非算法相关的人员,相对而言门槛又太低。

  1. 常规应用,通用模型已经很成熟了。对于 99.9%人根本不可能构建出一个比开源模型更好的模型。
  2. 模型的性能优化是个体力活,而且随着技术的发展,以后可能不需要手动的性能优化。
  3. 模型的调优需要大量的数据和硬件。数据清洗是和 AI 没关系的纯体力活。参数调优又需要大量的硬件,¥成本普通人(公司)根本承担不起(据说 ChatGPT 训练一次的成本就高达 1 千万美元)。

一个AI公司需要多少人

前面说到AI公司需要的人少,但具体少到什么程度可能会超乎很多人的想象。

OpenAI

OpenAIChatGPT 的母公司),仅2022年,就花费了约5.44亿美元。而与之对应的是”今年1月,OpenAI创始人透露公司员工人数为375人“。关键是这375人里包含了行政等支持人员及数据收集整理人员。

Midjourney

相比 OpenAI ,AI绘图领域的巨头 Midjourney 在人力方面更是做到了极致。Midjourney 总共只有11人:1创始人,1财务,1法务,8研发(其中4人为本科实习生)。

参考

ChatGPT和它的平替们

ChatGPTOpenAI 发布的对话式大型语言模型。它可以帮你写代码,翻译,论色文章等。我现在写英文写完后要都用Bing修正一遍语法错误(发现自己写的句子几乎全有语法错误)。只是在ChatGPT价格不算便宜,且国内使用困难重重。好在还有不少 ChatGPT 的平替可以使用。不过平替总归还是平替,和 ChatGPT 比起来还是有不少差距。

平台国外手机号,付费需申请试用国内直连中文支持备注
ChatGPT付费使用,功能最全,效果最好。
Bing由OpenAI提供技术。
效果最接近 ChatGPT 的最佳平替。
回答里有引用来源。
不会写代码。
Bard谷歌出品。
不会中文,效果不如 Bing 。
文心一言百度出品。
侧重中文,智能程度一般。
应当集成了 Stable Diffusion ,可以画画。
PoeQuora出品的AI 产品。提供多个AI 机器人聚合。目前可以通过Poe免费使用ChatGPT。

GitHub Copilot 平替

GitHub Copilot 可以算是编程界的 ChatGPT ,可根据上下文自动对程序进行补全。刚推出时可以免费试用,后转为订阅制。

平台免费备注
GitHub Copilot最早推出,效果最佳。
Codeium可用,但效果一般。
据称永久免费。
CodeWhisperer亚马逊出品。
注册账号需要绑定信用卡。
效果和 Codeium 差不多。