如何在slack中使用Claude

释放双眼,带上耳机,听听看~!
本文介绍了在slack中接入和调用Claude的详细步骤,包括注册、创建workspace、添加Claude app等操作。同时也介绍了设置slack API所需的Token和Member ID的方法。

好记性,不如烂笔头,趁热记录下,给未来的自己。

0 | 前言

自从 OpenAI 的 chatGPT 出现,被誉为第四次工业革命的开始。语言大模型这个话题,占据了互联网的半壁江山,围绕大模型的上下游生态、竞品大模型层出不穷。除了 chatGPT 外, 已经发布的还有 百度的文心一言、阿里的通义千问、MiniMax、Google的Palm、Fackbook的LLAMA 以及 Anthropic 的 Claude。

由于团队业务需要,需要对接各个大模型的API,在对接Claude的时候,发现其API需要申请+等待,无法即可使用(即使花钱也不行)。所以本文,会结合开源社区的一些方案,来实现Claude API的封装和调用。

在第一章节中,主要介绍 Claude 调用的两种方式;在第二章节中,会对基于slack bot的方式调用 Claude做详细展开,包括如何在 slack 页面使用,以及配置 slack 的 API;在第三章节里,会基于slack API 来进行基于python代码的实现。

1 | Claude 调用的几种姿势

很多大模型已经开放了 API 调用,免费的,收费的,商用的等等。但是,部分大模型的 API 调用还是需要申请,进 waiting list,然后遥遥无期的等待。Claude 的调用方式有两种:

  1. 申请 API
  2. 通过Slack

如何在slack中使用Claude

第一种方式,在目前来说约等于无,因为 Claude 目前只针对其关键的合作伙伴(如 Notion,Quora等)提供 API,对公众的 API的申请,目前还处于一个小心谨慎的逐步放开阶段

After working for the past few months with key partners like Notion, Quora, and DuckDuckGo in a closed alpha, we’ve been able to carefully test out our systems in the wild, and are ready to offer Claude more broadly so it can power crucial, cutting-edge use cases at scale.

第二种方式,开源社区有一些现成的方案可以使用(在这里衷心感谢)。其中用 slack bot 就是比较靠谱和稳定的一种方式,在第二章节里,会详细介绍如何通过 slack bot 来调用 claude。

2 | Claude in slack 教程

本章节会分以下两个部分:

  1. 如何在 slack 里接入 ,并在 slack web端调用 Claude;
  2. 如何设置 slack API 所需的 Token 和 Member ID。

2.1 | slack 接入 Claude

  1. 登录 slack, 如果没有注册需要先进行注册:
    如何在slack中使用Claude
    需要注意的是,邮箱注册会被check failed,建议使用 Google/Apple 账号登录

如何在slack中使用Claude

  1. 创建 workspace
    如何在slack中使用Claude

  2. 选择 slack connect
    如何在slack中使用Claude

  3. 点击 create a channel (PRO)
    如何在slack中使用Claude
    如何在slack中使用Claude

  4. 添加 Claude app

如何在slack中使用Claude
如果出现 Authorization hasn’t been set up for this app, so you won’t be able to install it., 点击右上角的 Manage(图1)-> App Management Settings(图2) -> Require APP Approval(图2) -> Approve(图3) -> Learn More(图3) -> Add to Slack(图4) -> Allow(图5) -> Enjoy(图6)!

图1
如何在slack中使用Claude
图2
如何在slack中使用Claude
图3
如何在slack中使用Claude
图4
如何在slack中使用Claude
图5
如何在slack中使用Claude
图6
如何在slack中使用Claude

2.2 | slack token 信息获取

  1. 进入 slack api 并创建 app, 选择 From scratch
    如何在slack中使用Claude

如何在slack中使用Claude

如何在slack中使用Claude

  1. 配置权限
    如何在slack中使用Claude

如何在slack中使用Claude

  1. 获取 token (下面会用到)
    如何在slack中使用Claude

如何在slack中使用Claude

如何在slack中使用Claude

  1. 获取member id (下面会用到)

如何在slack中使用Claude

如何在slack中使用Claude

3 | python 代码实例

  • python 核心代码
import time  
from slack_sdk import WebClient  
from slack_sdk.errors import SlackApiError  
from ClaudeDto import ClaudeChatReqDto  
from ReturnBase import ReturnBase
  

def send_message(client, channel, text):  
    try:  
        return client.chat_postMessage(channel=channel, text=text)  
    except SlackApiError as e:  
        print(f"Error sending message: {e}")  
  
  
def fetch_messages(client, channel, last_message_timestamp, bot_user_id):  
    response = client.conversations_history(channel=channel, oldest=last_message_timestamp)  
    return [msg['text'] for msg in response['messages'] if msg['user'] == bot_user_id]  
  
  
def get_new_messages(client, channel, last_message_timestamp, bot_user_id):  
    while True:  
        messages = fetch_messages(client, channel, last_message_timestamp, bot_user_id)  
        if messages and not messages[-1].endswith('Typing…_'):  
            return messages[-1]  
        time.sleep(1) # 这里的时间设置需要 balance 一下,越小越可能被限流,越大返回时间越长
  
  
def find_direct_message_channel(client, user_id):  
    try:  
        response = client.conversations_open(users=user_id)  
        return response['channel']['id']  
    except SlackApiError as e:  
        print(f"Error opening DM channel: {e}")  
  
  
def claude_chat_by_slack_svc(req_dto: ClaudeChatReqDto):  
    slack_user_token = {上面获得的token}  
    bot_user_id = {上面获得的member id}
    client = WebClient(token=slack_user_token)  
    dm_channel_id = find_direct_message_channel(client, bot_user_id)  
    if not dm_channel_id:  
        print("Could not find DM channel with the bot.")  
        return  
  
    last_message_timestamp = None  
    prompt = req_dto.prompt  
    response = send_message(client, dm_channel_id, prompt)  
    if response:  
        last_message_timestamp = response['ts']  
    new_message = get_new_messages(client, dm_channel_id, last_message_timestamp, bot_user_id)  

    return ReturnBase(
        data=new_message  
    )  
  
if __name__ == "__main__":  
    pass
  • ClaudeDto.py
from pydantic import BaseModel  
  
class ClaudeChatReqDto(BaseModel):  
    prompt: str
  • ReturnBase.py
from pydantic import BaseModel  
from typing import Optional  
  
  
class ReturnBase(BaseModel):  
    msg: Optional[str] = "ok"  
    msgCode: Optional[str] = "10000"  
    data: Optional[object] = None
  • requirements.txt
pydantic~=1.10.7  
requests~=2.25.1  
openai~=0.27.4  
cchardet  
slack_sdk  
pyjwt  
本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

如何部署和使用GPT Terminal?

2023-12-20 9:34:14

AI教程

计算机视觉领域的注意力机制介绍

2023-12-20 9:47:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索