GithubHelp home page GithubHelp logo

claude-api's Introduction

ClaudeAI for Node.js/GoLang

Slack Conversation Library for ClaudeAI.

Web Conversation Library for ClaudeAI. link

Service For SillyTavern

Usage

go get github.com/bincooo/claude-api@[commit]

使用slack for claude

const (
    token = "xoxp-xxx"
    botId = "U05382WAQ1M"
)
options := claude.NewDefaultOptions(token, botId, vars.Model4Slack)
chat, err := claude.New(options)
if err != nil {
    panic(err)
}

// 如果不手建频道,默认使用chat-9527
if err := chat.NewChannel("chat-7890"); err != nil {
    panic(err)
}

prompt := "hi"
fmt.Println("You: ", prompt)
// 不支持附件
partialResponse, err := chat.Reply(context.Background(), prompt, nil)
if err != nil {
    panic(err)
}
Println(partialResponse)

// ======

func Println(partialResponse chan types.PartialResponse) {
	for {
		message, ok := <-partialResponse
		if !ok {
			return
		}

		if message.Error != nil {
			panic(message.Error)
		}

		fmt.Println(message.Text)
		fmt.Println("===============")
	}
}

使用web for claude

var (
    token = "sk-ant-xxx"
    attrCtx = "==附件内容=="
)

// 可自动获取token,无需手动注册
tk, err := util.Login("http://127.0.0.1:7890")
if err != nil {
    panic(err)
}
token = tk
options := claude.NewDefaultOptions(token, "", vars.Model4WebClaude2)
options.Agency = "http://127.0.0.1:7890"
chat, err := claude.New(options)
if err != nil {
    panic(err)
}

prompt := "who are you?"
fmt.Println("You: ", prompt)
// 正常对话
partialResponse, err = chat.Reply(context.Background(), prompt, nil)
if err != nil {
    panic(err)
}
Println(partialResponse)
// 附件上传
prompt = "总结附件内容:"
fmt.Println("You: ", prompt)
ctx, cancel := context.WithTimeout(context.TODO(), time.Second*20)
defer cancel()
partialResponse, err = chat.Reply(ctx, prompt, []types.Attachment{
    {
        Content:  attrCtx,
        FileName: "paste.txt",
        FileSize: 999999,
        FileType: "txt",
    }
})
if err != nil {
    panic(err)
}
Println(partialResponse)

// =========

func Println(partialResponse chan types.PartialResponse) {
	for {
		message, ok := <-partialResponse
		if !ok {
			return
		}

		if message.Error != nil {
			panic(message.Error)
		}

		fmt.Println(message.Text)
		fmt.Println("===============")
	}
}

New 🎉🎉🎉

(2023-09-01)自动刷取token凭证失效,添加临时方案(不保证可用性,也许会抽风)

*tips:对电脑要求比较高,吃性能, 手机啥的就不要想了

视频教程

step 1:

电脑需安装docker,自行研究安装。

安装完成后执行命令,可查看是否安装成功

docker info

step 2:

同级目录下创建.env文件,填写你的电脑ip和vpn (根据个人需要填写,英美地区电脑就不需要填写,留空)。

ip是你本机的ip,不要填写127.0.0.1,不然容器无法识别

PROXY="http://[你电脑的ip]:7890"

step 3:

运行镜像:docker compose和 指令二选一

docker compose

version: '3'
services:
  app:
    restart: always
    image: bincooo/claude-helper:v1.0.1
    volumes:
     - ./.env:/code/.env
    environment:
     - ENABLED_X11VNC=no
    ports:
     - 8088:8080

docker command

docker run --name claude-helper -p 8088:8080 -v ./.env:/code/.env -d bincooo/claude-helper:v1.0.1

(2023-07-28)提供自动刷取token凭证 RECAPTCHA_KEYRECAPTCHA_TOKEN 的值在claude.ai的登陆页面随意填写邮箱,点击发送后在开发者工具中的https://claude.ai/api/auth/send_code 请求中获取

1. 是否有过期时间未知????
2. 是否与IP绑定未知????

(实验性功能)请自行测试研究...

+++++++++++
添加了web新出的claude-2 🎉

食用方法,在浏览器内登陆,打开开发者工具(F12),复制Cookie中的sessionKey即可。

sessionKey便是程序中的token,appid就不需要了,具体使用参考示例:examples/claude-2/main.go

授权以及获取user-token

网页(登录)后, 进入api配置页面(点我跳转)。

〉》点击 【Create an app】

​ 〉》主页看见Your Apps并弹出窗口【Create an app】 〉》 点击【From scratch】

​ 〉》填写app名称以及选择工作空间(例:name: Bot, workspace: chat) 〉》 点击【Create App】

​ 〉》点击左侧边栏上的【OAuth & Permissions】 〉》 下拉至【Scopes】卡片,在 【User Token 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-token

截屏2023-04-18 09.10.56

截屏2023-04-18 09.14.41

获取 claude appid

截屏2023-04-18 08.49.20

注意事项

由于是Slack转接Claude,Slack是有限流机制读我。 目前使用的是web协议对接,文档说明似乎是1秒一个请求,后面可以尝试使用sock对接可拥有更多的请求流量。

Credits Thank you to:

claude-api's People

Contributors

bincooo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.