Browse Source

feat: support OpenRouter model parameters (#645)

* feat: support OpenRouter model parameters

* feat: support OpenRouter model parameters
HEAD
Kelvin Chiu GitHub 2 years ago
parent
commit
ed1ed5d2e3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 12 deletions
  1. +17
    -11
      model/openrouter.go
  2. +1
    -1
      model/provider.go
  3. +36
    -0
      web/src/ProviderEditPage.js

+ 17
- 11
model/openrouter.go View File

@@ -26,18 +26,22 @@ import (
) )


type OpenRouterModelProvider struct { 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{ 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 return p, nil
} }
@@ -74,6 +78,8 @@ func (p *OpenRouterModelProvider) QueryText(question string, writer io.Writer, b
} }


maxTokens := 4097 - promptTokens maxTokens := 4097 - promptTokens
temperature := p.temperature
topP := p.topP


respStream, err := client.CreateChatCompletionStream( respStream, err := client.CreateChatCompletionStream(
ctx, ctx,
@@ -90,8 +96,8 @@ func (p *OpenRouterModelProvider) QueryText(question string, writer io.Writer, b
}, },
}, },
Stream: false, Stream: false,
Temperature: nil,
TopP: nil,
Temperature: temperature,
TopP: topP,
MaxTokens: maxTokens, MaxTokens: maxTokens,
}, },
) )


+ 1
- 1
model/provider.go View File

@@ -33,7 +33,7 @@ func GetModelProvider(typ string, subType string, clientId string, clientSecret
} else if typ == "Claude" { } else if typ == "Claude" {
p, err = NewClaudeModelProvider(subType, clientSecret) p, err = NewClaudeModelProvider(subType, clientSecret)
} else if typ == "OpenRouter" { } else if typ == "OpenRouter" {
p, err = NewOpenRouterModelProvider(subType, clientSecret)
p, err = NewOpenRouterModelProvider(subType, clientSecret, temperature, topP)
} else if typ == "Ernie" { } else if typ == "Ernie" {
p, err = NewErnieModelProvider(subType, clientId, clientSecret, temperature, topP, presencePenalty) p, err = NewErnieModelProvider(subType, clientId, clientSecret, temperature, topP, presencePenalty)
} else if typ == "iFlytek" { } else if typ == "iFlytek" {


+ 36
- 0
web/src/ProviderEditPage.js View File

@@ -279,6 +279,42 @@ class ProviderEditPage extends React.Component {
</> </>
) : null ) : null
} }
{
(this.state.provider.category === "Model" && this.state.provider.type === "OpenRouter") ? (
<>
<Row style={{marginTop: "20px"}}>
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{i18next.t("provider:Temperature")}:
</Col>
<this.InputSlider
min={0}
max={2}
step={0.01}
value={this.state.provider.temperature}
onChange={(value) => {
this.updateProviderField("temperature", value);
}}
isMobile={Setting.isMobile()}
/>
</Row>
<Row style={{marginTop: "20px"}}>
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{i18next.t("provider:Top P")}:
</Col>
<this.InputSlider
min={0}
max={1}
step={0.01}
value={this.state.provider.topP}
onChange={(value) => {
this.updateProviderField("topP", value);
}}
isMobile={Setting.isMobile()}
/>
</Row>
</>
) : null
}
{ {
(this.state.provider.category === "Model" && this.state.provider.type === "iFlytek") ? ( (this.state.provider.category === "Model" && this.state.provider.type === "iFlytek") ? (
<> <>


Loading…
Cancel
Save