feat: add context.Context + unexport client fields #14
@@ -46,9 +46,25 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: 'README.md'
|
default: 'README.md'
|
||||||
temperature:
|
temperature:
|
||||||
description: 'LLM temperature (0 = server default)'
|
timeout:
|
||||||
|
description: 'LLM request timeout in seconds (default 300)'
|
||||||
required: false
|
required: false
|
||||||
|
default: '300'
|
||||||
|
description: 'LLM temperature (0 = server default)'
|
||||||
|
timeout:
|
||||||
|
description: 'LLM request timeout in seconds (default 300)'
|
||||||
|
required: false
|
||||||
|
default: '300'
|
||||||
|
required: false
|
||||||
|
timeout:
|
||||||
|
description: 'LLM request timeout in seconds (default 300)'
|
||||||
|
required: false
|
||||||
|
default: '300'
|
||||||
default: '0'
|
default: '0'
|
||||||
|
timeout:
|
||||||
|
description: 'LLM request timeout in seconds (default 300)'
|
||||||
|
required: false
|
||||||
|
default: '300'
|
||||||
version:
|
version:
|
||||||
description: 'review-bot version to install (e.g. v0.1.0, defaults to latest)'
|
description: 'review-bot version to install (e.g. v0.1.0, defaults to latest)'
|
||||||
required: false
|
required: false
|
||||||
@@ -134,6 +150,7 @@ runs:
|
|||||||
PATTERNS_REPO: ${{ inputs.patterns-repo }}
|
PATTERNS_REPO: ${{ inputs.patterns-repo }}
|
||||||
PATTERNS_FILES: ${{ inputs.patterns-files }}
|
PATTERNS_FILES: ${{ inputs.patterns-files }}
|
||||||
LLM_TEMPERATURE: ${{ inputs.temperature }}
|
LLM_TEMPERATURE: ${{ inputs.temperature }}
|
||||||
|
LLM_TIMEOUT: ${{ inputs.timeout }}
|
||||||
run: |
|
run: |
|
||||||
ARGS=""
|
ARGS=""
|
||||||
if [ "${{ inputs.dry-run }}" = "true" ]; then
|
if [ "${{ inputs.dry-run }}" = "true" ]; then
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ func main() {
|
|||||||
patternsFiles := flag.String("patterns-files", envOrDefault("PATTERNS_FILES", "README.md"), "Comma-separated file paths to fetch from patterns repo")
|
patternsFiles := flag.String("patterns-files", envOrDefault("PATTERNS_FILES", "README.md"), "Comma-separated file paths to fetch from patterns repo")
|
||||||
dryRun := flag.Bool("dry-run", false, "Print review to stdout instead of posting")
|
dryRun := flag.Bool("dry-run", false, "Print review to stdout instead of posting")
|
||||||
llmTemp := flag.Float64("llm-temperature", envOrDefaultFloat("LLM_TEMPERATURE", 0), "LLM temperature (0 = server default)")
|
llmTemp := flag.Float64("llm-temperature", envOrDefaultFloat("LLM_TEMPERATURE", 0), "LLM temperature (0 = server default)")
|
||||||
|
llmTimeout := flag.Int("llm-timeout", envOrDefaultInt("LLM_TIMEOUT", 300), "LLM request timeout in seconds (default 300)")
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
@@ -65,6 +66,9 @@ func main() {
|
|||||||
if *llmTemp > 0 {
|
if *llmTemp > 0 {
|
||||||
llmClient.WithTemperature(*llmTemp)
|
llmClient.WithTemperature(*llmTemp)
|
||||||
}
|
}
|
||||||
|
if *llmTimeout > 0 {
|
||||||
|
llmClient.WithTimeout(time.Duration(*llmTimeout) * time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
// Create a top-level context with a 3-minute timeout for all operations
|
// Create a top-level context with a 3-minute timeout for all operations
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Minute)
|
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Minute)
|
||||||
@@ -285,3 +289,13 @@ func envOrDefaultFloat(key string, defaultVal float64) float64 {
|
|||||||
}
|
}
|
||||||
return defaultVal
|
return defaultVal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func envOrDefaultInt(key string, defaultVal int) int {
|
||||||
|
if v := os.Getenv(key); v != "" {
|
||||||
|
i, err := strconv.Atoi(v)
|
||||||
|
if err == nil {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return defaultVal
|
||||||
|
}
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ func NewClient(baseURL, apiKey, model string) *Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WithTemperature sets the temperature for LLM requests (0 = omit, uses server default).
|
// WithTemperature sets the temperature for LLM requests (0 = omit, uses server default).
|
||||||
|
// WithTimeout sets the HTTP request timeout for LLM calls (default 5 minutes).
|
||||||
|
func (c *Client) WithTimeout(d time.Duration) *Client {
|
||||||
|
c.http.Timeout = d
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) WithTemperature(t float64) *Client {
|
func (c *Client) WithTemperature(t float64) *Client {
|
||||||
c.temperature = t
|
c.temperature = t
|
||||||
return c
|
return c
|
||||||
|
|||||||
Reference in New Issue
Block a user