背景:
鉴于目前ChatGpt4 访问困难,同时对话token收费,一直在寻找同类替代品。而google的对话模型Claude目前bate版公测,趁着还没有收费,先白嫖一波。
环境准备:
一点魔法
一个google邮箱
slack账号,(用google邮箱注册就行)
准备步骤:
1、注册slack
打开https://slack.com/官网
使用谷歌账号注册
创建工作区间
按着人家官网的流程下一步就行。
2、使用claude
1) 访问这个地址 Claude in Slack | Anthropic
点击add to slack
一步一步流程往下走就行。
2)还有一种添加方法
访问 https://www.anthropic.com/index/claude-now-in-slack
添加应用,按着流程就行
在slack中工作区点击app,把claude添加进来
可以进行对话了,但有可能无法回复
解决办法如下:

一直按就可以,创建一个频道
在频道中@claude ,弹出授权,同意就可以进行对话了。
3、配置slack用户权限
访问 https://api.slack.com/methods
创建一个新项目
选择 From scratch
输入app名字和选择工作区间
创建成功后,点击 OAuth & Permissions
在 User Token Scopes 中点击Add an OAuth Scope
添加如下权限:- channels:history, channels:read, channels:write
- groups:history, groups:read, groups:write
- im:history, im:write,
- mpim:history, mpim:write
- chat:write
回到 OAuth Tokens for Your Workspace,点击install to Workpace
生成的 User OAuth Token 后续用来配置后端


记录好这三个token
4、 配置后端
1. 打开https://laf.run
2. 新建后开发应用
3. 在包管理器安装claude-api-slack
4. 创建函数send-claude
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
ctx.response.setHeader('Content-Type', 'application/octet-stream');
const { message, conversationId } = ctx.body
const question = message
return await askCluadeAPi(question, conversationId, ctx)
}
async function askCluadeAPi(question, conversationId, ctx) {
//用户授权token
const token = ''
//用户ID,在Cladue应用详情获取
const bot = ''
//频道名称
const chatId = ""
// 初始化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) => {
if (ctx.request.readableAborted) {
ctx.response.end()
}
console.log("loadingC", originalMessage)
ctx.response.write("⭐" + originalMessage.text);
}
})
} else {
result = await claudeClient.sendMessage({
text: question,
channel,
onMessage: (originalMessage) => {
console.log("loading", originalMessage)
if (ctx.request.readableAborted) {
ctx.response.end()
}
ctx.response.write("⭐" + originalMessage.text);
}
})
}
ctx.response.write("--!" + result.conversationId);
ctx.response.end()
console.log("success", result)
return {
code: 0,
msg: result.text,
conversationId: result.conversationId
}
}
发布就完成了
5、配置前端
在https://github.com/loveEight/claude下载源码
解压到文件夹
安装nodejs并配置环境变量
新建终端,输入npm i 安装项目依赖
网络原因,或者管理员权限,等安装问题,请自行解决。
修改请求地址,改为你自己的
输入npm run dev启动项目
可以在public修改头像,文件名不变就可以了
6、laf部署上线
在终端输入npm run build 进行打包
laf新建云存储save-claude

打开dist文件夹
先将图片上传
创建assets文件夹,把文件上传
点击部署

会得到一个域名,访问就可以进行对话了。
但是这里的对话,有可能没有上下文能力,猜测是因为访问的slack频道。

7、部署到自己的服务器上,通过api进行访问
import time
import slack
from flask import Flask,request
from flask_slack import Slack
token = ''
channel_id="" #频道 ID
app = Flask(__name__)
slack_app = Slack(app)
client = slack.WebClient(token=token)
yesterday = (time.time() - 24 * 60)
yesterday = str(yesterday).split('.')[0]
def get_history():
history = client.conversations_history(channel=channel_id, oldest=yesterday)
text = history['messages'][0]['text']
return text
@app.route('/',methods=['GET','POST'])
def wechat():
message = request.args.get("message", "")
# message="hello"
print(message)
# 发送到指定频道
client.chat_postMessage(channel=channel_id, text=message, as_user=True)
# 捕获最新的回答
text = get_history()
temp = ''
while True:
temp = get_history()
if temp != text and 'Typing' not in temp:
break
else:
time.sleep(1)
temp = temp.replace('\n\n', '\n')
print(temp)
return(temp)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=6324, debug=True)#开放xxxx端口
import引包就行,有可能需要一个slackclient包
测试结果如下:

直接访问的Claude app,具备上下文理解能力
8、部署到服务器
宝塔通过python控制面板,选择python启动方式,
开通端口,映射域名
至此,调用结束,可以接入到自己的app中了。
总结:
使用上感觉还是可以的,程序开发,文字理解等claude表现都不错,思维逻辑上可能有一些薄弱,无伤大雅。
参考:
2. https://github.com/loveEight/claude
3.保姆级教你搭建自己的Claude_哔哩哔哩_bilibili