个人做一个微信小程序可以多便宜

118 阅读1分钟

小程序功能

识别用户上传的图片中的动物,给出识别结果,以及小百科

gh_dafde407d15e_258.jpg

项目目的

解答自己经常发出的 这是什么猫?这是什么狗?的疑问

成本清单

成本项费用说明
小程序认证个人 30/年淘宝有一些商家似乎可以把价格做更低
大模型按量收费刚性支出,目前模型的费用其实挺便宜的,比如通义千问
服务器0成本vercel,大模型服务转发,方便无发版调整prompt,保护调用key
长期图床0成本vercel,项目功能需要的配图等长期存储
短期图床0成本PicGo,用户上传的识别图片,临时存储
域名看域名后缀为了在国内能访问到vercel服务

当前预估总成本,大概100/年

简易流程

graph LR
小程序 -- 01.上传要识别图像 --> 短期图床
小程序 -- 02.提交识别请求 --> 接口服务
接口服务 -- 03.转发识别请求 --> 大模型

流程细节

vercel服务在国内可访问配置

juejin.cn/post/730119…

模型Stream返回

模型的返回在不开启Stream的等待时长是无法忍受的

接口服务

async function getQwenResult(res) {
  const completion = await openai.chat.completions.create({
    model: "qwen-vl-max",
    messages: [prompt提示词],
    stream: true,
  });

  res.setHeader("Content-Type", "text/plain; charset=utf-8");
  res.setHeader("Transfer-Encoding", "chunked");
  res.setHeader("Cache-Control", "no-cache");

  for await (const chunk of completion) {
    res.write(chunk.choices[0].delta.content);
  }

  res.end();
}

小程序

import { TextDecoder } from "text-encoding";
function getResult() {
    const req = wx.request({
      url: 请求地址,
      dataType: "其他",
      enableChunked: true,
    });

    req.onChunkReceived((res) => {
      const decoder = new TextDecoder();
      setResult((prev) => {
        return `${prev}${decoder.decode(res.data)}`;
      });
    });
  }

vercel oss存储

在vercel上部署的服务虽然在国内不能直接访问,但是oss存储没问题 github.com/vercel/stor…

接口安全

模型成本是按量收费,如果不想自己的token被人免费刷,可以加一个简单的接口请求校验

md5(${req.query.filename}${salt})

后续

功能迭代

成本转移

埋点分析

小程序运营