74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
// internal/prompts/validate_prompt.go
|
||
package prompts
|
||
|
||
import (
|
||
"github.com/sashabaranov/go-openai"
|
||
)
|
||
|
||
// GetValidatePrompt 验证代码完整性,直接返回修复后的代码
|
||
func GetValidatePrompt(refineDoc, sdkName, codeContent string) openai.ChatCompletionRequest {
|
||
return openai.ChatCompletionRequest{
|
||
Messages: []openai.ChatCompletionMessage{
|
||
{
|
||
Role: openai.ChatMessageRoleSystem,
|
||
Content: "你是代码审查专家。检查生成的 SDK 代码是否完整实现了文档中的所有内容。",
|
||
},
|
||
{
|
||
Role: openai.ChatMessageRoleUser,
|
||
Content: ValidPrompt(refineDoc, sdkName, codeContent),
|
||
},
|
||
},
|
||
Temperature: 0.1, // 更低,保证确定性输出
|
||
TopP: 0.9, // 核采样,平衡多样性和质量
|
||
MaxTokens: 65536, // 加大到 64k,确保足够
|
||
FrequencyPenalty: 0.0, // 代码生成不需要
|
||
PresencePenalty: 0.0, // 代码生成不需要
|
||
Stop: nil, // 不设置,让模型完整输出
|
||
}
|
||
}
|
||
|
||
func ValidPrompt(codeContent, sdkName, refineDoc string) string {
|
||
|
||
return `你是代码审查专家。检查生成的 SDK 代码是否完整实现了文档中的所有内容。
|
||
|
||
## 精炼文档
|
||
` + refineDoc + `
|
||
|
||
## 当前代码
|
||
` + codeContent + `
|
||
|
||
## 检查清单
|
||
|
||
1. 文档中的所有接口是否都已实现?
|
||
2. 每个接口的请求参数是否完整(字段名、类型、必填)?
|
||
3. 每个接口的响应字段是否完整?
|
||
4. 认证方式是否已实现?
|
||
5. 加密方式是否已实现?
|
||
6. 签名方式是否已实现?
|
||
7. 错误码是否已定义?
|
||
|
||
## 输出规则(严格遵守)
|
||
|
||
**情况一:审查通过,没有任何问题**
|
||
只输出两个字符:` + "`OK`" + `
|
||
|
||
**情况二:存在问题**
|
||
输出修复后的**全量代码**,每个文件用以下格式:
|
||
|
||
// File: ` + sdkName + `/文件名.go
|
||
` + "```go" + `
|
||
package ` + sdkName + `
|
||
// ... 代码内容 ...
|
||
` + "```" + `
|
||
|
||
|
||
|
||
## 重要提醒
|
||
|
||
1. 如果存在问题,必须输出**所有文件**的完整代码,不能只输出修改的部分
|
||
2. 保持原有代码风格不变
|
||
3. 补全所有遗漏的接口、参数、加密/签名方式
|
||
4. 不要加任何描述性注释
|
||
`
|
||
}
|