// internal/prompts/validate_prompt.go package prompts import ( "github.com/sashabaranov/go-openai" ) // GetValidatePrompt 步骤1:只检查,输出缺失列表 func GetValidatePrompt(refineDoc, sdkName, codeContent string) openai.ChatCompletionRequest { return openai.ChatCompletionRequest{ Messages: []openai.ChatCompletionMessage{ { Role: openai.ChatMessageRoleSystem, Content: "你是代码审查专家。检查 SDK 代码是否完整实现了文档中的所有内容。只输出检查结论,不要生成代码。", }, { Role: openai.ChatMessageRoleUser, Content: ValidateOnlyPrompt(refineDoc, sdkName, codeContent), }, }, //ToolChoice: nil, Temperature: 0.1, TopP: 0.9, MaxTokens: 4096, // 稍微大一点,因为缺失列表可能不止几行 FrequencyPenalty: 0.0, PresencePenalty: 0.0, Stop: nil, } } // GetFixByIssuesPrompt 步骤2:根据缺失列表修复代码 func GetFixByIssuesPrompt(refineDoc, sdkName, codeContent, issues string) openai.ChatCompletionRequest { return openai.ChatCompletionRequest{ Messages: []openai.ChatCompletionMessage{ { Role: openai.ChatMessageRoleSystem, Content: "你是代码生成专家。根据问题列表修复代码,输出全量代码。", }, { Role: openai.ChatMessageRoleUser, Content: FixByIssuesPrompt(refineDoc, sdkName, codeContent, issues), }, }, //ToolChoice: nil, Temperature: 0.1, TopP: 0.9, MaxTokens: 65536, FrequencyPenalty: 0.0, PresencePenalty: 0.0, Stop: nil, } } // ========== 通用 Prompt ========== func ValidateOnlyPrompt(refineDoc, sdkName, codeContent string) string { return `你是代码审查专家。检查 SDK 代码是否完整实现了文档中的所有内容。 ## 精炼文档(接口定义) ` + refineDoc + ` ## 当前代码 ` + codeContent + ` ## 检查项(根据文档内容自动适配) 请根据文档中的接口定义,逐项检查以下内容: 1. **接口/方法完整性** - 文档中定义的所有 API 接口/方法,代码中是否都有对应的实现? - 方法名、参数、返回值是否与文档一致? 2. **数据结构完整性** - 文档中定义的所有请求/响应结构体,代码中是否都已定义? - 结构体字段名、类型、必填/可选是否与文档一致? - 枚举值、常量是否正确定义? 3. **认证与安全** - 文档中的认证方式(签名、加密、token等)是否已实现? - 签名算法、加密算法是否正确? 4. **错误处理** - 文档中的错误码是否已定义? - 错误类型、错误信息是否完整? 5. **客户端初始化** - 是否有 NewClient 方法? - 是否支持配置(超时、重试等)? 6. **其他文档要求** - 文档中提到的其他功能(日志、监控、中间件等)是否已实现? ## ⚠️ 输出规则(必须严格遵守) **情况一:审查通过,没有任何问题** 只输出:OK **情况二:存在问题** 输出缺失项列表,按以下格式: ### 缺失接口 - InterfaceName: 文档定义了但代码中没有实现 ### 缺失字段 - StructName.FieldName: 文档定义了但结构体中缺少 ### 缺失认证/加密 - 具体描述缺失的认证或加密逻辑 ### 其他缺失 - 其他文档要求但代码中缺失的内容 ❌ 绝对不要输出修复后的代码! ❌ 绝对不要输出完整的文件内容! ✅ 只输出 OK 或上述格式的缺失列表! ` } func FixByIssuesPrompt(refineDoc, sdkName, codeContent, issues string) string { return `根据问题列表修复 SDK 代码。 ## 精炼文档(供参考) ` + refineDoc + ` ## 当前代码 ` + codeContent + ` ## 需要修复的问题 ` + issues + ` ## 修复要求 1. 根据问题列表,逐项修复代码 2. 补充缺失的接口、方法、结构体、字段 3. 补充缺失的认证、加密、签名逻辑 4. 补充缺失的错误码定义 5. 保持原有代码风格不变 6. 不要删除现有代码(除非是重复定义) ## 输出规则 输出修复后的**完整代码**,每个文件用以下格式: // File: ` + sdkName + `/文件名.go ` + "```go" + ` package ` + sdkName + ` // ... 代码内容 ... ` + "```" + ` ❌ 不要只输出修改的部分! ✅ 必须输出所有文件的完整代码! ` }