forked from Shinonome/dots-hyprland
ai: system prompt
This commit is contained in:
@@ -4,6 +4,10 @@ pragma Singleton
|
|||||||
pragma ComponentBehavior: Bound
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
Singleton {
|
Singleton {
|
||||||
|
property QtObject ai: QtObject {
|
||||||
|
property string systemPrompt: ""
|
||||||
|
}
|
||||||
|
|
||||||
property QtObject appearance: QtObject {
|
property QtObject appearance: QtObject {
|
||||||
property int fakeScreenRounding: 1 // 0: None | 1: Always | 2: When not fullscreen
|
property int fakeScreenRounding: 1 // 0: None | 1: Always | 2: When not fullscreen
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ Singleton {
|
|||||||
readonly property string interfaceRole: "interface"
|
readonly property string interfaceRole: "interface"
|
||||||
readonly property string apiKeyEnvVarName: "API_KEY"
|
readonly property string apiKeyEnvVarName: "API_KEY"
|
||||||
property Component aiMessageComponent: AiMessageData {}
|
property Component aiMessageComponent: AiMessageData {}
|
||||||
|
property string systemPrompt: ConfigOptions.ai.systemPrompt ?? ""
|
||||||
property var messages: []
|
property var messages: []
|
||||||
readonly property var apiKeys: KeyringStorage.keyringData?.apiKeys ?? {}
|
readonly property var apiKeys: KeyringStorage.keyringData?.apiKeys ?? {}
|
||||||
|
|
||||||
@@ -214,7 +215,10 @@ Singleton {
|
|||||||
{
|
{
|
||||||
"google_search": {}
|
"google_search": {}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"system_instruction": {
|
||||||
|
"parts": [{ text: root.systemPrompt }]
|
||||||
|
}
|
||||||
};
|
};
|
||||||
return model.extraParams ? Object.assign({}, baseData, model.extraParams) : baseData;
|
return model.extraParams ? Object.assign({}, baseData, model.extraParams) : baseData;
|
||||||
}
|
}
|
||||||
@@ -222,12 +226,15 @@ Singleton {
|
|||||||
function buildOpenAIRequestData(model, messages) {
|
function buildOpenAIRequestData(model, messages) {
|
||||||
let baseData = {
|
let baseData = {
|
||||||
"model": model.model,
|
"model": model.model,
|
||||||
"messages": messages.filter(message => (message.role != Ai.interfaceRole)).map(message => {
|
"messages": [
|
||||||
return {
|
{role: "system", content: root.systemPrompt},
|
||||||
"role": message.role,
|
...messages.filter(message => (message.role != Ai.interfaceRole)).map(message => {
|
||||||
"content": message.content,
|
return {
|
||||||
}
|
"role": message.role,
|
||||||
}),
|
"content": message.content,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
],
|
||||||
"stream": true,
|
"stream": true,
|
||||||
};
|
};
|
||||||
return model.extraParams ? Object.assign({}, baseData, model.extraParams) : baseData;
|
return model.extraParams ? Object.assign({}, baseData, model.extraParams) : baseData;
|
||||||
|
|||||||
Reference in New Issue
Block a user