Add customizable system prompt

This commit is contained in:
mudler
2024-04-10 20:35:04 +02:00
parent 0dda705017
commit 230d012915
4 changed files with 26 additions and 0 deletions

View File

@@ -207,6 +207,16 @@ func (a *Agent) consumeJob(job *Job, role string) {
})
}
if a.options.systemPrompt != "" {
if !Messages(a.currentConversation).Exist(a.options.systemPrompt) {
a.currentConversation = append([]openai.ChatCompletionMessage{
{
Role: "system",
Content: a.options.systemPrompt,
}}, a.currentConversation...)
}
}
// RAG
if memory {
// Walk conversation from bottom to top, and find the first message of the user

View File

@@ -30,6 +30,8 @@ type options struct {
kbResults int
ragdb RAGDB
systemPrompt string
// callbacks
reasoningCallback func(ActionCurrentState) bool
resultCallback func(ActionState)
@@ -110,6 +112,13 @@ func WithRAGDB(db RAGDB) Option {
}
}
func WithSystemPrompt(prompt string) Option {
return func(o *options) error {
o.systemPrompt = prompt
return nil
}
}
func WithLLMAPIURL(url string) Option {
return func(o *options) error {
o.LLMAPI.APIURL = url

View File

@@ -39,6 +39,7 @@ type AgentConfig struct {
PermanentGoal string `json:"permanent_goal" form:"permanent_goal"`
EnableKnowledgeBase bool `json:"enable_kb" form:"enable_kb"`
KnowledgeBaseResults int `json:"kb_results" form:"kb_results"`
SystemPrompt string `json:"system_prompt" form:"system_prompt"`
}
type AgentPool struct {
@@ -248,6 +249,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error
}
return true
}),
WithSystemPrompt(config.SystemPrompt),
WithAgentResultCallback(func(state ActionState) {
fmt.Println("Reasoning", state.Reasoning)

View File

@@ -114,6 +114,11 @@
<label for="permanent_goal" class="block text-lg font-medium text-gray-400">Permanent goal</label>
<input type="text" name="permanent_goal" id="permanent_goal" class="mt-1 focus:ring-blue-500 focus:border-blue-500 block w-full shadow-sm sm:text-sm border-gray-300 rounded-md bg-gray-700 text-white" placeholder="Permanent goal">
</div>
<div class="mb-4">
<label for="system_prompt" class="block text-lg font-medium text-gray-400">System prompt</label>
<input type="text" name="system_prompt" id="system_prompt" class="mt-1 focus:ring-blue-500 focus:border-blue-500 block w-full shadow-sm sm:text-sm border-gray-300 rounded-md bg-gray-700 text-white" placeholder="System prompt">
</div>
<div class="flex items-center justify-between">
<button type="submit" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-500 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Create Agent