小程序直接调用 AI 能力和通过 `wx-server-sdk` 在云函数中调用 AI 能力

小程序直接调用 AI 能力和通过 wx-server-sdk 在云函数中调用 AI 能力,各有其特点和适用场景。以下是两者的对比:

1. 调用方式

  • 小程序直接调用

    • 方式:在小程序前端代码中直接调用云开发的 AI 能力,使用 wx.cloud.extend.AI
    • 代码示例
      // 初始化云开发环境
      wx.cloud.init({
        env: "<云开发环境ID>",
      });
      
      // 调用大模型生成文本
      const model = wx.cloud.extend.AI.createModel("deepseek");
      const systemPrompt = "请严格按照七言绝句或七言律诗的格律要求创作……";
      const userInput = "帮我写一首赞美玉龙雪山的诗";
      const res = await model.streamText({
        data: {
          model: "deepseek-r1",
          messages: [
            { role: "system", content: systemPrompt },
            { role: "user", content: userInput },
          ],
        },
      });
      for await (let str of res.textStream) {
        console.log(str);
      }
      
  • 通过 wx-server-sdk 在云函数中调用

    • 方式:在云函数中使用 wx-server-sdk 调用云开发的 AI 能力,然后通过小程序前端调用云函数。

    • 代码示例

      // 云函数代码
      const cloud = require('wx-server-sdk');
      cloud.init({
        env: cloud.DYNAMIC_CURRENT_ENV,
      });
      
      exports.main = async (event, context) => {
        const model = cloud.ai.createModel('deepseek');
        const systemPrompt = "请严格按照七言绝句或七言律诗的格律要求创作……";
        const userInput = event.userInput;
        const res = await model.streamText({
          data: {
            model: 'deepseek-r1',
            messages: [
              { role: 'system', content: systemPrompt },
              { role: 'user', content: userInput },
            ],
          },
        });
      
        let result = '';
        for await (let str of res.textStream) {
          result += str;
        }
      
        return {
          result: result,
        };
      };
      

      小程序前端调用云函数

      wx.cloud.callFunction({
        name: 'text-generation',
        data: {
          userInput: '帮我写一首赞美玉龙雪山的诗',
        },
        success: function(res) {
          console.log(res.result);
        },
        fail: console.error,
      });
      

2. 适用场景

  • 小程序直接调用

    • 优点
      • 简单快速:直接在小程序前端调用,代码简单,开发快速。
      • 低延迟:用户操作后立即调用,响应速度快。
    • 缺点
      • 安全性较低:AI 调用的逻辑和配置暴露在前端,可能被用户篡改或滥用。
      • 功能受限:只能实现简单的调用逻辑,无法进行复杂的数据处理或业务逻辑。
    • 适用场景
      • 简单场景:如简单的文本生成、智能对话等,不需要复杂逻辑处理。
      • 快速原型开发:快速验证功能,快速上线。
  • 通过 wx-server-sdk 在云函数中调用

    • 优点
      • 安全性高:AI 调用逻辑在服务器端处理,用户无法直接访问,安全性更高。
      • 功能强大:可以在云函数中进行复杂的数据处理、业务逻辑处理,实现更复杂的功能。
      • 可扩展性强:可以方便地扩展功能,如调用多个 AI 模型、处理用户数据等。
    • 缺点
      • 开发复杂:需要编写云函数代码,开发和部署相对复杂。
      • 延迟较高:需要通过网络调用云函数,响应时间可能较长。
    • 适用场景
      • 复杂场景:需要进行复杂逻辑处理,如多轮对话、数据处理等。
      • 安全性要求高:需要保护 AI 调用逻辑,防止用户篡改或滥用。
      • 扩展性强:需要在未来扩展功能,如调用多个 AI 模型、处理用户数据等。

3. 性能和成本

  • 小程序直接调用

    • 性能:响应速度快,用户操作后立即调用。
    • 成本:调用次数直接计入小程序的 AI 调用额度,成本相对较低。
  • 通过 wx-server-sdk 在云函数中调用

    • 性能:响应时间可能较长,因为需要通过网络调用云函数。
    • 成本:除了 AI 调用成本外,还需要考虑云函数的调用成本。

4. 总结

  • 小程序直接调用适用于简单、快速的场景,开发简单,响应速度快,但安全性较低,功能受限。
  • 通过 wx-server-sdk 在云函数中调用适用于复杂、安全性要求高的场景,功能强大,可扩展性强,但开发复杂,响应时间可能较长,成本较高。

根据具体需求选择合适的调用方式,可以更好地实现项目目标。

posted @ 2025-09-02 18:05  AI健康  阅读(41)  评论(0)    收藏  举报