mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-21 19:41:05 +08:00
🐛 Unable to set up Azure OpenAI https://github.com/siyuan-note/siyuan/issues/10469
This commit is contained in:
parent
9f69d7dc4a
commit
77885a8cc0
@ -282,6 +282,8 @@
|
|||||||
"apiBaseURL": "API Base URL",
|
"apiBaseURL": "API Base URL",
|
||||||
"apiBaseURLTip": "The base address of the request, such as <code class='fn__code'>https://api.openai.com/v1</code>",
|
"apiBaseURLTip": "The base address of the request, such as <code class='fn__code'>https://api.openai.com/v1</code>",
|
||||||
"apiUserAgentTip": "The user agent that initiated the request, that is, the HTTP header <code class='fn__code'>User-Agent</code>",
|
"apiUserAgentTip": "The user agent that initiated the request, that is, the HTTP header <code class='fn__code'>User-Agent</code>",
|
||||||
|
"apiVersion": "API version",
|
||||||
|
"apiVersionTip": "Only required when using the Azure OpenAI service",
|
||||||
"apiProvider": "API Provider",
|
"apiProvider": "API Provider",
|
||||||
"apiProviderTip": "Use the selected API provider to implement AI-related functions",
|
"apiProviderTip": "Use the selected API provider to implement AI-related functions",
|
||||||
"skip": "Skip",
|
"skip": "Skip",
|
||||||
|
@ -282,6 +282,8 @@
|
|||||||
"apiBaseURL": "URL base de la API",
|
"apiBaseURL": "URL base de la API",
|
||||||
"apiBaseURLTip": "La dirección base de la solicitud, como <code class='fn__code'>https://api.openai.com/v1</code>",
|
"apiBaseURLTip": "La dirección base de la solicitud, como <code class='fn__code'>https://api.openai.com/v1</code>",
|
||||||
"apiUserAgentTip": "El agente de usuario que inició la solicitud, es decir, el encabezado HTTP <code class='fn__code'>User-Agent</code>",
|
"apiUserAgentTip": "El agente de usuario que inició la solicitud, es decir, el encabezado HTTP <code class='fn__code'>User-Agent</code>",
|
||||||
|
"apiVersion": "Versión API",
|
||||||
|
"apiVersionTip": "Sólo es necesario cuando se utiliza el servicio Azure OpenAI",
|
||||||
"apiProvider": "API proveedor",
|
"apiProvider": "API proveedor",
|
||||||
"apiProviderTip": "Utilice el proveedor de API seleccionado para implementar funciones relacionadas con la IA",
|
"apiProviderTip": "Utilice el proveedor de API seleccionado para implementar funciones relacionadas con la IA",
|
||||||
"skip": "barco",
|
"skip": "barco",
|
||||||
|
@ -282,6 +282,8 @@
|
|||||||
"apiBaseURL": "URL de base de l'API",
|
"apiBaseURL": "URL de base de l'API",
|
||||||
"apiBaseURLTip": "L'adresse de base de la requête, telle que <code class='fn__code'>https://api.openai.com/v1</code>",
|
"apiBaseURLTip": "L'adresse de base de la requête, telle que <code class='fn__code'>https://api.openai.com/v1</code>",
|
||||||
"apiUserAgentTip": "L'agent utilisateur qui a initié la requête, c'est-à-dire l'en-tête HTTP <code class='fn__code'>User-Agent</code>",
|
"apiUserAgentTip": "L'agent utilisateur qui a initié la requête, c'est-à-dire l'en-tête HTTP <code class='fn__code'>User-Agent</code>",
|
||||||
|
"apiVersion": "Version API",
|
||||||
|
"apiVersionTip": "Requis uniquement lors de l'utilisation du service Azure OpenAI",
|
||||||
"apiProvider": "API du fournisseur",
|
"apiProvider": "API du fournisseur",
|
||||||
"apiProviderTip": "Utiliser le fournisseur d'API sélectionné pour implémenter les fonctions liées à l'IA",
|
"apiProviderTip": "Utiliser le fournisseur d'API sélectionné pour implémenter les fonctions liées à l'IA",
|
||||||
"skip": "Navire",
|
"skip": "Navire",
|
||||||
|
@ -282,6 +282,8 @@
|
|||||||
"apiBaseURL": "API 基礎地址",
|
"apiBaseURL": "API 基礎地址",
|
||||||
"apiBaseURLTip": "發起請求的基礎地址,如 <code class='fn__code'>https://api.openai.com/v1</code>",
|
"apiBaseURLTip": "發起請求的基礎地址,如 <code class='fn__code'>https://api.openai.com/v1</code>",
|
||||||
"apiUserAgentTip": "發起請求的使用者代理,即 HTTP 標頭 <code class='fn__code'>User-Agent</code>",
|
"apiUserAgentTip": "發起請求的使用者代理,即 HTTP 標頭 <code class='fn__code'>User-Agent</code>",
|
||||||
|
"apiVersion": "API 版本",
|
||||||
|
"apiVersionTip": "僅在使用 Azure OpenAI 服務時需要設定",
|
||||||
"apiProvider": "API 提供商",
|
"apiProvider": "API 提供商",
|
||||||
"apiProviderTip": "選擇後將使用該提供商的 API 服務實現 AI 相關功能",
|
"apiProviderTip": "選擇後將使用該提供商的 API 服務實現 AI 相關功能",
|
||||||
"skip": "跳過",
|
"skip": "跳過",
|
||||||
|
@ -281,6 +281,8 @@
|
|||||||
"apiMaxTokensTip": "请求 API 时传入的 <code class='fn__code'>max_tokens</code> 参数,用于控制生成的文本长度",
|
"apiMaxTokensTip": "请求 API 时传入的 <code class='fn__code'>max_tokens</code> 参数,用于控制生成的文本长度",
|
||||||
"apiBaseURL": "API 基础地址",
|
"apiBaseURL": "API 基础地址",
|
||||||
"apiBaseURLTip": "发起请求的基础地址,如 <code class='fn__code'>https://api.openai.com/v1</code>",
|
"apiBaseURLTip": "发起请求的基础地址,如 <code class='fn__code'>https://api.openai.com/v1</code>",
|
||||||
|
"apiVersion": "API 版本",
|
||||||
|
"apiVersionTip": "仅在使用 Azure OpenAI 服务时需要设置",
|
||||||
"apiUserAgentTip": "发起请求的用户代理,即 HTTP 标头 <code class='fn__code'>User-Agent</code>",
|
"apiUserAgentTip": "发起请求的用户代理,即 HTTP 标头 <code class='fn__code'>User-Agent</code>",
|
||||||
"apiProvider": "API 提供商",
|
"apiProvider": "API 提供商",
|
||||||
"apiProviderTip": "选择后将使用该提供商的 API 服务实现 AI 相关功能",
|
"apiProviderTip": "选择后将使用该提供商的 API 服务实现 AI 相关功能",
|
||||||
|
@ -53,6 +53,12 @@ export const ai = {
|
|||||||
<input class="b3-text-field fn__block" id="apiBaseURL" value="${window.siyuan.config.ai.openAI.apiBaseURL}"/>
|
<input class="b3-text-field fn__block" id="apiBaseURL" value="${window.siyuan.config.ai.openAI.apiBaseURL}"/>
|
||||||
<div class="b3-label__text">${window.siyuan.languages.apiBaseURLTip}</div>
|
<div class="b3-label__text">${window.siyuan.languages.apiBaseURLTip}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="b3-label">
|
||||||
|
${window.siyuan.languages.apiVersion}
|
||||||
|
<div class="fn__hr"></div>
|
||||||
|
<input class="b3-text-field fn__block" id="apiVersion" value="${window.siyuan.config.ai.openAI.apiVersion}"/>
|
||||||
|
<div class="b3-label__text">${window.siyuan.languages.apiVersionTip}</div>
|
||||||
|
</div>
|
||||||
<div class="b3-label">
|
<div class="b3-label">
|
||||||
User-Agent
|
User-Agent
|
||||||
<div class="fn__hr"></div>
|
<div class="fn__hr"></div>
|
||||||
@ -119,6 +125,14 @@ export const ai = {
|
|||||||
<input class="b3-text-field fn__block" id="apiBaseURL" value="${window.siyuan.config.ai.openAI.apiBaseURL}"/>
|
<input class="b3-text-field fn__block" id="apiBaseURL" value="${window.siyuan.config.ai.openAI.apiBaseURL}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="fn__flex b3-label">
|
||||||
|
<div class="fn__block">
|
||||||
|
${window.siyuan.languages.apiVersion}
|
||||||
|
<div class="b3-label__text">${window.siyuan.languages.apiVersionTip}</div>
|
||||||
|
<span class="fn__hr"></span>
|
||||||
|
<input class="b3-text-field fn__block" id="apiVersion" value="${window.siyuan.config.ai.openAI.apiVersion}"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="fn__flex b3-label">
|
<div class="fn__flex b3-label">
|
||||||
<div class="fn__block">
|
<div class="fn__block">
|
||||||
User-Agent
|
User-Agent
|
||||||
@ -146,6 +160,7 @@ export const ai = {
|
|||||||
openAI: {
|
openAI: {
|
||||||
apiUserAgent: (ai.element.querySelector("#apiUserAgent") as HTMLInputElement).value,
|
apiUserAgent: (ai.element.querySelector("#apiUserAgent") as HTMLInputElement).value,
|
||||||
apiBaseURL: (ai.element.querySelector("#apiBaseURL") as HTMLInputElement).value,
|
apiBaseURL: (ai.element.querySelector("#apiBaseURL") as HTMLInputElement).value,
|
||||||
|
apiVersion: (ai.element.querySelector("#apiVersion") as HTMLInputElement).value,
|
||||||
apiKey: (ai.element.querySelector("#apiKey") as HTMLInputElement).value,
|
apiKey: (ai.element.querySelector("#apiKey") as HTMLInputElement).value,
|
||||||
apiModel: (ai.element.querySelector("#apiModel") as HTMLSelectElement).value,
|
apiModel: (ai.element.querySelector("#apiModel") as HTMLSelectElement).value,
|
||||||
apiMaxTokens: parseInt((ai.element.querySelector("#apiMaxTokens") as HTMLInputElement).value),
|
apiMaxTokens: parseInt((ai.element.querySelector("#apiMaxTokens") as HTMLInputElement).value),
|
||||||
|
1
app/src/types/index.d.ts
vendored
1
app/src/types/index.d.ts
vendored
@ -727,6 +727,7 @@ interface IConfig {
|
|||||||
apiProvider: string // OpenAI, Azure
|
apiProvider: string // OpenAI, Azure
|
||||||
apiUserAgent: string
|
apiUserAgent: string
|
||||||
apiBaseURL: string
|
apiBaseURL: string
|
||||||
|
apiVersion: string
|
||||||
apiKey: string
|
apiKey: string
|
||||||
apiModel: string
|
apiModel: string
|
||||||
apiMaxTokens: number
|
apiMaxTokens: number
|
||||||
|
@ -37,6 +37,7 @@ type OpenAI struct {
|
|||||||
APIBaseURL string `json:"apiBaseURL"`
|
APIBaseURL string `json:"apiBaseURL"`
|
||||||
APIUserAgent string `json:"apiUserAgent"`
|
APIUserAgent string `json:"apiUserAgent"`
|
||||||
APIProvider string `json:"apiProvider"` // OpenAI, Azure
|
APIProvider string `json:"apiProvider"` // OpenAI, Azure
|
||||||
|
APIVersion string `json:"apiVersion"` // Azure API version
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAI() *AI {
|
func NewAI() *AI {
|
||||||
|
@ -92,7 +92,7 @@ func chatGPTContinueWrite(msg string, contextMsgs []string, cloud bool) (ret str
|
|||||||
if cloud {
|
if cloud {
|
||||||
gpt = &CloudGPT{}
|
gpt = &CloudGPT{}
|
||||||
} else {
|
} else {
|
||||||
gpt = &OpenAIGPT{c: util.NewOpenAIClient(Conf.AI.OpenAI.APIKey, Conf.AI.OpenAI.APIProxy, Conf.AI.OpenAI.APIBaseURL, Conf.AI.OpenAI.APIUserAgent)}
|
gpt = &OpenAIGPT{c: util.NewOpenAIClient(Conf.AI.OpenAI.APIKey, Conf.AI.OpenAI.APIProxy, Conf.AI.OpenAI.APIBaseURL, Conf.AI.OpenAI.APIUserAgent, Conf.AI.OpenAI.APIVersion, Conf.AI.OpenAI.APIProvider)}
|
||||||
}
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
|
@ -75,8 +75,13 @@ func ChatGPT(msg string, contextMsgs []string, c *openai.Client, model string, m
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewOpenAIClient(apiKey, apiProxy, apiBaseURL, apiUserAgent string) *openai.Client {
|
func NewOpenAIClient(apiKey, apiProxy, apiBaseURL, apiUserAgent, apiVersion, apiProvider string) *openai.Client {
|
||||||
config := openai.DefaultConfig(apiKey)
|
config := openai.DefaultConfig(apiKey)
|
||||||
|
if "Azure" == apiProvider {
|
||||||
|
config = openai.DefaultAzureConfig(apiKey, apiBaseURL)
|
||||||
|
config.APIVersion = apiVersion
|
||||||
|
}
|
||||||
|
|
||||||
transport := &http.Transport{}
|
transport := &http.Transport{}
|
||||||
if "" != apiProxy {
|
if "" != apiProxy {
|
||||||
proxyUrl, err := url.Parse(apiProxy)
|
proxyUrl, err := url.Parse(apiProxy)
|
||||||
|
Loading…
Reference in New Issue
Block a user