利用slack的bot api 制作claude的API接口

文章目录

    • 概要
    • 整体流程介绍
    • 代码展示
    • 需要用到的权限

概要

本期给大家展示一个简易的claude的api接口的写法

利用slack的bot api对于claude的发送和接收。

整体流程介绍

  1. 首先要熟悉Slack的概念,了解什么是机器人,频道等。并创建Slack账号和Claude机器人账号。
  2. 安装Slack的SDK,它是与Slack API交互必不可少的。安装方式pip install slack-sdk。
  3. 获取Claude机器人的访问Token,并定义机器人ID,频道ID。这些是发送消息和接收回复必需的。
  4. 编写send_message函数,用于发送消息给Claude机器人。并且指定频道,机器人ID等参数。
  5. 使用一个while循环不断查询Claude机器人的回复,并判断它是否完成回复以获取最终回复消息。
  6. 最后使用send_message()函数发送人类输入的消息,并获取Claude机器人的回复。
  7. 如果要实现上下文会话,需要利用时间戳ts,并在发送消息时也指定这个时间戳,这样Claude机器人会将消息都放在该时间戳对应的消息链中。

代码展示

import time

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from slack_sdk.errors import SlackClientError

client = WebClient(token="xoxp-的那个token")
claude_id = "U0*******"
channel_id = 'C0*******'
tsss = '1686232870.084249'

def send_message(text):
    message_text = f"<@{claude_id}> {text}"  # 艾特机器人ID的一个操作text是要输入的文字
    result = client.chat_update(channel=channel_id, text=message_text,ts= tsss)   # 发送给机器人 channel_id 是频道ID 发送信息给机器人
    print(result['ts'])   # 我们打印一下ts 它其实是一个时间戳,我们可以利用时间戳来制作更深层次的对话,比如上下文的对话
        # ts就是一个时间戳,它代表的就是本次的对话,可以根据时间戳来写一个上下文的对话,在同一个消息列中进行收发消息
    # 记录响应开始时间,重试次数
    all_messages = []   # message 的 列表存储

    while True:   # 我们的这个整个循环是为了等待机器人回复完毕,而这个等待的参数是以Typing…_这个结尾进行判断是否完成的。
        time.sleep(5)   # 等待五秒机器人回复
        latest_res = client.conversations_replies(channel=channel_id, ts=result['ts'],oldest=tsss)
        messages = latest_res['messages']
        print(messages)
        all_messages.extend(messages)  # 追加新的消息
        # 如果响应以_Typing…_结尾,则继续等待响应
        for message in all_messages:
            if message['user'] == claude_id and message['text'].strip().endswith('_Typing…_'):   # 这里是机器人回复是否完成的一个判断
                continue   #  如果没完成则继续循环等待,如果完成了,则打印输出!
            if message['user'] == claude_id:
                response = message['text']
                print(response)
                return response


send_message(input('人类:'))
# 可以很简单的去利用这个演示做接口等常用工具软件,我们去除了很复杂的东西,尽量简化程序,让小白玩家也能看明白。
# 高深的东西没有,我制作这个东西,仅仅是为了给大家普及一下claude简单的发送和获取对话。
# 更高深的可以利用频道的ts参数 ,我们再会话的时候,就会在这个时间戳下面的消息列中,可以获得上下文的消息
# 加上时间戳并且将chat_update里也添加上ts才能进行过原队列的一个上下文会话。

# 有什么问题可以加我微信kge123666,互相探讨学习。

需要用到的权限

进入 https://api.slack.com
创建一个bot的api
进入选项
OAuth & Permissions添加如下权限
Bot Token Scopes 需要安装如下权限
channels:history
channels:join
channels:manage
channels:read
channels:write.invites
channels:write.topic
chat:write
chat:write.customize
chat:write.public
groups:history
groups:read
groups:write
groups:write.invites
groups:write.topic
im:history
im:read
im:write
im:write.invites
im:write.topic
usergroups:write
users:read
users:write
User Token Scopes 需要安装如下权限
admin
Administer a workspace
channels:history
channels:read
channels:write
channels:write.invites
channels:write.topic
chat:write
groups:history
groups:read
groups:write
groups:write.invites
groups:write.topic
im:history
im:read
im:write
im:write.invites
im:write.topic
mpim:history
mpim:read
mpim:write
usergroups:write
users:read
users:write
将所有权限添加完毕后选择Install App进行安装
安装完成后可以获得 xoxp 开头的一个token

你可能感兴趣的:(python,ai,fastapi,人工智能)