🚀快速接入AI助手Claude API史上最简单教程

3,433 阅读8分钟

大纲

  • 介绍Claude
  • 使用Slack导入Claude
  • 通过npm调用slack的api

🤖 前言

Claude

Claude是Anthropic公司研究出来的下一代AI助手,其目标是训练有用、诚实和无害的AI系统。这种类型的智能助手可以帮助人们执行各种任务,并提供信息和建议。

Claude可以帮助完成多种用例,包括摘要、搜索、创意和协作写作、问答、编码等。早期客户报告称,Claude产生有害输出的可能性较小,更容易进行交流,且可调整性更强 - 因此您可以在更少的努力下获得所需的输出结果。Claude还可以根据个性、语气和行为接受指导。

image.png

以上就是官方的对Claude的简单描述,其实它与openai公司的ChatGPT有着竞争关系。至于两者谁更好用,其实就是在对比产品所使用模型的优劣。

优势:目前使用Claude不用需要搬梯子,直接就可以访问。

以下是在Slack中与🤖Claude的对话:

image.png

可以看出Claude对中文支持度也是不错的,与ChatGPT不相上下。

我们这里利用Slack这个软件内安装Claude应用,最终通过调用Slack API的方式,实现与Claude对话。这种方式不需要加入ClaudeAPI Waitlist。不需要经历任何的等待,就让每一个人都能拥有一个自己的私人AI助手。

比如接入了我的个人微信公众号:

image.png

下面我们必须立刻马上开始🐶。

🎬 注册Slack

目前市面上使用Claude的方式都是通过Slack接入,我们来了解一下Slack是啥:

Slack 是一个工作效率管理平台,让每个人都能够使用无代码自动化和 AI 功能,还可以无缝连接搜索和知识共享,并确保团队保持联系和参与。在世界各地,Slack 不仅受到公司的信任,同时也是人们偏好使用的平台。

下面是注册地址,国内的网络可能会比较慢。我们点击链接进入注册:

注册地址:slack.com/get-started…

注意!!!这里强烈建议用谷歌邮箱去注册,不然后续会出现各种各样的问题。导致无法使用Claude。

image.png

注册完成之后我们第一步需要创建一个工作区,其实这里类似我们国内的企业应用企业微信或者钉钉,一开始需要创建企业作为载体。

image.png

创建工作区成功后,我们点击侧边栏的“应用”,搜索:Claude。点击添加:

image.png

然后这里可能看到按钮是置灰的,我们点击下方的“了解更多”

image.png

之后页面就会跳到介绍页面,这里首先需要注意自己所在的地区,节点需要选择阿美丽卡(🇺🇸)

image.png

如果是香港等其他Claude不支持的国家,就会提示:“App unavailable”。

切换正确的地区之后点击 “Add to Slask”。然后点允许:

image.png

你就会在Slack的工作区中看到Claude已经被成功添加啦,但是目前我们是没办法跟他对话的。这里需要试用Slack的高级功能:“Slack Connect”,让我们继续往下走。

image.png

🔧 开通Slack Connect

在Slack的左侧栏找到-> 浏览 Slack -> Slack Connect。

image.png

然后点击创建频道:

image.png

点击:“开始免费试用”。这里不需要输入任何的信用卡等的信息,只需要一直点下一步。

image.png image.png

创建一个频道,名称可以随便填。

image.png

公共或者私人都行,继续下一步。

image.png

image.png

频道创建完成之后,我们接下来把Claude应用拉入到这个频道里:

image.png

这里选择刚刚创建的频道。

image.png

完成之后呢,我们进入频道“@”一下Claude,首次@会触发一个申请,点一下Agree即可。

image.png

之后,你就拥有一个跟ChatGPT一样聪明的人工智能AI助手啦。可以在Slack内通过@Claude的方式跟他进行对话:

image.png

到这里你就满足了?作为一个程序员,怎么能受这个Slack限制呢,我们要突破这些限制,实现通过API调用Claude。

这样就能在任何地方使用它,比如说接入微信、公众号、企业微信、网页、等等。以后万物AI的时代已经是指日可待啦。

🛠️ 通过API调用Claude

在以上的步骤中我们已经实现了在Slack中通过手动@Claude来实现对话。

现在我们就利用Slack提供的API服务,通过调用Slack API的方式来实现与Claude进行对话。

首先在浏览器登录Slack,然后打开下面的网址:

api.slack.com/

网页右上角的 Your apps 点击:“Create your first app”。

image.png

然后进入页面中心,点击:“Create an App”。

image.png

选择:“From scratch”。

image.png

这里填写好信息,点击“Create App”。

image.png

在跳转了页面之后,我们在左侧的导航栏找到【OAuth & Permissions】,然后在页面中间往下滑找到: 【User Token Scopes】

在这个【User Token Scoped】下添加以下的必要权限:

  • channels:history
  • channels:read
  • channels:write
  • groups:history
  • groups:read
  • groups:write
  • chat:write
  • im:history
  • im:write
  • mpim:history
  • mpim:write

一共11个权限,添加完成之后。回到顶部【OAuth Tokens for Your Workspace】栏,点击【Install to Workspace】,然后确认授权即可。

image.png

这里我们就拿到了App的Token啦,复制出来(后面有用)

这里拿到claudeID:

image.png

现在我们就收集到了以下的必要数据:

  • App Token
  • claude ID

最后一步,我们无需云服务器,只需要去Laf云函数网站中添加相应代码,什么?你居然不知道Laf是啥?

这里我介绍一下Laf

image.png

Laf是一个集函数、数据库、存储为一体的云开发平台。

有了Laf之后,我们无需购买昂贵的服务器,也不用了解服务器的运维知识,只要:创建,粘贴,发布。是的你没有听错!

只需要这简单的3步,我们就直接创建完毕了服务的接口。是不是很简单?心动不如行动,立马去免费注册创建一个能使用Claude的云函数吧。

laf.run/

注册成功之后,我们点击新建一个免费的云函数:

image.png

创建好之后,我们点击“开发”,进入云函数的编辑页面:

image.png

在左下角的 NPM依赖 栏中添加一个npm包:claude-api-slack,然后点击保存并重启。

image.png

现在开始正式添加云函数,点击左上角的函数列表右侧的添加按钮,函数名随便填,请求方法选择GET和POST,然后点击确定。

image.png

在中间的代码区域直接粘贴下方贴出的代码,注意把上面步骤收集到的【slack应用token】【Claude的ID】【频道名称】填入代码的对应几个空的变量中。

import cloud from '@lafjs/cloud'

export default async function (ctx: FunctionContext) {
  const { question, conversationId } = ctx.query
  return await askCluadeAPi(question, conversationId)
}

async function askCluadeAPi(question, conversationId) {
  // slack应用的token
  const token = '';
  // claude的ID
  const bot = '';
  // 注意,这里是频道名称,不是频道id,开头不用加#
  const chatId = 'channel_name';

  // 初始化claude
  const { Authenticator } = await import('claude-api-slack')

  // 通过缓存保存客户端,可以避免每次提问都是在新会话
  let claudeClient = cloud.shared.get('claudeClient')
  if (!claudeClient) {
    claudeClient = new Authenticator(token, bot)
    cloud.shared.set('claudeClient', claudeClient)
  }
  // 创建频道并返回房间ID:channel
  const channel = await claudeClient.newChannel(chatId)

  let result
  if (conversationId) {
    result = await claudeClient.sendMessage({
      text: question,
      channel,
      conversationId,
      onMessage: (originalMessage) => {
        console.log("loading", originalMessage)
      }
    })
  } else {
    result = await claudeClient.sendMessage({
      text: question,
      channel,
      onMessage: (originalMessage) => {
        // console.log("loading", originalMessage)
        console.log("loading", originalMessage)
      }
    })
  }
  console.log("success", result)
  return {
    code: 0,
    msg: result.text,
    conversationId: result.conversationId
  }
}

注意:chatId 这个变量的值是频道的名称,并不是频道的ID。

然后点击发布,最后我们测试一下这个云函数是否成功:在右侧的接口测试中 添加一个请求参数,参数名question,值可以随便填,点击运行。

运行结果里出现了类似接口的返回值,就说明成功啦。下图就是成功的例子:

image.png

然后我们在Slack中也可以看到这个调试信息:

image.png

最后我们在Laf的顶部拿到这个云函数的URL:

image.png

后续我们在其他的应用中,请求这个URL的时候传入questionconversationId参数即可实现上下文衔接功能。

这里Laf云函数的大概作用就比较明朗了。当我们请求这个云函数的URL,它就会通过调用Slack的API,可以自动帮我们@Claude并附上一些相关的信息,最后把Claude回复的值塞入响应信息中返回给我们。

总结

经过以上的几个步骤,我们学到了在Slack中导入Claude智能AI助手应用,然后试用Slack Connect服务,通过这个功能才能实现把Claude拉入到频道中,最后在Laf中调用Slack提供的API,来实现通过URL与Claude的对话功能。

全程无需购买云服务器,也不用了解运维的任何知识,可以说对于入门或者接触甚至接入各类新奇的AI应用来说,门槛是极其的低。

Laf其实就是一种serverless的产品,让开发者无需去了解服务器的相关知识,只需要专注于开发即可。

现在我们实现了接入Claude的API接口,接下来就是把它接入到我们的各类应用中,比如微信公众号、企业微信应用等等。

后面我会写一篇Claude接入到企业微信或者微信公众号等等各类应用的教程,麻烦请给个三连哈~,你们的支持就是我最大的创作动力。