From ed1ed5d2e3ffa7634c8c63ea0c4631213aff7495 Mon Sep 17 00:00:00 2001 From: Kelvin Chiu Date: Sun, 24 Sep 2023 07:39:57 +0800 Subject: [PATCH] feat: support OpenRouter model parameters (#645) * feat: support OpenRouter model parameters * feat: support OpenRouter model parameters --- model/openrouter.go | 28 +++++++++++++++++----------- model/provider.go | 2 +- web/src/ProviderEditPage.js | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/model/openrouter.go b/model/openrouter.go index 211dbe6..888e3f5 100644 --- a/model/openrouter.go +++ b/model/openrouter.go @@ -26,18 +26,22 @@ import ( ) type OpenRouterModelProvider struct { - subType string - secretKey string - siteName string - siteUrl string + subType string + secretKey string + siteName string + siteUrl string + temperature *float32 + topP *float32 } -func NewOpenRouterModelProvider(subType string, secretKey string) (*OpenRouterModelProvider, error) { +func NewOpenRouterModelProvider(subType string, secretKey string, temperature float32, topP float32) (*OpenRouterModelProvider, error) { p := &OpenRouterModelProvider{ - subType: subType, - secretKey: secretKey, - siteName: "Casibase", - siteUrl: "https://casibase.org", + subType: subType, + secretKey: secretKey, + siteName: "Casibase", + siteUrl: "https://casibase.org", + temperature: &temperature, + topP: &topP, } return p, nil } @@ -74,6 +78,8 @@ func (p *OpenRouterModelProvider) QueryText(question string, writer io.Writer, b } maxTokens := 4097 - promptTokens + temperature := p.temperature + topP := p.topP respStream, err := client.CreateChatCompletionStream( ctx, @@ -90,8 +96,8 @@ func (p *OpenRouterModelProvider) QueryText(question string, writer io.Writer, b }, }, Stream: false, - Temperature: nil, - TopP: nil, + Temperature: temperature, + TopP: topP, MaxTokens: maxTokens, }, ) diff --git a/model/provider.go b/model/provider.go index 4f9ce50..c7d83f2 100644 --- a/model/provider.go +++ b/model/provider.go @@ -33,7 +33,7 @@ func GetModelProvider(typ string, subType string, clientId string, clientSecret } else if typ == "Claude" { p, err = NewClaudeModelProvider(subType, clientSecret) } else if typ == "OpenRouter" { - p, err = NewOpenRouterModelProvider(subType, clientSecret) + p, err = NewOpenRouterModelProvider(subType, clientSecret, temperature, topP) } else if typ == "Ernie" { p, err = NewErnieModelProvider(subType, clientId, clientSecret, temperature, topP, presencePenalty) } else if typ == "iFlytek" { diff --git a/web/src/ProviderEditPage.js b/web/src/ProviderEditPage.js index 86b2067..01cb413 100644 --- a/web/src/ProviderEditPage.js +++ b/web/src/ProviderEditPage.js @@ -279,6 +279,42 @@ class ProviderEditPage extends React.Component { ) : null } + { + (this.state.provider.category === "Model" && this.state.provider.type === "OpenRouter") ? ( + <> + + + {i18next.t("provider:Temperature")}: + + { + this.updateProviderField("temperature", value); + }} + isMobile={Setting.isMobile()} + /> + + + + {i18next.t("provider:Top P")}: + + { + this.updateProviderField("topP", value); + }} + isMobile={Setting.isMobile()} + /> + + + ) : null + } { (this.state.provider.category === "Model" && this.state.provider.type === "iFlytek") ? ( <>