152 lines
5.3 KiB
Go
152 lines
5.3 KiB
Go
package quesbank
|
||
|
||
import (
|
||
"fmt"
|
||
"strings"
|
||
)
|
||
|
||
// BuildQuestionPrompt 构建题目提示词
|
||
func BuildQuestionPrompt(question Question) AIChatMessages {
|
||
var messages []AIChatMessage
|
||
|
||
switch question.Type {
|
||
case QuestionTypeSingleChoice:
|
||
messages = buildSingleChoicePrompt(question)
|
||
case QuestionTypeMultipleChoice:
|
||
messages = buildMultipleChoicePrompt(question)
|
||
case QuestionTypeTrueFalse:
|
||
messages = buildTrueFalsePrompt(question)
|
||
case QuestionTypeFillBlank:
|
||
messages = buildFillBlankPrompt(question)
|
||
case QuestionTypeShortAnswer:
|
||
messages = buildShortAnswerPrompt(question)
|
||
default:
|
||
messages = buildDefaultPrompt(question)
|
||
}
|
||
|
||
return AIChatMessages{Messages: messages}
|
||
}
|
||
|
||
// buildSingleChoicePrompt 构建单选题提示词
|
||
func buildSingleChoicePrompt(q Question) []AIChatMessage {
|
||
context := buildQuestionContext(q)
|
||
return []AIChatMessage{
|
||
{Role: "user", Content: "接下来你只需要回答选项对应内容即可...格式:[\"选项1\"]"},
|
||
{Role: "user", Content: "就算你不知道选什么也随机选...无需回答任何解释!!!"},
|
||
{Role: "user", Content: singleChoiceExample()},
|
||
{Role: "user", Content: fmt.Sprintf("题目类型:单选题\n题目内容:%s", context)},
|
||
}
|
||
}
|
||
|
||
// buildMultipleChoicePrompt 构建多选题提示词
|
||
func buildMultipleChoicePrompt(q Question) []AIChatMessage {
|
||
context := buildQuestionContext(q)
|
||
return []AIChatMessage{
|
||
{Role: "user", Content: "接下来你只需要回答选项对应内容即可...格式:[\"选项1\",\"选项2\"]"},
|
||
{Role: "user", Content: "就算你不知道选什么也随机选...无需回答任何解释!!!"},
|
||
{Role: "user", Content: multipleChoiceExample()},
|
||
{Role: "user", Content: fmt.Sprintf("题目类型:多选题\n题目内容:%s", context)},
|
||
}
|
||
}
|
||
|
||
// buildTrueFalsePrompt 构建判断题提示词
|
||
func buildTrueFalsePrompt(q Question) []AIChatMessage {
|
||
context := buildQuestionContext(q)
|
||
return []AIChatMessage{
|
||
{Role: "user", Content: "接下来你只需要回答\"正确\"或者\"错误\"即可...格式:[\"正确\"]"},
|
||
{Role: "user", Content: "就算你不知道选什么也随机选...无需回答任何解释!!!"},
|
||
{Role: "user", Content: trueFalseExample()},
|
||
{Role: "user", Content: fmt.Sprintf("题目类型:判断题\n题目内容:%s", context)},
|
||
}
|
||
}
|
||
|
||
// buildFillBlankPrompt 构建填空题提示词
|
||
func buildFillBlankPrompt(q Question) []AIChatMessage {
|
||
return []AIChatMessage{
|
||
{Role: "user", Content: "其中,\"( )\"相关字样的地方是你需要填写答案的地方...格式:[\"答案1\",\"答案2\"]"},
|
||
{Role: "user", Content: "就算你不知道填什么也随机填...无需回答任何解释!!!"},
|
||
{Role: "user", Content: fillBlankExample()},
|
||
{Role: "user", Content: fmt.Sprintf("题目类型:填空题\n题目内容:%s", q.Text)},
|
||
}
|
||
}
|
||
|
||
// buildShortAnswerPrompt 构建简答题提示词
|
||
func buildShortAnswerPrompt(q Question) []AIChatMessage {
|
||
return []AIChatMessage{
|
||
{Role: "user", Content: "这是一个简答题...格式:[\"答案\"],注意不要拆分答案!!!"},
|
||
{Role: "user", Content: "就算你不知道答什么也随机答...无需回答任何解释!!!"},
|
||
{Role: "user", Content: shortAnswerExample()},
|
||
{Role: "user", Content: fmt.Sprintf("题目类型:简答题\n题目内容:%s", q.Text)},
|
||
}
|
||
}
|
||
|
||
// buildDefaultPrompt 构建默认提示词
|
||
func buildDefaultPrompt(q Question) []AIChatMessage {
|
||
context := buildQuestionContext(q)
|
||
return []AIChatMessage{
|
||
{Role: "user", Content: "请回答以下题目,格式:[\"答案\"]"},
|
||
{Role: "user", Content: context},
|
||
}
|
||
}
|
||
|
||
// buildQuestionContext 构建题目上下文
|
||
func buildQuestionContext(q Question) string {
|
||
var sb strings.Builder
|
||
sb.WriteString(q.Text)
|
||
sb.WriteString("\n")
|
||
for key, val := range q.Options {
|
||
sb.WriteString(fmt.Sprintf("%s. %s\n", key, val))
|
||
}
|
||
return sb.String()
|
||
}
|
||
|
||
func singleChoiceExample() string {
|
||
return `比如:
|
||
题目类型:单选题
|
||
题目内容:新中国是什么时候成立的
|
||
A. 1949年10月5日
|
||
B. 1949年10月1日
|
||
C. 1949年09月1日
|
||
D. 2002年10月1日
|
||
|
||
那么你应该回答选项B的内容:"["1949年10月1日"]"`
|
||
}
|
||
|
||
func multipleChoiceExample() string {
|
||
return `比如:
|
||
题目类型:多选题
|
||
题目内容:马克思关于资本积累的学说是剩余价值理论的重要组成部分...
|
||
A. 资本主义扩大再生产的源泉
|
||
B. 资本有机构成呈现不断降低趋势的根本原因
|
||
C. 社会财富占有两极分化的重要原因
|
||
D. 资本主义社会失业现象产生的根源
|
||
|
||
那么你应该回答选项A、C、D的内容:"["资本主义扩大再生产的源泉","社会财富占有两极分化的重要原因","资本主义社会失业现象产生的根源"]"`
|
||
}
|
||
|
||
func trueFalseExample() string {
|
||
return `比如:
|
||
题目类型:判断题
|
||
题目内容:新中国是1949年10月1日成立的吗?
|
||
A. 正确
|
||
B. 错误
|
||
|
||
那么你应该回答选项A的内容:"["正确"]"`
|
||
}
|
||
|
||
func fillBlankExample() string {
|
||
return `比如:
|
||
题目类型:填空题
|
||
题目内容:新中国成立于( )年。
|
||
|
||
那么你应该回答:"["1949"]"`
|
||
}
|
||
|
||
func shortAnswerExample() string {
|
||
return `比如:
|
||
题目类型:简答题
|
||
题目内容:请简述新中国成立的历史意义
|
||
|
||
那么你应该回答:"["新中国的成立标志着中国人民从此站起来了,结束了半殖民地半封建社会的历史..."]"`
|
||
}
|