Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 7bcb3a2

Browse files
committed
feat: support custom prompt
1 parent 3dbf210 commit 7bcb3a2

File tree

4 files changed

+32
-7
lines changed

4 files changed

+32
-7
lines changed

.leetcode.example.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"env": "en/cn",
44
"gpt": {
55
"api_key": "sk-xxx",
6-
"model": "gpt-3.5-turbo"
6+
"model": "gpt-3.5-turbo",
7+
"prompt": "您是一个算法专家,请基于下面的算法题目,给出该算法的思路和复杂度, 使用 {{ .TextLang }} 回答\nSETP1. 给出算法的归类,如递归,栈\nSETP2. 若是存在暴力解法,给出思路和复杂度\nSETP3. 给出最优解法和复杂度\nSETP4. 代码实现,使用 {{ .Lang }} 语言,代码带注释和测试样例。\n\n{{ .Problem }}"
78
}
89
}
910

README.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,31 @@ $ leetcode-tool help
3838
"env": "en/cn",
3939
"gpt": {
4040
"api_key": "sk-xxx",
41-
"model": "gpt-3.5-turbo"
41+
"model": "gpt-3.5-turbo",
42+
"prompt": "您是一个算法专家,请基于下面的算法题目,给出该算法的思路和复杂度, 使用 {{ .TextLang }} 回答\nSETP1. 给出算法的归类,如递归,栈\nSETP2. 若是存在暴力解法,给出思路和复杂度\nSETP3. 给出最优解法和复杂度\nSETP4. 代码实现,使用 {{ .Lang }} 语言,代码带注释和测试样例。\n\n{{ .Problem }}"
4243
}
4344
}
4445
```
4546
- lang: 当前支持语言 go/py3/ts/java
4647
- env: 界面语言 cn 中文站/ en 英文站
47-
- gpt: 支持gpt对题目提示,在没有思路的时候辅助解题
48+
- gpt: 支持gpt对题目提示,在没有思路的时候辅助解题
4849
- api_key: openai key
4950
- model: openai model
51+
- prompt: 自定义提示词,双花括号代表的是变量,在生成提示词的时候会被替换为字符串
52+
- {{ .TextLang }} 根据env决定,en:英文,cn:中文
53+
- {{ .Lang }} 编程语言
54+
- {{ .Problem }} 题目内容,必须加上
55+
- prompt 如果不填写的话,就使用如下默认prompt提示词模板
56+
57+
```text
58+
您是一个算法专家,请基于下面的算法题目,给出该算法的思路和复杂度, 使用 {{ .TextLang }} 回答
59+
SETP1. 给出算法的归类,如递归,栈
60+
SETP2. 若是存在暴力解法,给出思路和复杂度
61+
SETP3. 给出最优解法和复杂度
62+
SETP4. 代码实现,使用 {{ .Lang }} 语言,代码带注释和测试样例。
63+
64+
{{ .Problem }}
65+
```
5066

5167
### 2. 开始做题
5268

internal/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
type Gpt struct {
99
ApiKey string `json:"api_key" mapstructure:"api_key"` // eg. sk-xxxxxxxxxx
1010
Model string `json:"model" mapstructure:"model"` // eg. gpt-3.5-turbo
11+
Prompt string `json:"prompt" mapstructure:"prompt"` // optional
1112
}
1213

1314
type Config struct {

internal/gpt/openai.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ func (o *Openai) Hint(lc *leetcode.Leetcode, number string) (string, error) {
7373
}
7474

7575
textLang := "中文"
76-
if lc.Config.Lang == "en" {
77-
textLang = "English"
76+
if lc.Config.Env == "en" {
77+
textLang = "英文"
7878
}
7979

8080
var content bytes.Buffer
81+
hitTpl := template.Must(template.New("hint").Parse(GetPrompt(lc)))
8182
err = hitTpl.Execute(&content, &HintData{
8283
Lang: lc.Config.Lang,
8384
TextLang: textLang,
@@ -95,9 +96,15 @@ type HintData struct {
9596
Problem string
9697
}
9798

98-
var hitTpl = template.Must(template.New("hint").Parse(hitStr))
99+
func GetPrompt(lc *leetcode.Leetcode) string {
100+
var prompt = defaultHitStr
101+
if len(lc.Config.Gpt.Prompt) > 0 {
102+
prompt = lc.Config.Gpt.Prompt
103+
}
104+
return prompt
105+
}
99106

100-
var hitStr = `
107+
var defaultHitStr = `
101108
您是一个算法专家,请基于下面的算法题目,给出该算法的思路和复杂度, 使用 {{ .TextLang }} 回答
102109
SETP1. 给出算法的归类,如递归,栈
103110
SETP2. 若是存在暴力解法,给出思路和复杂度

0 commit comments

Comments
 (0)