call_useragent.go

 1package openai
 2
 3import (
 4	"charm.land/fantasy"
 5	"charm.land/fantasy/providers/internal/httpheaders"
 6	"github.com/openai/openai-go/v2/option"
 7)
 8
 9// callUARequestOptions returns per-request options that override the
10// client-level User-Agent header when the Call carries agent-level UA
11// settings.
12//
13// When noDefaultUA is true the SDK's own User-Agent is preserved and no
14// override is applied (needed for providers like OpenRouter, which reject
15// User-Agent headers they don't expect).
16func callUARequestOptions(call fantasy.Call, noDefaultUA bool) []option.RequestOption {
17	if noDefaultUA {
18		return nil
19	}
20	if ua, ok := httpheaders.CallUserAgent(call.UserAgent); ok {
21		return []option.RequestOption{option.WithHeader("User-Agent", ua)}
22	}
23	return nil
24}
25
26// objectCallUARequestOptions returns per-request options that override the
27// client-level User-Agent header when the ObjectCall carries agent-level UA
28// settings.
29func objectCallUARequestOptions(call fantasy.ObjectCall, noDefaultUA bool) []option.RequestOption {
30	if noDefaultUA {
31		return nil
32	}
33	if ua, ok := httpheaders.CallUserAgent(call.UserAgent); ok {
34		return []option.RequestOption{option.WithHeader("User-Agent", ua)}
35	}
36	return nil
37}