mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-18 01:26:37 +08:00
Merge branch 'upstream/main'
This commit is contained in:
commit
dc181dd7fa
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
@ -6,7 +6,6 @@ on:
|
|||||||
- "master"
|
- "master"
|
||||||
- "main"
|
- "main"
|
||||||
- "test/ci"
|
- "test/ci"
|
||||||
# - "feature/flux"
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_latest:
|
build_latest:
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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
0
web/build.sh
Normal file → Executable 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':
|
||||||
|
Loading…
Reference in New Issue
Block a user