2分钟将LMU(GPT)接入到企业微信

2分钟将LMU(GPT)接入到企业微信
Photo by Andrew Neel / Unsplash

本方案依赖第三方云服务器,你也可以基于接口其中的NodeJS代码在自己本地服务器的部署。

接入条件

  1. 有企业微信管理权限
  2. 有LMU AI开放平台的账号:点击注册
  3. 你需要一个NodeJS环境的服务器,下面用Laf云服务演示。

接入具体方法如下:

第一步

点击打开LMU AI 开放平台,点击 “免费开始”,如下图:

img

2. 注册登录后,如下图获取 AppIdAPI 密钥

  • 第一步点击左侧 “应用”
  • 第二步点击 “+” 号
  • 第三步选择 “API”,此时可以获得下面对 AppId
  • 第四部选择 “API密钥”,选择“新建密钥” 并且复制出来。

3. 将获得的 API密钥AppId准备好后面用。

第二步

  1. 进入企业微信管理后台-“我的企业”页面底部,记录这里的企业ID为:WXWORK_CORPID
Alt text

2. 进入应用管理页面,点击【创建应用】, 填写应用信息后点击【创建应用】,如果已经有现成的应用,可以跳过此步骤。

Alt text
Alt text

3. 点击刚刚创建好的应用,进入应用详情页面。记录这里的 AgentIdSecret(需要点击获取按钮,在企业微信聊天窗口里面获取),分别为WXWORK_AGENTIDWXWORK_CORPSECRET

Alt text
Alt text

4. 设置企业微信信息接受

Alt text

点击【设置API】进入API接收消息页面,点一下两个【随机获取】按钮,它会自动生成一个Token和EncodingAESKey,我们分别记为WXWORK_TOKENWXWORK_AESKEY

⚠️ 注意: 不要关掉这个页面,Laf服务器侧配置完毕后我们再来填写顶部的这个URL

第三步

  1. 注册Laf 云的账号,进入我的应用控制面板。
  2. 【新建】一个应用
Alt text

输入应用名称,选择最低配置Lite服务器

Alt text

3. 点击【开发】进行开发配置。

Alt text

如下图,点击 + 号,搜索 xml2js@wecom/crypto 并添加。

Alt text

4. 点击【函数列表】的 + 号,创建一个云函数 chatgpt(不可改名),如图取消所有请求方法,填写下面的代码并发布。

Alt text

import cloud from '@lafjs/cloud'

export async function sendGptMessage(message) {
  // console.log('send gpt message', message)
  const res = await cloud.fetch({
    url: 'https://ai.fulitimes.com/api/openapi/chat/chat',
    method: 'POST',
    headers: {
      apikey: process.env.FASTGPT_APIKEY
    },
    data: {
      "modelId": process.env.FASTGPT_MODEL_ID,
      "isStream": false,
      "prompts": [
        {
          "obj": "Human",
          "value": message
        },
      ]
    },
    timeout: 60000 // 设置请求超时时间为60s
  })
  // console.log('send gpt message result', res?.data)
  return res.data?.data
}


5. 点击【函数列表】的 + 号,创建一个云函数 wxwork(不可改名),如图取消所有请求方法,填写下面的代码并发布。

Alt text

import cloud from '@lafjs/cloud'

export async function getToken() {
  const cache = cloud.shared.get('access-token')

  if (cache && cache.expires >= Date.now()) return cache.token;
  // console.log('start to get token of', process.env.WXWORK_CORPID)

  const res = await cloud.fetch({
    url: 'https://qyapi.weixin.qq.com/cgi-bin/gettoken',
    method: 'get',
    timeout: 60000, // 设置请求超时时间为60s
    params: {
      corpid: process.env.WXWORK_CORPID,
      corpsecret: process.env.WXWORK_CORPSECRET,
    }
  })
  const token = res.data.access_token
  cloud.shared.set('access-token', { token, expires: Date.now() + res.data.expires_in * 1000 })
  return token
}

export async function sendMessage(message, user) {
  // console.log('send messagge', user, message)
  const res = await cloud.fetch({
    url: 'https://qyapi.weixin.qq.com/cgi-bin/message/send',
    method: 'POST',
    timeout: 60000, // 设置请求超时时间为60s
    params: {
      access_token: await getToken()
    },
    data: {
      "touser": user,
      "msgtype": "text",
      "agentid": process.env.WXWORK_AGENTID,
      "text": {
        "content": message
      },
      "safe": 0,
      "enable_id_trans": 0,
      "enable_duplicate_check": 0,
      "duplicate_check_interval": 1800
    }
  })
  // console.log('send message result', res.data)
}


6. 点击【函数列表】的 + 号,创建一个云函数 wxwork-gpt-api(名字可以自定义),保留POSTGET,填写下面的代码并发布。

Alt text
import cloud from '@lafjs/cloud'
import { decrypt, getSignature } from '@wecom/crypto';
import { sendMessage } from '@/wxwork'
import { sendGptMessage } from '@/chatgpt'
import xml2js from 'xml2js';

export default async function (ctx: FunctionContext) {
  const { query } = ctx;
  const { msg_signature, timestamp, nonce, echostr } = query;
  const token = process.env.WXWORK_TOKEN;
  const key = process.env.WXWORK_AESKEY;
  console.log('start to invoke wxwork-gpt-api')

  // 签名验证专用
  if (ctx.method === 'GET') {
    const signature = getSignature(token, timestamp, nonce, echostr);
    if (signature !== msg_signature) {
      return { message: '签名验证失败', code: 401 }
    }
    const { message } = decrypt(key, echostr);
    return message
  }

  console.log("ctx.params:", ctx)

  const payload = ctx.body.xml;
  const encrypt = payload.encrypt[0];
  const signature = getSignature(token, timestamp, nonce, encrypt);
  if (signature !== msg_signature) {
    return { message: '签名验证失败', code: 401 }
  }
  //ctx.response.sendStatus(200);
  const { message } = decrypt(key, encrypt);
  const {
    xml
  } = await xml2js.parseStringPromise(message)
  // 由于GPT API耗时较久,这里提前返回,防止企业微信超时重试,后续再手动调用发消息接口
  ctx.response.sendStatus(200);
  await asyncSendMessage(xml)
  return { message: true, code: 0 }
}


async function asyncSendMessage(xml) {
  if (xml.MsgType[0] !== 'text') return;
  // sendMessage('请稍等...', xml.FromUserName[0])
  try {
    const result = await sendGptMessage(xml.Content[0])
    await sendMessage(result, xml.FromUserName[0])
  }
  catch (e) {
    console.log(e, e.config)
    sendMessage('接口请求失败,请联系管理员查看错误信息', xml.FromUserName[0])
  }
}

7. 复制 wxwork-gpt-api (可能是你自定义的函数名称)这个云函数的调用地址,将它填写到企业微信管理后台【API接收消息】页面中的URL中,并保存上述信息。

Alt text
Alt text

8. 点击左下角设置,选择环境变量,将刚刚收集的

SERVER_SECRET=""
WXWORK_TOKEN=""
WXWORK_AESKEY=""
WXWORK_CORPID=""
WXWORK_AGENTID=""
WXWORK_CORPSECRET=""
FASTGPT_APIKEY=""
FASTGPT_MODEL_ID=""

填入,并点击更新按钮。

Alt text

9. 将服务器IP添加到企业微信的白名单中。

Alt text

这是截止本文发布,laf的白名单:

112.124.8.17;112.124.9.194;112.124.9.83;114.55.177.246;114.55.179.67;120.26.161.248;120.26.163.28;120.27.246.172;47.97.22.68;47.97.5.237

你也可以通过下面方式获取Laf 的最新 IP 池

  • Windows 可在 CMD 中执行 nslookup laf.run
  • Mac 可在终端中执行 nslookup laf.run

结束

以上是基于Laf云服务器的 NodeJs 框架实现的,你也可以参考上面NodeJs代码或者LMU的接口文档,在自己的服务器上实现接入。

到此就完成了所有的配置,就可以在企业微信中和GPT或者你的知识库对话了。

Alt text

Read more

DeepSeek 服务器繁忙解决方案:使用 LMU.AI DeepSeek-R1

DeepSeek 服务器繁忙解决方案:使用 LMU.AI DeepSeek-R1

目前国内最好的大模型DeepSeek上线后,在各大信息渠道刷屏,大家都在尝试用DeepSeek,这导致DeepSeek的官网因为负载过大,这也导致了DeepSeek提问一句后,就会平凡出现"服务器繁忙,请稍后再试。", 如何解决DeepSeek的“服务器繁忙,请稍后再试。”?, DeepSeek 服务器繁忙的常见解决方案 方法一:在DeepSeek官网上,等一会再试,等待时间和时间段有关,访问高峰期等待时间比较长。 方法二【急用】:通过 LMU.AI 的DeepSeek-R1。 LMU.AI 提供国内可直接使用的 DeepSeek 服务,技术门槛较低,适合所有用户。使用步骤如下: 1.完成注册:,或者它的网址:“https://lmu.ai”、“https://fulitimes.com/”访问官网,然后如图点击“免费试用” 访问LMU.AI 官网(网址:

深度解析Stable Diffusion AI绘画优化技巧:参数设置与创作流程全攻略

深度解析Stable Diffusion AI绘画优化技巧:参数设置与创作流程全攻略

AI绘画深层解析与优化提示 AI绘画通过过程进行的是一种「注意力调整」过程,从随机噪声图像入手,逐步实现对Prompt提示词的视觉解析和调整。以下是具体模块解释和优化提示: 一、重要参数解析 1. Sampling steps—重要性和最佳设置 Sampling Steps用于指定图像从随机图像向Prompt提示词目标的调整步数。步数设置至关重要: * 步数过少: 绘画结果过于粗糙,细节表现力不足。 * 步数过多: 每步调整更精确,但生成图像所需时间明显增加,且收益递减。 * 常用参考值: 20至30步已足够实现清晰且细节丰富的图像,大部分采样器超过50步意义不大。 2. CFG Scale — Prompt的权重 Prompt权重决定图像与提示词的匹配度,权重分为单提示词权重,和全部提示词的权重。全部权重设置过高可能导致色彩过饱和并降低图像质量。权重的选择需要根据实际需求进行调整,以下是一个具体的例子: * 案例分析: 如果您希望生成一张“阳光下的樱花树”图像,可以尝试以下提示词设置: 1. Prompt词例: "cherry blossom tree,

国内如何使用GPT4o

国内如何使用GPT4o

因为各种原因,国内无法直接使用OpenAI的ChatGPT-4o 。许多人对此感到困惑:既然GPT-4o在全球范围内备受欢迎,为什么在国内无法直接访问?理由有两个,第一不受监管所以管理部门不让。第二技术竞争,OpenAI不给国内开放。本文将介绍两种使用GPT-4o的方法,帮助用户顺利体验这款先进的AI技术。 使用GPT-4o的两种方法 方法一【较难】: 通过可靠合规的VPN访问OpenAI的官方来使用GPT-4o。这种方式技术门槛较高,通常适合对网络工具有一定了解的用户。在国内,选择合规的VPN服务提供商较为困难,因为许多VPN服务不被政策允许;而对于技术人员而言,可以尝试自建VPN或代理服务。 * 风险:一些VPN服务不符合政策要求,存在被封禁或使用不稳定的可能性。 * 成本:优质的VPN服务通常需要额外费用,而自建VPN虽然可以节省费用,但技术操作较复杂,普通用户没法使用。 综上,通过VPN访问GPT-4o适合少数具备网络技术的用户,但对大多数用户而言,这种方式并不便捷。 方法一: 使用LMU.AI的GPT-40服务 LMU.AI是一家国内提供GPT-4

国内如何使用Google的最新Gemini2

国内如何使用Google的最新Gemini2

众所周知国内用户是无法使用 Google搜索和Google 最新的 AI 工具 Gemini2 。若想体验Google 的 Gemini2 AI,目前有以下两种方法: 方法一【复杂】: 使用Gemini2官网。 1. 假如你会“魔法”,你可以直接打开Gemini官网,在左上角选择“2.0 Flash Experimental”模型,这就是最新的Gemini2,如图: 但此方法的前提是需要使用“魔法”(俗称 VPN网络代理服务)。然而对于大多数人来说,找到合规的 VPN 提供商较为困难;而会技术用户可能会自建代理服务,然而这种方式对普通人而言几乎不可行。 方法二【简单】:通过 LMU.AI 的Gemini2服务。 这是最简单的方法。LMU.AI 提供国内可直接使用的 Gemini 服务,技术门槛较低,适合所有用户。