This change adds support for custom HTTP headers in AI inference requests, enabling integration with API Management platforms (Azure APIM, AWS API Gateway, Kong, etc.) and custom request routing/tracking. Features: - New 'custom-headers' input supporting both YAML and JSON formats - Auto-detection of input format for better UX - Header name validation (alphanumeric, hyphens, underscores) - Automatic masking of sensitive headers in logs - Full backward compatibility (optional parameter) Changes: - Added parseCustomHeaders() function in helpers.ts - Updated InferenceRequest interface with optional customHeaders field - Modified simpleInference() and mcpInference() to pass headers to OpenAI client - Added 18 comprehensive test cases - Updated documentation with examples and use cases All 80 tests passing. Zero breaking changes.
80 lines
2.6 KiB
YAML
80 lines
2.6 KiB
YAML
name: 'AI Inference'
|
|
description: Generate an AI response based on a provided prompt
|
|
author: 'GitHub'
|
|
|
|
# Add your action's branding here. This will appear on the GitHub Marketplace.
|
|
branding:
|
|
icon: 'message-square'
|
|
color: red
|
|
|
|
# Define your inputs here.
|
|
inputs:
|
|
prompt:
|
|
description: The prompt for the model
|
|
required: false
|
|
default: ''
|
|
prompt-file:
|
|
description: Path to a file containing the prompt (supports .txt and .prompt.yml
|
|
formats)
|
|
required: false
|
|
default: ''
|
|
input:
|
|
description: Template variables in YAML format for .prompt.yml files
|
|
required: false
|
|
default: ''
|
|
file_input:
|
|
description: Template variables in YAML format mapping variable names to file paths. The file contents will be used for templating.
|
|
required: false
|
|
default: ''
|
|
model:
|
|
description: The model to use
|
|
required: false
|
|
default: 'openai/gpt-4o'
|
|
endpoint:
|
|
description: The endpoint to use
|
|
required: false
|
|
default: 'https://models.github.ai/inference'
|
|
system-prompt:
|
|
description: The system prompt for the model
|
|
required: false
|
|
default: 'You are a helpful assistant'
|
|
system-prompt-file:
|
|
description: Path to a file containing the system prompt
|
|
required: false
|
|
default: ''
|
|
max-tokens:
|
|
description: The maximum number of tokens to generate
|
|
required: false
|
|
default: '200'
|
|
token:
|
|
description: The token to use
|
|
required: false
|
|
default: ${{ github.token }}
|
|
enable-github-mcp:
|
|
description: Enable Model Context Protocol integration with GitHub tools
|
|
required: false
|
|
default: 'false'
|
|
github-mcp-token:
|
|
description: The token to use for GitHub MCP server (defaults to the main token if not specified). This must be a PAT for MCP to work.
|
|
required: false
|
|
default: ''
|
|
github-mcp-toolsets:
|
|
description: 'Comma-separated list of toolsets to enable for GitHub MCP (e.g., "repos,issues,pull_requests,actions"). Use "all" for all toolsets, "default" for default set. If not specified, uses default toolsets (context,repos,issues,pull_requests,users).'
|
|
required: false
|
|
default: ''
|
|
custom-headers:
|
|
description: 'Custom HTTP headers to include in API requests. Supports both YAML format (header1: value1) and JSON format ({"header1": "value1"}). Useful for API Management platforms, rate limiting, and request tracking.'
|
|
required: false
|
|
default: ''
|
|
|
|
# Define your outputs here.
|
|
outputs:
|
|
response:
|
|
description: The response from the model
|
|
response-file:
|
|
description: The file path where the response is saved
|
|
|
|
runs:
|
|
using: node24
|
|
main: dist/index.js
|