feat: Add support for OpenAI-Organization and OpenAI-Project headers (#626)

Added support for OpenAI-Organization and OpenAI-Project headers for
OpenAI API calls.

This is for #74
This commit is contained in:
rumple
2025-04-25 22:22:42 +05:30
committed by GitHub
parent 866626347b
commit 69ce06d2f8
4 changed files with 44 additions and 3 deletions

View File

@@ -11,7 +11,13 @@ import type {
} from "openai/resources/responses/responses.mjs";
import type { Reasoning } from "openai/resources.mjs";
import { OPENAI_TIMEOUT_MS, getApiKey, getBaseUrl } from "../config.js";
import {
OPENAI_TIMEOUT_MS,
OPENAI_ORGANIZATION,
OPENAI_PROJECT,
getApiKey,
getBaseUrl,
} from "../config.js";
import { log } from "../logger/log.js";
import { parseToolCallArguments } from "../parsers.js";
import { responsesCreateViaChatCompletions } from "../responses.js";
@@ -302,6 +308,10 @@ export class AgentLoop {
originator: ORIGIN,
version: CLI_VERSION,
session_id: this.sessionId,
...(OPENAI_ORGANIZATION
? { "OpenAI-Organization": OPENAI_ORGANIZATION }
: {}),
...(OPENAI_PROJECT ? { "OpenAI-Project": OPENAI_PROJECT } : {}),
},
...(timeoutMs !== undefined ? { timeout: timeoutMs } : {}),
});

View File

@@ -36,6 +36,8 @@ export const OPENAI_TIMEOUT_MS =
parseInt(process.env["OPENAI_TIMEOUT_MS"] || "0", 10) || undefined;
export const OPENAI_BASE_URL = process.env["OPENAI_BASE_URL"] || "";
export let OPENAI_API_KEY = process.env["OPENAI_API_KEY"] || "";
export const OPENAI_ORGANIZATION = process.env["OPENAI_ORGANIZATION"] || "";
export const OPENAI_PROJECT = process.env["OPENAI_PROJECT"] || "";
export function setApiKey(apiKey: string): void {
OPENAI_API_KEY = apiKey;

View File

@@ -1,7 +1,12 @@
import type { ResponseItem } from "openai/resources/responses/responses.mjs";
import { approximateTokensUsed } from "./approximate-tokens-used.js";
import { getBaseUrl, getApiKey } from "./config";
import {
OPENAI_ORGANIZATION,
OPENAI_PROJECT,
getBaseUrl,
getApiKey,
} from "./config";
import { type SupportedModelId, openAiModelInfo } from "./model-info.js";
import OpenAI from "openai";
@@ -22,9 +27,18 @@ async function fetchModels(provider: string): Promise<Array<string>> {
}
try {
const headers: Record<string, string> = {};
if (OPENAI_ORGANIZATION) {
headers["OpenAI-Organization"] = OPENAI_ORGANIZATION;
}
if (OPENAI_PROJECT) {
headers["OpenAI-Project"] = OPENAI_PROJECT;
}
const openai = new OpenAI({
apiKey: getApiKey(provider),
baseURL: getBaseUrl(provider),
defaultHeaders: headers,
});
const list = await openai.models.list();
const models: Array<string> = [];