fix: github models 不支持图片 #291
This commit is contained in:
parent
1db3faa2a8
commit
34c85e8f0c
26
.yarn/patches/openai-npm-4.71.1-b5940d6401.patch
Normal file
26
.yarn/patches/openai-npm-4.71.1-b5940d6401.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
diff --git a/core.js b/core.js
|
||||||
|
index 00b67a48b7b5cf0029413fc84abd0c01630c3d14..5550b58495b468060f775ca86e4d849d82573ea5 100644
|
||||||
|
--- a/core.js
|
||||||
|
+++ b/core.js
|
||||||
|
@@ -156,7 +156,7 @@ class APIClient {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'User-Agent': this.getUserAgent(),
|
||||||
|
- ...getPlatformHeaders(),
|
||||||
|
+ // ...getPlatformHeaders(),
|
||||||
|
...this.authHeaders(opts),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
diff --git a/core.mjs b/core.mjs
|
||||||
|
index 8bc7a0ee10d61560d7113cf3f703355bb19f7ddd..5e4c8586ea6b13fe887a22af2de05eaa4700b5ec 100644
|
||||||
|
--- a/core.mjs
|
||||||
|
+++ b/core.mjs
|
||||||
|
@@ -149,7 +149,7 @@ export class APIClient {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'User-Agent': this.getUserAgent(),
|
||||||
|
- ...getPlatformHeaders(),
|
||||||
|
+ // ...getPlatformHeaders(),
|
||||||
|
...this.authHeaders(opts),
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -93,7 +93,7 @@
|
|||||||
"localforage": "^1.10.0",
|
"localforage": "^1.10.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mime": "^4.0.4",
|
"mime": "^4.0.4",
|
||||||
"openai": "^4.52.1",
|
"openai": "patch:openai@npm%3A4.71.1#~/.yarn/patches/openai-npm-4.71.1-b5940d6401.patch",
|
||||||
"prettier": "^3.2.4",
|
"prettier": "^3.2.4",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
|
|||||||
@ -17,7 +17,7 @@ export default abstract class BaseProvider {
|
|||||||
return host.endsWith('/') ? host : `${host}/v1/`
|
return host.endsWith('/') ? host : `${host}/v1/`
|
||||||
}
|
}
|
||||||
|
|
||||||
public getHeaders() {
|
public defaultHeaders() {
|
||||||
return {
|
return {
|
||||||
'X-Api-Key': this.provider.apiKey
|
'X-Api-Key': this.provider.apiKey
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,8 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
this.sdk = new OpenAI({
|
this.sdk = new OpenAI({
|
||||||
dangerouslyAllowBrowser: true,
|
dangerouslyAllowBrowser: true,
|
||||||
apiKey: provider.apiKey,
|
apiKey: provider.apiKey,
|
||||||
baseURL: this.getBaseURL()
|
baseURL: this.getBaseURL(),
|
||||||
|
defaultHeaders: this.defaultHeaders()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,21 +139,16 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
const isSupportStreamOutput = streamOutput && this.isSupportStreamOutput(model.id)
|
const isSupportStreamOutput = streamOutput && this.isSupportStreamOutput(model.id)
|
||||||
|
|
||||||
// @ts-ignore key is not typed
|
// @ts-ignore key is not typed
|
||||||
const stream = await this.sdk.chat.completions.create(
|
const stream = await this.sdk.chat.completions.create({
|
||||||
{
|
model: model.id,
|
||||||
model: model.id,
|
messages: [isOpenAIo1 ? undefined : systemMessage, ...userMessages].filter(
|
||||||
messages: [isOpenAIo1 ? undefined : systemMessage, ...userMessages].filter(
|
Boolean
|
||||||
Boolean
|
) as ChatCompletionMessageParam[],
|
||||||
) as ChatCompletionMessageParam[],
|
temperature: isOpenAIo1 ? 1 : assistant?.settings?.temperature,
|
||||||
temperature: isOpenAIo1 ? 1 : assistant?.settings?.temperature,
|
max_tokens: maxTokens,
|
||||||
max_tokens: maxTokens,
|
keep_alive: this.keepAliveTime,
|
||||||
keep_alive: this.keepAliveTime,
|
stream: isSupportStreamOutput
|
||||||
stream: isSupportStreamOutput
|
})
|
||||||
},
|
|
||||||
{
|
|
||||||
headers: this.getHeaders()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
if (!isSupportStreamOutput) {
|
if (!isSupportStreamOutput) {
|
||||||
return onChunk({
|
return onChunk({
|
||||||
@ -182,17 +178,12 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
]
|
]
|
||||||
|
|
||||||
// @ts-ignore key is not typed
|
// @ts-ignore key is not typed
|
||||||
const response = await this.sdk.chat.completions.create(
|
const response = await this.sdk.chat.completions.create({
|
||||||
{
|
model: model.id,
|
||||||
model: model.id,
|
messages: messages as ChatCompletionMessageParam[],
|
||||||
messages: messages as ChatCompletionMessageParam[],
|
stream: false,
|
||||||
stream: false,
|
keep_alive: this.keepAliveTime
|
||||||
keep_alive: this.keepAliveTime
|
})
|
||||||
},
|
|
||||||
{
|
|
||||||
headers: this.getHeaders()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
return response.choices[0].message?.content || ''
|
return response.choices[0].message?.content || ''
|
||||||
}
|
}
|
||||||
@ -223,18 +214,13 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore key is not typed
|
// @ts-ignore key is not typed
|
||||||
const response = await this.sdk.chat.completions.create(
|
const response = await this.sdk.chat.completions.create({
|
||||||
{
|
model: model.id,
|
||||||
model: model.id,
|
messages: [systemMessage, userMessage] as ChatCompletionMessageParam[],
|
||||||
messages: [systemMessage, userMessage] as ChatCompletionMessageParam[],
|
stream: false,
|
||||||
stream: false,
|
keep_alive: this.keepAliveTime,
|
||||||
keep_alive: this.keepAliveTime,
|
max_tokens: 1000
|
||||||
max_tokens: 1000
|
})
|
||||||
},
|
|
||||||
{
|
|
||||||
headers: this.getHeaders()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
return removeQuotes(response.choices[0].message?.content?.substring(0, 50) || '')
|
return removeQuotes(response.choices[0].message?.content?.substring(0, 50) || '')
|
||||||
}
|
}
|
||||||
@ -242,19 +228,14 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
public async generateText({ prompt, content }: { prompt: string; content: string }): Promise<string> {
|
public async generateText({ prompt, content }: { prompt: string; content: string }): Promise<string> {
|
||||||
const model = getDefaultModel()
|
const model = getDefaultModel()
|
||||||
|
|
||||||
const response = await this.sdk.chat.completions.create(
|
const response = await this.sdk.chat.completions.create({
|
||||||
{
|
model: model.id,
|
||||||
model: model.id,
|
stream: false,
|
||||||
stream: false,
|
messages: [
|
||||||
messages: [
|
{ role: 'system', content: prompt },
|
||||||
{ role: 'system', content: prompt },
|
{ role: 'user', content }
|
||||||
{ role: 'user', content }
|
]
|
||||||
]
|
})
|
||||||
},
|
|
||||||
{
|
|
||||||
headers: this.getHeaders()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
return response.choices[0].message?.content || ''
|
return response.choices[0].message?.content || ''
|
||||||
}
|
}
|
||||||
@ -269,7 +250,6 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
const response: any = await this.sdk.request({
|
const response: any = await this.sdk.request({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
path: '/advice_questions',
|
path: '/advice_questions',
|
||||||
headers: this.getHeaders(),
|
|
||||||
body: {
|
body: {
|
||||||
messages: messages.filter((m) => m.role === 'user').map((m) => ({ role: m.role, content: m.content })),
|
messages: messages.filter((m) => m.role === 'user').map((m) => ({ role: m.role, content: m.content })),
|
||||||
model: model.id,
|
model: model.id,
|
||||||
@ -293,9 +273,7 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await this.sdk.chat.completions.create(body as ChatCompletionCreateParamsNonStreaming, {
|
const response = await this.sdk.chat.completions.create(body as ChatCompletionCreateParamsNonStreaming)
|
||||||
headers: this.getHeaders()
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
valid: Boolean(response?.choices[0].message),
|
valid: Boolean(response?.choices[0].message),
|
||||||
@ -317,7 +295,7 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
query.type = 'text'
|
query.type = 'text'
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await this.sdk.models.list({ query, headers: this.getHeaders() })
|
const response = await this.sdk.models.list({ query })
|
||||||
|
|
||||||
if (this.provider.id === 'github') {
|
if (this.provider.id === 'github') {
|
||||||
// @ts-ignore key is not typed
|
// @ts-ignore key is not typed
|
||||||
@ -373,7 +351,6 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
const response = (await this.sdk.request({
|
const response = (await this.sdk.request({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
path: '/images/generations',
|
path: '/images/generations',
|
||||||
headers: this.getHeaders(),
|
|
||||||
signal,
|
signal,
|
||||||
body: {
|
body: {
|
||||||
model: 'stabilityai/stable-diffusion-3-5-large',
|
model: 'stabilityai/stable-diffusion-3-5-large',
|
||||||
|
|||||||
50
yarn.lock
50
yarn.lock
@ -2032,13 +2032,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/qs@npm:^6.9.15":
|
|
||||||
version: 6.9.15
|
|
||||||
resolution: "@types/qs@npm:6.9.15"
|
|
||||||
checksum: 10c0/49c5ff75ca3adb18a1939310042d273c9fc55920861bd8e5100c8a923b3cda90d759e1a95e18334092da1c8f7b820084687770c83a1ccef04fb2c6908117c823
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@types/react-dom@npm:^18.2.18":
|
"@types/react-dom@npm:^18.2.18":
|
||||||
version: 18.3.0
|
version: 18.3.0
|
||||||
resolution: "@types/react-dom@npm:18.3.0"
|
resolution: "@types/react-dom@npm:18.3.0"
|
||||||
@ -2343,7 +2336,7 @@ __metadata:
|
|||||||
markdown-it: "npm:^14.1.0"
|
markdown-it: "npm:^14.1.0"
|
||||||
mime: "npm:^4.0.4"
|
mime: "npm:^4.0.4"
|
||||||
officeparser: "npm:^4.1.1"
|
officeparser: "npm:^4.1.1"
|
||||||
openai: "npm:^4.52.1"
|
openai: "patch:openai@npm%3A4.71.1#~/.yarn/patches/openai-npm-4.71.1-b5940d6401.patch"
|
||||||
prettier: "npm:^3.2.4"
|
prettier: "npm:^3.2.4"
|
||||||
react: "npm:^18.2.0"
|
react: "npm:^18.2.0"
|
||||||
react-dom: "npm:^18.2.0"
|
react-dom: "npm:^18.2.0"
|
||||||
@ -8905,19 +8898,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"openai@npm:^4.52.1":
|
"openai@npm:4.71.1":
|
||||||
version: 4.59.0
|
version: 4.71.1
|
||||||
resolution: "openai@npm:4.59.0"
|
resolution: "openai@npm:4.71.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node": "npm:^18.11.18"
|
"@types/node": "npm:^18.11.18"
|
||||||
"@types/node-fetch": "npm:^2.6.4"
|
"@types/node-fetch": "npm:^2.6.4"
|
||||||
"@types/qs": "npm:^6.9.15"
|
|
||||||
abort-controller: "npm:^3.0.0"
|
abort-controller: "npm:^3.0.0"
|
||||||
agentkeepalive: "npm:^4.2.1"
|
agentkeepalive: "npm:^4.2.1"
|
||||||
form-data-encoder: "npm:1.7.2"
|
form-data-encoder: "npm:1.7.2"
|
||||||
formdata-node: "npm:^4.3.2"
|
formdata-node: "npm:^4.3.2"
|
||||||
node-fetch: "npm:^2.6.7"
|
node-fetch: "npm:^2.6.7"
|
||||||
qs: "npm:^6.10.3"
|
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
zod: ^3.23.8
|
zod: ^3.23.8
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
@ -8925,7 +8916,29 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
openai: bin/cli
|
openai: bin/cli
|
||||||
checksum: 10c0/0e6c05c8cce925d35a1ee34f43ff5cb2fb54410911b6293b67ab121ac41fb7ee809a289e26bc170985d20b0ab9a2d99b05b8ab011d4c119bb4846f8ed1eb8f69
|
checksum: 10c0/468721223a68ae775dd6d7d2e3f32f7aa1ffb6d3e7fcb91c3851e7aaff75d0bf40b322a418dbc24aef34b86267821891a71f839f4cfce1a3e5bbed2084326314
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"openai@patch:openai@npm%3A4.71.1#~/.yarn/patches/openai-npm-4.71.1-b5940d6401.patch":
|
||||||
|
version: 4.71.1
|
||||||
|
resolution: "openai@patch:openai@npm%3A4.71.1#~/.yarn/patches/openai-npm-4.71.1-b5940d6401.patch::version=4.71.1&hash=138a89"
|
||||||
|
dependencies:
|
||||||
|
"@types/node": "npm:^18.11.18"
|
||||||
|
"@types/node-fetch": "npm:^2.6.4"
|
||||||
|
abort-controller: "npm:^3.0.0"
|
||||||
|
agentkeepalive: "npm:^4.2.1"
|
||||||
|
form-data-encoder: "npm:1.7.2"
|
||||||
|
formdata-node: "npm:^4.3.2"
|
||||||
|
node-fetch: "npm:^2.6.7"
|
||||||
|
peerDependencies:
|
||||||
|
zod: ^3.23.8
|
||||||
|
peerDependenciesMeta:
|
||||||
|
zod:
|
||||||
|
optional: true
|
||||||
|
bin:
|
||||||
|
openai: bin/cli
|
||||||
|
checksum: 10c0/9aa1f3cc1d94b34c883b9f2d8d8709f21ae5629b12eec5e06fdad4262c352c7769ff86d47fb0bc6d2dda75f358ca2357edcfa6e59abb13a86fb5bdcb47212eca
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -9558,15 +9571,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"qs@npm:^6.10.3":
|
|
||||||
version: 6.13.0
|
|
||||||
resolution: "qs@npm:6.13.0"
|
|
||||||
dependencies:
|
|
||||||
side-channel: "npm:^1.0.6"
|
|
||||||
checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"qs@npm:~6.5.2":
|
"qs@npm:~6.5.2":
|
||||||
version: 6.5.3
|
version: 6.5.3
|
||||||
resolution: "qs@npm:6.5.3"
|
resolution: "qs@npm:6.5.3"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user