feat: support OpenRouter model parameters (#645)
* feat: support OpenRouter model parameters * feat: support OpenRouter model parameters
This commit is contained in:
parent
65e5fdecca
commit
ed1ed5d2e3
|
@ -26,18 +26,22 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type OpenRouterModelProvider struct {
|
type OpenRouterModelProvider struct {
|
||||||
subType string
|
subType string
|
||||||
secretKey string
|
secretKey string
|
||||||
siteName string
|
siteName string
|
||||||
siteUrl 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,
|
subType: subType,
|
||||||
secretKey: secretKey,
|
secretKey: secretKey,
|
||||||
siteName: "Casibase",
|
siteName: "Casibase",
|
||||||
siteUrl: "https://casibase.org",
|
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,
|
Temperature: temperature,
|
||||||
TopP: nil,
|
TopP: topP,
|
||||||
MaxTokens: maxTokens,
|
MaxTokens: maxTokens,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -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" {
|
||||||
|
|
|
@ -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…
Reference in New Issue