首先我們介紹一下今天的主角 Claude
Claude 是最近新開放的一款 AI 聊天機器人,是世界上最大的語言模型之一,比之前的一些模型如 GPT-3 要強大得多,因此 Claude 被認爲是 ChatGPT 最有力的競爭對手。Claude 的研發公司是專注人工智能安全和研究的初創公司 Anthropic,由前 OpenAI 員工共同創立的。今年 3 月份 Anthropic 獲得了谷歌 3 億美元的投資,谷歌也因此獲得其 10% 股份。
據官方介紹,Claude 的核心模型經由訓練,目標是變得有用、誠實和無害。此外 Claude 更能理解和接受自然語言,和它對話無需複雜的技巧,可以輕鬆得到詳細且易於理解的答案。
與 ChatGPT 等大型語言模型一樣,Claude 的應用場景非常廣泛,信息搜索、內容總結摘要、寫作協助、創意生成、問答、編程這些任務它都能輕鬆完成。目前 Claude 已經被應用在多個知名產品中,比如知識筆記工具 Notio AI 就是用 Claude 協助用戶進行智能寫作,國外問答社區 Quora 也在自己的 AI 聊天應用程序 Poe 中置入了 Claude。
劃重點:Claude 是免費的,至少目前是這樣
瞭解完後我們開始操作
第一步:註冊Slack
slack官網地址:https://slack.com/
註冊時儘量選擇使用 google 的 gmail 郵箱,後續操作的成功率高。不要使用 qq 等國產郵箱。
第二步:創建工作區
工作區是一個獨立的協作環境,每個工作區有自己的渠道(Channels)、成員、權限設置等。不同工作區之間彼此隔離,成員和資源不共享。
至此,工作區就創建好了!
第三步:添加Claude應用到工作區(這一步需要魔法)
打開 Slack-Claude 官方網址(請自備梯子): https://www.anthropic.com/claude-in-slack
然後授權添加 Claude 到 Slack。
如果出現以下界面,說明當前 ip 被封鎖了。請自行切換節點,嘗試使用全局代理,切換無痕瀏覽等方法。
換了個瀏覽器,果然好了。點擊允許,出現 Success 就成功了。
第四步:開通高級功能
回到工作區頁面,左側會自動出現 Claude 應用,此時聊天會發現 Claude 是不會回覆任何消息的。
解決方案:點擊左側 Slack Connect,沒有這個選項的話,就點擊瀏覽 Slack,在下拉框裏找到 Slack Connect。
社區小夥伴的經歷告訴我,這個地方有的賬戶沒有免費試用的機會,但我創建了幾個工作區了,都可以免費試用,可能是因爲試用的 gmail 郵箱吧。沒有就重新註冊新賬號,或新建工作區走流程嘗試,有錢就無所謂。所以前面註冊時會讓你儘量使用 gmail 郵箱。
創建完畢之後在左側找到剛剛新建的頻道,然後我們爲這個頻道添加 Claude 應用。
添加完畢後進入剛建的頻道,激活高級功能。
OK 到這一步,你已經可以愉快的在 Slack 中和 Claude 聊天啦,但我們的目的是在自己的項目中接入,所以還需要稍微的再操作一下!
第五步:接入 API
雖然 Claude 暫時還沒開放 API ,我們可以用一點其他的辦法。
我們使用 Laf 提供的雲函數接入api,開發速度更快。2023年了,如果你還不知道 Laf,那我只能再講一遍了。
Laf 是一個 Serverless 框架,提供開箱即用的雲函數,雲數據庫,對象存儲等能力,是一個非常乾淨清爽的開發平臺,不僅入門簡單,還能像寫博客一樣寫代碼!life is short, you need laf:)
🏠官網(國內):https://laf.run
🌎官網(海外):https://laf.dev
下面讓我們開始操作~
創建雲函數
添加依賴claude-api-slack
寫入以下代碼
這段代碼很簡單,看註釋就懂了。除了雲函數部分,主要代碼在普通 nodejs 中也同樣適用。
import cloud from '@lafjs/cloud'
// 雲函數入口代碼
// 接收一個question,和一個可選的上下文id:conversationId
export default async function (ctx: FunctionContext) {
const { question, conversationId } = ctx.query
return await askCluadeAPi(question, conversationId)
}
// 調用api的主要代碼
async function askCluadeAPi(question, conversationId) {
// 見以下第一個步驟,授權以及獲取user-token 步驟
const token = 'xoxp-xxxxxx'
// 見以下第二個步驟,獲取claude appid
const bot = 'U0xxxxxx'
// chatId就是工作區間裏新建的渠道。channel名稱
const chatId = 'ai聊天'
// 初始化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
}
}
授權以及獲取user-token
- 進入slack官網並登錄(https://slack.com/)
- 進入api配置頁面(https://api.slack.com/)
- 點擊頁面右上角 Your apps
- 點擊 Create an App
- 點擊 From scratsh
- 輸入 App Name,選擇前面創建的工作空間,點擊 Create App
- 點擊左側邊欄的 OAuth & Permissions
- 找到 Scopes 模塊下的 User Token Scopes,點擊 Add an OAuth Scopes 按鈕,依次搜索添加以下權限
channels:history
channels:read
channels:write
groups:history
groups:read
groups:write
chat:write
im:history
im:write
mpim:history
mpim:write
注意:這裏的搜索是模糊搜索,選擇權限時不要搞錯了
- 點擊OAuth Tokens for Your Workspace下的Install to Workspace按鈕,確認授權
至此,你就擁有了一串User OAuth Token,找到OAuth Tokens for Your Workspace
獲取 claude appid
第六步:測試
ok 寫到這裏,我們只需要點擊右上角的發佈,就可以在任何地方調用這個雲函數,把 claude 接入到自己的項目中了!
如果你也想接入 claude ,可以點擊這個鏈接(https://forum.laf.run/d/648) 報名,跟社區同學一起交流,還有機會贏取豐厚的獎品。