最近ChatGPT
那么ChatGPT
1. 效果展示
  • 连续对话

  • 手动输入

2. 云函数实现

我们仍然使用Laf云平台来实现,如何注册Laf和安装依赖,见上篇文章 使用Laf云平台,两步将ChatGPT接入微信公众号(含代码)

  • 创建Siri云函数

创建云函数步骤

// siri.js
// 引入必要的库
import cloud from &39;@lafjs/cloud&39;;
const { v4: uuidv4 } = require(&39;uuid&39;);
const axios = require(&39;axios&39;);

// 创建数据库连接
const db = cloud.database();
const ChatTable = db.collection(&39;siri&39;)


// 设置key和模型
const OPENAI_KEY = process.env.OPENAI_KEY || &34;YOUR API-KEY&34;;
const OPENAI_MODEL = process.env.MODEL || &34;gpt-3.5-turbo&34;;
const MAX_MESSAGES_PER_CHAT = 40;


export async function main(params, context) {
  console.log(&39;siri入参:&39;, params);
  const { question, cid } = params.body;

  // 创建一个id
  const chatId = cid ? cid : uuidv4();

  // 保存用户问题
  await ChatTable.add({ chatId, role: &39;user&39;, content: question });

  // 获取历史信息
  const chats = await ChatTable
    .where({ chatId })
    .orderBy(&34;createdAt&34;, &34;desc&34;).limit(MAX_MESSAGES_PER_CHAT).get();

  // 组装问题prompt
  const messages = [
    { role: &39;system&39;, content: &39;You are a helpful assistant.&39; },
    ...chats.data.map(one => ({ role: one.role, content: one.content })),
  ];

  const data = JSON.stringify({
    model: OPENAI_MODEL,
    messages: messages
  });

  const config: any = {
    method: &39;post&39;,
    maxBodyLength: Infinity,
    url: &39;https://api.openai.com/v1/chat/completions&39;,
    headers: {
      Authorization: `Bearer ${OPENAI_KEY}`,
      &34;Content-Type&34;: &34;application/json&34;,
    },
    data: data,
    timeout: 50000
  };

  try {
    // 发送请求
    const completion = await axios(config);

    const responseMessage = completion.data.choices[0].message;

    // 保存返回结果
    await ChatTable.add({ chatId, ...responseMessage });

    // 返回结果
    return { reply: responseMessage.content, cid: chatId };

  } catch (error) {
    // 打印错误日志
    console.log(&39;error&39;, error.response || error);


    let errorMessage;

    // 处理返回报错信息
    if (error.response) {
      const { status, statusText, data } = error.response;

      if (status === 401) {
        errorMessage = &39;Unauthorized: Invalid OpenAI API key, please check your API key in the AirCode Environments tab.&39;;
      } else if (data.error && data.error.message) {
        errorMessage = data.error.message;
      } else {
        errorMessage = `Request failed with status code ${status}: ${statusText}`;
      }
    } else if (error.request) {
      errorMessage = &39;No response received from the server&39;;
    } else if (error.code === &39;ENOTFOUND&39; || error.code === &39;ECONNREFUSED&39;) {
      errorMessage = `Network error: ${error.message}`;
    } else {
      errorMessage = `Request setup error: ${error.message}`;
    }
    return { error: errorMessage };
  }
};

最新代码可见:https://github.com/husanr/siri_gpt_laf

3. 添加快捷指令
获取捷径添加快捷指令

  • 添加过之后,在快捷指令中找到刚添加打开机器人快捷指令,点击右上角三个点进入编辑页面,然后把上边发布的Siri云函数的地址复制粘贴到文本的位置,然后点击完成。

嘿 Siri,打开机器人

大功告成!

关注我的公众号,更多精彩内容等你来看!