feat: Add system-prompt-file input for file-based system prompts
This enhancement adds the ability to load a system prompt from a file, similar to the existing prompt-file functionality, providing more flexibility when working with complex system prompts. Key changes: - Added new `system-prompt-file` input to action.yml with proper description - Updated main.ts implementation to handle file-based system prompts with: - File existence checking and appropriate error handling - Proper precedence (system-prompt-file takes priority over system-prompt) - Consistent error messages with existing prompt-file implementation Test coverage added: - Basic usage: Test verifies system-prompt-file loads content correctly - Error handling: Test ensures proper errors when system-prompt-file doesn't exist - Precedence: Test confirms system-prompt-file overrides system-prompt when both exist - Integration: Test validates both prompt-file and system-prompt-file work together - Max tokens: Test verifies custom token limits are properly passed to the model - Testing infrastructure: Improved mock implementations that detect unexpected calls Documentation: - Updated README.md with system-prompt-file in inputs table - Added dedicated usage example for system-prompt-file - Fixed formatting in inputs table CI/CD: - Updated workflow to test system-prompt-file functionality with actual file content This feature maintains backward compatibility while adding a useful option for workflows that need to use more complex system prompts stored in files.
This commit is contained in:
+16
-1
@@ -29,7 +29,22 @@ export async function run(): Promise<void> {
|
||||
throw new Error('prompt is not set')
|
||||
}
|
||||
|
||||
const systemPrompt: string = core.getInput('system-prompt')
|
||||
const systemPromptFile: string = core.getInput('system-prompt-file')
|
||||
const systemPromptString: string = core.getInput('system-prompt')
|
||||
|
||||
let systemPrompt: string
|
||||
if (systemPromptFile !== undefined && systemPromptFile !== '') {
|
||||
if (!fs.existsSync(systemPromptFile)) {
|
||||
throw new Error(`System prompt file not found: ${systemPromptFile}`)
|
||||
}
|
||||
systemPrompt = fs.readFileSync(systemPromptFile, 'utf-8')
|
||||
} else if (systemPromptString !== undefined && systemPromptString !== '') {
|
||||
systemPrompt = systemPromptString
|
||||
} else {
|
||||
// Use default system prompt
|
||||
systemPrompt = 'You are a helpful assistant'
|
||||
}
|
||||
|
||||
const modelName: string = core.getInput('model')
|
||||
const maxTokens: number = parseInt(core.getInput('max-tokens'), 10)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user