Merge branch 'upstream/main'

This commit is contained in:
Laisky.Cai 2024-12-22 02:50:40 +00:00
commit dc181dd7fa
9 changed files with 32 additions and 49 deletions

View File

@ -6,7 +6,6 @@ on:
- "master" - "master"
- "main" - "main"
- "test/ci" - "test/ci"
# - "feature/flux"
jobs: jobs:
build_latest: build_latest:

View File

@ -41,7 +41,7 @@ func getLarkUserInfoByCode(code string) (*LarkUser, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
req, err := http.NewRequest("POST", "https://passport.feishu.cn/suite/passport/oauth/token", bytes.NewBuffer(jsonData)) req, err := http.NewRequest("POST", "https://open.feishu.cn/open-apis/authen/v2/oauth/token", bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -37,16 +37,16 @@ func (a *Adaptor) GetRequestURL(meta *meta.Meta) (string, error) {
action := "" action := ""
switch meta.Mode { switch meta.Mode {
case relaymode.Embeddings: case relaymode.Embeddings:
action = "batchEmbedContents?" action = "batchEmbedContents"
default: default:
action = "generateContent?" action = "generateContent"
} }
if meta.IsStream { if meta.IsStream {
action = "streamGenerateContent?alt=sse&" action = "streamGenerateContent?alt=sse"
} }
return fmt.Sprintf("%s/%s/models/%s:%skey=%s", meta.BaseURL, version, meta.ActualModelName, action, meta.APIKey), nil return fmt.Sprintf("%s/%s/models/%s:%s", meta.BaseURL, version, meta.ActualModelName, action), nil
} }
func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, meta *meta.Meta) error { func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, meta *meta.Meta) error {

View File

@ -22,25 +22,9 @@ import (
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
) )
// // ImagesEditsHandler just copy response body to client
// //
// // https://replicate.com/black-forest-labs/flux-fill-pro
// func ImagesEditsHandler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatusCode, *model.Usage) {
// c.Writer.WriteHeader(resp.StatusCode)
// for k, v := range resp.Header {
// c.Writer.Header().Set(k, v[0])
// }
// if _, err := io.Copy(c.Writer, resp.Body); err != nil {
// return openai.ErrorWrapper(err, "copy_response_body_failed", http.StatusInternalServerError), nil
// }
// defer resp.Body.Close()
// return nil, nil
// }
var errNextLoop = errors.New("next_loop") var errNextLoop = errors.New("next_loop")
// ImageHandler handles the response from the image creation or remix request
func ImageHandler(c *gin.Context, resp *http.Response) ( func ImageHandler(c *gin.Context, resp *http.Response) (
*model.ErrorWithStatusCode, *model.Usage) { *model.ErrorWithStatusCode, *model.Usage) {
if resp.StatusCode != http.StatusCreated { if resp.StatusCode != http.StatusCreated {

View File

@ -139,7 +139,7 @@ const TokensTable = () => {
<div> <div>
<Popover <Popover
content={ content={
'laisky-' + record.key 'sk-' + record.key
} }
style={{ padding: 20 }} style={{ padding: 20 }}
position="top" position="top"
@ -148,7 +148,7 @@ const TokensTable = () => {
</Popover> </Popover>
<Button theme="light" type="secondary" style={{ marginRight: 1 }} <Button theme="light" type="secondary" style={{ marginRight: 1 }}
onClick={async (text) => { onClick={async (text) => {
await copyText('laisky-' + record.key); await copyText('sk-' + record.key);
}} }}
>复制</Button> >复制</Button>
<SplitButtonGroup style={{ marginRight: 1 }} aria-label="项目操作按钮组"> <SplitButtonGroup style={{ marginRight: 1 }} aria-label="项目操作按钮组">
@ -329,24 +329,24 @@ const TokensTable = () => {
let nextUrl; let nextUrl;
if (nextLink) { if (nextLink) {
nextUrl = nextLink + `/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; nextUrl = nextLink + `/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
} else { } else {
nextUrl = `https://app.nextchat.dev/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; nextUrl = `https://app.nextchat.dev/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
} }
let url; let url;
switch (type) { switch (type) {
case 'ama': case 'ama':
url = mjLink + `/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; url = mjLink + `/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
break; break;
case 'opencat': case 'opencat':
url = `opencat://team/join?domain=${encodedServerAddress}&token=laisky-${key}`; url = `opencat://team/join?domain=${encodedServerAddress}&token=sk-${key}`;
break; break;
case 'next': case 'next':
url = nextUrl; url = nextUrl;
break; break;
default: default:
url = `laisky-${key}`; url = `sk-${key}`;
} }
// if (await copy(url)) { // if (await copy(url)) {
// showSuccess('已复制到剪贴板!'); // showSuccess('已复制到剪贴板!');
@ -381,18 +381,18 @@ const TokensTable = () => {
let defaultUrl; let defaultUrl;
if (chatLink) { if (chatLink) {
defaultUrl = chatLink + `/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; defaultUrl = chatLink + `/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
} }
let url; let url;
switch (type) { switch (type) {
case 'ama': case 'ama':
url = `ama://set-api-key?server=${encodedServerAddress}&key=laisky-${key}`; url = `ama://set-api-key?server=${encodedServerAddress}&key=sk-${key}`;
break; break;
case 'opencat': case 'opencat':
url = `opencat://team/join?domain=${encodedServerAddress}&token=laisky-${key}`; url = `opencat://team/join?domain=${encodedServerAddress}&token=sk-${key}`;
break; break;
case 'next-mj': case 'next-mj':
url = mjLink + `/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; url = mjLink + `/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
break; break;
case 'lobechat': case 'lobechat':
url = chatLink + `/?settings={"keyVaults":{"openai":{"apiKey":"sk-${key}","baseURL":"${serverAddress}/v1"}}}`; url = chatLink + `/?settings={"keyVaults":{"openai":{"apiKey":"sk-${key}","baseURL":"${serverAddress}/v1"}}}`;
@ -609,7 +609,7 @@ const TokensTable = () => {
} }
let keys = ''; let keys = '';
for (let i = 0; i < selectedKeys.length; i++) { for (let i = 0; i < selectedKeys.length; i++) {
keys += selectedKeys[i].name + ' laisky-' + selectedKeys[i].key + '\n'; keys += selectedKeys[i].name + ' sk-' + selectedKeys[i].key + '\n';
} }
await copyText(keys); await copyText(keys);
} }

View File

@ -95,7 +95,7 @@ export async function onLarkOAuthClicked(lark_client_id) {
const state = await getOAuthState(); const state = await getOAuthState();
if (!state) return; if (!state) return;
let redirect_uri = `${window.location.origin}/oauth/lark`; let redirect_uri = `${window.location.origin}/oauth/lark`;
window.open(`https://open.feishu.cn/open-apis/authen/v1/index?redirect_uri=${redirect_uri}&app_id=${lark_client_id}&state=${state}`); window.open(`https://accounts.feishu.cn/open-apis/authen/v1/authorize?redirect_uri=${redirect_uri}&client_id=${lark_client_id}&state=${state}`);
} }
export async function onOidcClicked(auth_url, client_id, openInNewTab = false) { export async function onOidcClicked(auth_url, client_id, openInNewTab = false) {

View File

@ -28,7 +28,7 @@ const COPY_OPTIONS = [
{ {
key: 'next', key: 'next',
text: 'ChatGPT Next', text: 'ChatGPT Next',
url: 'https://app.nextchat.dev/#/?settings={"key":"laisky-{key}","url":"{serverAddress}"}', url: 'https://app.nextchat.dev/#/?settings={"key":"sk-{key}","url":"{serverAddress}"}',
encode: false encode: false
}, },
{ key: 'ama', text: 'BotGem', url: 'ama://set-api-key?server={serverAddress}&key=sk-{key}', encode: true }, { key: 'ama', text: 'BotGem', url: 'ama://set-api-key?server={serverAddress}&key=sk-{key}', encode: true },
@ -134,7 +134,7 @@ export default function TokensTableRow({ item, manageToken, handleOpenModal, set
let url = option.url; let url = option.url;
if (option.key === 'next' && siteInfo?.chat_link) { if (option.key === 'next' && siteInfo?.chat_link) {
url = siteInfo.chat_link + `/#/?settings={"key":"laisky-{key}","url":"{serverAddress}"}`; url = siteInfo.chat_link + `/#/?settings={"key":"sk-{key}","url":"{serverAddress}"}`;
} }
const key = item.key; const key = item.key;
@ -211,7 +211,7 @@ export default function TokensTableRow({ item, manageToken, handleOpenModal, set
<Button <Button
color="primary" color="primary"
onClick={() => { onClick={() => {
copy(`laisky-${item.key}`); copy(`sk-${item.key}`);
}} }}
> >
复制 复制

0
web/build.sh Normal file → Executable file
View File

View File

@ -99,27 +99,27 @@ const TokensTable = () => {
// let nextUrl; // let nextUrl;
// if (nextLink) { // if (nextLink) {
// nextUrl = nextLink + `/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; // nextUrl = nextLink + `/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
// } else { // } else {
// nextUrl = `https://app.nextchat.dev/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; // nextUrl = `https://app.nextchat.dev/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
// } // }
let url; let url;
switch (type) { switch (type) {
case 'ama': case 'ama':
url = `ama://set-api-key?server=${encodedServerAddress}&key=laisky-${key}`; url = `ama://set-api-key?server=${encodedServerAddress}&key=sk-${key}`;
break; break;
case 'opencat': case 'opencat':
url = `opencat://team/join?domain=${encodedServerAddress}&token=laisky-${key}`; url = `opencat://team/join?domain=${encodedServerAddress}&token=sk-${key}`;
break; break;
case 'web': case 'web':
url = `https://chat.laisky.com?apikey=laisky-${key}`; url = `https://chat.laisky.com?apikey=sk-${key}`;
break; break;
case 'lobechat': case 'lobechat':
url = nextLink + `/?settings={"keyVaults":{"openai":{"apiKey":"sk-${key}","baseURL":"${serverAddress}/v1"}}}`; url = nextLink + `/?settings={"keyVaults":{"openai":{"apiKey":"sk-${key}","baseURL":"${serverAddress}/v1"}}}`;
break; break;
default: default:
url = `laisky-${key}`; url = `sk-${key}`;
} }
if (await copy(url)) { if (await copy(url)) {
showSuccess('已复制到剪贴板!'); showSuccess('已复制到剪贴板!');
@ -144,18 +144,18 @@ const TokensTable = () => {
let defaultUrl; let defaultUrl;
if (chatLink) { if (chatLink) {
defaultUrl = chatLink + `/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; defaultUrl = chatLink + `/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
} else { } else {
defaultUrl = `https://app.nextchat.dev/#/?settings={"key":"laisky-${key}","url":"${serverAddress}"}`; defaultUrl = `https://app.nextchat.dev/#/?settings={"key":"sk-${key}","url":"${serverAddress}"}`;
} }
let url; let url;
switch (type) { switch (type) {
case 'ama': case 'ama':
url = `ama://set-api-key?server=${encodedServerAddress}&key=laisky-${key}`; url = `ama://set-api-key?server=${encodedServerAddress}&key=sk-${key}`;
break; break;
case 'opencat': case 'opencat':
url = `opencat://team/join?domain=${encodedServerAddress}&token=laisky-${key}`; url = `opencat://team/join?domain=${encodedServerAddress}&token=sk-${key}`;
break; break;
case 'lobechat': case 'lobechat':