opaitokens

package module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2023 License: MIT Imports: 14 Imported by: 0

README

opaitokens

A golang lib to help you to get openai access token and refresh the token

How to use?

if you cant visit openai freely, then you need set HTTP_PROXY and HTTPS_PROXY env before use.

unix/linux/macos

export http_proxy=http://proxy.example.com:port
export https_proxy=http://proxy.example.com:port

windows

set http_proxy=http://proxy.example.com:port
set https_proxy=http://proxy.example.com:port


official account

email := "xxxx@xx.com"
password := "xxxxx"
//false mean you dont want to use fakeopenproxy to login
// you can set it as true, so when you dont have a vps for get your access with fakeopen api proxy
tokens := NewOpaiTokens(email, password, false)
token := tokens.FetchToken()
fmt.Printf("token info: %v\n", token)
accessToken := token.OpenaiToken.AccessToken
// use the access token
fmt.Printf("i am using access token: %v \n", accessToken)

token = tokens.RefreshToken()
fmt.Printf("token info again: %v\n", token)
accessToken = token.RefreshedToken.AccessToken
//use the refresh token
fmt.Println("i am using refresh token: ", accessToken)

official account with MFA

// if you have set MFA to the account, then use this below
email := "xxxx@xx.com"
password := "xxxxx"
mfa := "your mfa code"

tokens := NewOpaiTokensWithMFA(email, password,mfa,false)
token := tokens.FetchToken()
fmt.Printf("token info: %v\n", token)
accessToken := token.OpenaiToken.AccessToken
// use the access token
fmt.Printf("i am using access token: %v \n", accessToken)

token = tokens.RefreshToken()
fmt.Printf("token info again: %v\n", token)
accessToken = token.RefreshedToken.AccessToken
//use the refresh token
fmt.Println("i am using refresh token: ", accessToken)

use share token with ai.fakenopen.com



tokens := FakeOpenTokens{}
account := OpenaiAccount{
    Email:    "xxxx@gmail.com",
    Password: "xx@xx",
    MFA:      "",
}
token, err := tokens.FetchSharedToken(account, "fireinrain")
if err != nil {
    fmt.Println("error: ", err)
}
fmt.Println(token.TokenKey)

use pooled token with ai.fakenopen.com

var accounts []OpenaiAccount
account := OpenaiAccount{
    Email:    "xxxx@gmail.com",
    Password: "xx@xx",
    MFA:      "",
}
accounts = append(accounts, account)
tokens := FakeOpenTokens{}
token, err := tokens.FetchPooledToken(accounts)
if err != nil {
    fmt.Println("error: ", err)
}
fmt.Println(token)

renew shared token for keep pooled token valid

//主动在14天之内刷新所有账号的shared token 来确保pooled token有效
//可以使用
var accounts []OpenaiAccount
    account := OpenaiAccount{
    Email:    "xxxx@gmail.com",
    Password: "xx@xx",
    MFA:      "",
}
accounts = append(accounts, account)
tokens := FakeOpenTokens{}
renewResult, err := tokens.RenewSharedToken(accounts)
if err != nil {
    fmt.Println("error: ", err)
}
fmt.Println(renewResult)

fetch pooled token with official accounts and offline sk keys

var accounts []OpenaiAccount
account := OpenaiAccount{
    Email:    "xxxx@gmail.com",
    Password: "xx@xx",
    MFA:      "",
}
accounts = append(accounts, account)
	
var skKeys []string
skKeys = append(skKeys,"sk-xxxxxx")
tokens := FakeOpenTokens{}
token, err := tokens.FetchMixedPooledToken(accounts,skKeys)
if err != nil {
    fmt.Println("error: ", err)
}
fmt.Println(token)


Thanks for Cloudflare Platform.

cloudflare

You can use cloudflare free cdn to speed your website. And if necessary, choose the pro subscription. Cloudflare

Documentation

Index

Constants

View Source
const DefaultSharedTokenUniqueName = "fireinrain"

DefaultSharedTokenUniqueName depreacted because it's used for me testing

View Source
const OpenaiTokenBaseUrl = "https://auth0.openai.com/oauth/token"
View Source
const PooledTokenAccountsLimit = 100

Variables

This section is empty.

Functions

This section is empty.

Types

type FakeOpenTokens

type FakeOpenTokens struct{}

func (*FakeOpenTokens) FetchMixedPooledToken added in v1.0.2

func (receiver *FakeOpenTokens) FetchMixedPooledToken(openaiAccounts []OpenaiAccount, openaiSkKeys []string, uniqueName string) (fakeopen.PooledToken, error)

func (*FakeOpenTokens) FetchMixedPooledTokenWithRefreshToken added in v1.0.4

func (receiver *FakeOpenTokens) FetchMixedPooledTokenWithRefreshToken(renewSharedTokenRFTs []RenewSharedTokenRFT, openaiSkKeys []string, uniqueName string) (fakeopen.PooledToken, error)

func (*FakeOpenTokens) FetchPooledToken

func (receiver *FakeOpenTokens) FetchPooledToken(openaiAccounts []OpenaiAccount, uniqueName string) (fakeopen.PooledToken, error)

FetchPooledToken

@Description: 通过官方账号列表获取pooled token
@receiver receiver
@param openaiAccounts
@return fakeopen.PooledToken
@return error

func (*FakeOpenTokens) FetchPooledTokenWithRefreshToken added in v1.0.4

func (receiver *FakeOpenTokens) FetchPooledTokenWithRefreshToken(renewSharedTokenRFTs []RenewSharedTokenRFT, uniqueName string) (fakeopen.PooledToken, error)

FetchPooledTokenWithRefreshToken

@Description: 使用openai 官方的refresh token 获取fakeopen的pool token
@receiver receiver
@param renewSharedTokenRFTs
@param uniqueName
@return fakeopen.PooledToken
@return error

func (*FakeOpenTokens) FetchSharedToken

func (receiver *FakeOpenTokens) FetchSharedToken(openaiAccount OpenaiAccount, uniqueName string) (fakeopen.SharedToken, error)

FetchSharedToken

@Description: 通过官方账号获取shared token
@receiver receiver
@param openaiAccount
@param uniqueName
@return fakeopen.SharedToken
@return error

func (FakeOpenTokens) FetchSharedTokenWithRefreshToken added in v1.0.4

func (receiver FakeOpenTokens) FetchSharedTokenWithRefreshToken(openaiAccountEmail string, openaiRefreshToken string, uniqueName string) (fakeopen.SharedToken, error)

FetchSharedTokenWithRefreshToken

@Description: 使用openai官方的refresh token来获取fakeopen的share token
@receiver receiver
@param openaiAccountEmail
@param openaiRefreshToken
@param uniqueName
@return fakeopen.SharedToken
@return error

func (*FakeOpenTokens) RenewSharedToken

func (receiver *FakeOpenTokens) RenewSharedToken(openaiAccounts []OpenaiAccount, uniqueName string) (RenewResult, error)

RenewSharedToken shared token = hash(unique_name + access token uid)

@Description: 刷新所有账号的fk(在14天到期之前主动刷新账号池的fk来确保pk保持不变)
@receiver receiver
@param openaiAccounts
@return RenewResult
@return error

func (*FakeOpenTokens) RenewSharedTokenWithRefreshToken added in v1.0.4

func (receiver *FakeOpenTokens) RenewSharedTokenWithRefreshToken(renewSharedTokenRFTs []RenewSharedTokenRFT, uniqueName string) (RenewResult, error)

RenewSharedTokenWithRefreshToken

@Description: 使用refreshtoken 刷新shared token
@receiver receiver
@param renewSharedTokenRFTs
@param uniqueName
@return RenewResult
@return error

type OpaiTokens

type OpaiTokens struct {
	Email            string                     `json:"email"`
	Password         string                     `json:"password"`
	MFA              string                     `json:"mfa"`
	OpenaiToken      model.OpenaiToken          `json:"openaiToken"`
	RefreshedToken   model.OpenaiRefreshedToken `json:"refreshedToken"`
	UseFakeopenProxy bool                       `json:"useFakeopenProxy"`
}

func NewOpaiTokens

func NewOpaiTokens(email string, password string, useFakeOpenProxy bool) *OpaiTokens

func NewOpaiTokensWithMFA

func NewOpaiTokensWithMFA(email string, password string, mfa string, useFakeOpenProxy bool) *OpaiTokens

func (*OpaiTokens) FetchToken

func (receiver *OpaiTokens) FetchToken() *OpaiTokens

func (*OpaiTokens) RefreshToken

func (receiver *OpaiTokens) RefreshToken() *OpaiTokens

type OpenaiAccount

type OpenaiAccount struct {
	Email    string `json:"email"`
	Password string `json:"password"`
	MFA      string `json:"mfa"`
}

type RenewResult

type RenewResult struct {
	RenewCount   int  `json:"renew_count"`
	RenewSuccess bool `json:"renew_success"`
}

type RenewSharedTokenRFT added in v1.0.4

type RenewSharedTokenRFT struct {
	OpenaiAccountEmail string
	OpenaiRefreshToken string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL