Add customizable system prompt
This commit is contained in:
@@ -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
|
// RAG
|
||||||
if memory {
|
if memory {
|
||||||
// Walk conversation from bottom to top, and find the first message of the user
|
// Walk conversation from bottom to top, and find the first message of the user
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ type options struct {
|
|||||||
kbResults int
|
kbResults int
|
||||||
ragdb RAGDB
|
ragdb RAGDB
|
||||||
|
|
||||||
|
systemPrompt string
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
reasoningCallback func(ActionCurrentState) bool
|
reasoningCallback func(ActionCurrentState) bool
|
||||||
resultCallback func(ActionState)
|
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 {
|
func WithLLMAPIURL(url string) Option {
|
||||||
return func(o *options) error {
|
return func(o *options) error {
|
||||||
o.LLMAPI.APIURL = url
|
o.LLMAPI.APIURL = url
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ type AgentConfig struct {
|
|||||||
PermanentGoal string `json:"permanent_goal" form:"permanent_goal"`
|
PermanentGoal string `json:"permanent_goal" form:"permanent_goal"`
|
||||||
EnableKnowledgeBase bool `json:"enable_kb" form:"enable_kb"`
|
EnableKnowledgeBase bool `json:"enable_kb" form:"enable_kb"`
|
||||||
KnowledgeBaseResults int `json:"kb_results" form:"kb_results"`
|
KnowledgeBaseResults int `json:"kb_results" form:"kb_results"`
|
||||||
|
SystemPrompt string `json:"system_prompt" form:"system_prompt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AgentPool struct {
|
type AgentPool struct {
|
||||||
@@ -248,6 +249,7 @@ func (a *AgentPool) startAgentWithConfig(name string, config *AgentConfig) error
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}),
|
}),
|
||||||
|
WithSystemPrompt(config.SystemPrompt),
|
||||||
WithAgentResultCallback(func(state ActionState) {
|
WithAgentResultCallback(func(state ActionState) {
|
||||||
fmt.Println("Reasoning", state.Reasoning)
|
fmt.Println("Reasoning", state.Reasoning)
|
||||||
|
|
||||||
|
|||||||
@@ -114,6 +114,11 @@
|
|||||||
<label for="permanent_goal" class="block text-lg font-medium text-gray-400">Permanent goal</label>
|
<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">
|
<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>
|
||||||
|
<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">
|
<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">
|
<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
|
Create Agent
|
||||||
|
|||||||
Reference in New Issue
Block a user