lib/genai_providers/open_ai/encoder.ex

defmodule GenAI.Provider.OpenAI.Encoder do
  @base_url "https://api.openai.com"
  use GenAI.Model.EncoderBehaviour
  
  def headers(model, settings, session, context, options) do
    with {:ok, {headers, session}} <- super(model, settings, session, context, options) do
      search_scope = [
        options,
        settings[:model_settings],
        settings[:provider_settings],
        settings[:settings],
        settings[:config_settings],
      ]
      
      headers = search_scope
                |> Enum.find_value(& &1[:api_org])
                |> then(& &1 && [{"OpenAI-Organization", &1} | headers] || headers)
      headers = search_scope
                |> Enum.find_value(& &1[:api_project])
                |> then(& &1 && [{"OpenAI-Project", &1} | headers] || headers)
      {:ok, {headers, session}}
    end
  end
  
end