openai_compaction_context.go 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. package service
  2. import "context"
  3. type openAIForwardModelContextKey struct{}
  4. type openAIForwardModel struct {
  5. model string
  6. useCompactModelMapping bool
  7. }
  8. // WithOpenAIForwardModel records the model present in the forwarded request
  9. // body after channel mapping and whether the legacy /responses/compact-only
  10. // model mapping applies. Native remote compaction v2 keeps this false, so
  11. // channel restriction checks follow the same model chain used by Forward.
  12. func WithOpenAIForwardModel(ctx context.Context, forwardModel string, useCompactModelMapping bool) context.Context {
  13. if ctx == nil {
  14. ctx = context.Background()
  15. }
  16. return context.WithValue(ctx, openAIForwardModelContextKey{}, openAIForwardModel{
  17. model: forwardModel,
  18. useCompactModelMapping: useCompactModelMapping,
  19. })
  20. }
  21. func openAIForwardModelFromContext(ctx context.Context) (openAIForwardModel, bool) {
  22. if ctx == nil {
  23. return openAIForwardModel{}, false
  24. }
  25. forwardModel, ok := ctx.Value(openAIForwardModelContextKey{}).(openAIForwardModel)
  26. return forwardModel, ok
  27. }