59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
// internal/prompts/fix_prompt.go
|
||
package prompts
|
||
|
||
import "github.com/sashabaranov/go-openai"
|
||
|
||
func FixPrompt(codeContent, errorMsg, sdkName, refineDoc string) openai.ChatCompletionRequest {
|
||
return openai.ChatCompletionRequest{
|
||
Messages: []openai.ChatCompletionMessage{
|
||
{
|
||
Role: openai.ChatMessageRoleSystem,
|
||
Content: "你是一个资深的 Go 语言工程师。生成的 SDK 代码在编译/格式化时出现错误,请修复。",
|
||
},
|
||
{
|
||
Role: openai.ChatMessageRoleUser,
|
||
Content: GetFixPrompt(codeContent, errorMsg, sdkName, refineDoc),
|
||
},
|
||
},
|
||
Temperature: 0.1, // 更低,保证确定性输出
|
||
TopP: 0.9, // 核采样,平衡多样性和质量
|
||
MaxTokens: 65536, // 加大到 64k,确保足够
|
||
FrequencyPenalty: 0.0, // 代码生成不需要
|
||
PresencePenalty: 0.0, // 代码生成不需要
|
||
Stop: nil, // 不设置,让模型完整输出
|
||
|
||
}
|
||
}
|
||
|
||
// GetFixPrompt 构建修复代码的提示词
|
||
func GetFixPrompt(codeContent, errorMsg, refineDoc, sdkName string) string {
|
||
return `
|
||
## 错误信息
|
||
` + errorMsg + `
|
||
|
||
## 文档(供参考)
|
||
` + refineDoc + `
|
||
|
||
## 当前代码
|
||
` + codeContent + `
|
||
|
||
## ⚠️ 重要:输出格式要求(必须严格遵守)
|
||
每个文件必须以以下格式输出:
|
||
|
||
// File: ` + sdkName + `/文件名.go
|
||
` + "```go" + `
|
||
package ` + sdkName + `
|
||
// ... 代码内容 ...
|
||
` + "```" + `
|
||
|
||
|
||
## 修复要求
|
||
1. 根据错误信息修复代码
|
||
2. 确保代码符合 Go 语法规范
|
||
3. 不要改变接口定义和业务逻辑
|
||
4. 保持原有代码风格
|
||
5. 请直接输出修复后的完整代码,不要有任何额外文字
|
||
|
||
请返回修复后的完整代码。`
|
||
}
|