mirror of
https://github.com/mariocandela/beelzebub.git
synced 2025-07-01 18:47:26 -04:00
Feat: Improve OpenAI plugin: model and prompt (#100)
* Change OpenAI model and prompt. --------- Co-authored-by: mariocandela <mario.candela.personal@gmail.com>
This commit is contained in:
@ -4,16 +4,14 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/go-resty/resty/v2"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// Reference: https://www.engraved.blog/building-a-virtual-machine-inside/
|
promptVirtualizeLinuxTerminal = "You will act as an Ubuntu Linux terminal. The user will type commands, and you are to reply with what the terminal should show. Your responses must be contained within a single code block. Do not provide explanations or type commands unless explicitly instructed by the user. Remember previous commands and consider their effects on subsequent outputs.\n\nA:pwd\n\nQ:/home/user\n\n"
|
||||||
promptVirtualizeLinuxTerminal = "I want you to act as a Linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. Do no write explanations. Do not type commands unless I instruct you to do so.\n\nA:pwd\n\nQ:/home/user\n\n"
|
|
||||||
ChatGPTPluginName = "OpenAIGPTLinuxTerminal"
|
ChatGPTPluginName = "OpenAIGPTLinuxTerminal"
|
||||||
openAIGPTEndpoint = "https://api.openai.com/v1/completions"
|
openAIGPTEndpoint = "https://api.openai.com/v1/completions"
|
||||||
)
|
)
|
||||||
@ -83,7 +81,7 @@ func buildPrompt(histories []History, command string) string {
|
|||||||
|
|
||||||
func (openAIGPTVirtualTerminal *openAIGPTVirtualTerminal) GetCompletions(command string) (string, error) {
|
func (openAIGPTVirtualTerminal *openAIGPTVirtualTerminal) GetCompletions(command string) (string, error) {
|
||||||
requestJson, err := json.Marshal(gptRequest{
|
requestJson, err := json.Marshal(gptRequest{
|
||||||
Model: "text-davinci-003",
|
Model: "gpt-3.5-turbo-instruct",
|
||||||
Prompt: buildPrompt(openAIGPTVirtualTerminal.Histories, command),
|
Prompt: buildPrompt(openAIGPTVirtualTerminal.Histories, command),
|
||||||
Temperature: 0,
|
Temperature: 0,
|
||||||
MaxTokens: 100,
|
MaxTokens: 100,
|
||||||
|
@ -18,7 +18,7 @@ func TestBuildPromptEmptyHistory(t *testing.T) {
|
|||||||
|
|
||||||
//Then
|
//Then
|
||||||
assert.Equal(t,
|
assert.Equal(t,
|
||||||
"I want you to act as a Linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. Do no write explanations. Do not type commands unless I instruct you to do so.\n\nA:pwd\n\nQ:/home/user\n\nA:pwd\n\nQ:",
|
"You will act as an Ubuntu Linux terminal. The user will type commands, and you are to reply with what the terminal should show. Your responses must be contained within a single code block. Do not provide explanations or type commands unless explicitly instructed by the user. Remember previous commands and consider their effects on subsequent outputs.\n\nA:pwd\n\nQ:/home/user\n\nA:pwd\n\nQ:",
|
||||||
prompt)
|
prompt)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ func TestBuildPromptWithHistory(t *testing.T) {
|
|||||||
|
|
||||||
//Then
|
//Then
|
||||||
assert.Equal(t,
|
assert.Equal(t,
|
||||||
"I want you to act as a Linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. Do no write explanations. Do not type commands unless I instruct you to do so.\n\nA:pwd\n\nQ:/home/user\n\nA:cat hello.txt\n\nQ:world\n\nA:echo 1234\n\nQ:1234\n\nA:pwd\n\nQ:",
|
"You will act as an Ubuntu Linux terminal. The user will type commands, and you are to reply with what the terminal should show. Your responses must be contained within a single code block. Do not provide explanations or type commands unless explicitly instructed by the user. Remember previous commands and consider their effects on subsequent outputs.\n\nA:pwd\n\nQ:/home/user\n\nA:cat hello.txt\n\nQ:world\n\nA:echo 1234\n\nQ:1234\n\nA:pwd\n\nQ:",
|
||||||
prompt)
|
prompt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user