Skip to content

Commit 957d022

Browse files
authored
Merge pull request #1300 from refactorthis/chore/observability-openai
feat: add x-title and http-referer header to all openai providers
2 parents fcf0926 + 589387b commit 957d022

File tree

5 files changed

+28
-12
lines changed

5 files changed

+28
-12
lines changed

.changeset/wise-pears-join.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"roo-cline": patch
3+
---
4+
5+
Improved observability of openai compatible APIs, by sending x-title and http-referer headers, as per Open Router standard.

src/api/providers/__tests__/openai.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,20 @@ describe("OpenAiHandler", () => {
9090
})
9191
expect(handlerWithCustomUrl).toBeInstanceOf(OpenAiHandler)
9292
})
93+
94+
it("should set default headers correctly", () => {
95+
// Get the mock constructor from the jest mock system
96+
const openAiMock = jest.requireMock("openai").default
97+
98+
expect(openAiMock).toHaveBeenCalledWith({
99+
baseURL: expect.any(String),
100+
apiKey: expect.any(String),
101+
defaultHeaders: {
102+
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
103+
"X-Title": "Roo Code",
104+
},
105+
})
106+
})
93107
})
94108

95109
describe("createMessage", () => {

src/api/providers/openai.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@ import { ApiStream, ApiStreamUsageChunk } from "../transform/stream"
1616
import { BaseProvider } from "./base-provider"
1717

1818
const DEEP_SEEK_DEFAULT_TEMPERATURE = 0.6
19-
export interface OpenAiHandlerOptions extends ApiHandlerOptions {
20-
defaultHeaders?: Record<string, string>
19+
20+
export const defaultHeaders = {
21+
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
22+
"X-Title": "Roo Code",
2123
}
2224

25+
export interface OpenAiHandlerOptions extends ApiHandlerOptions {}
26+
2327
export class OpenAiHandler extends BaseProvider implements SingleCompletionHandler {
2428
protected options: OpenAiHandlerOptions
2529
private client: OpenAI
@@ -47,9 +51,10 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl
4751
baseURL,
4852
apiKey,
4953
apiVersion: this.options.azureApiVersion || azureOpenAiDefaultApiVersion,
54+
defaultHeaders,
5055
})
5156
} else {
52-
this.client = new OpenAI({ baseURL, apiKey, defaultHeaders: this.options.defaultHeaders })
57+
this.client = new OpenAI({ baseURL, apiKey, defaultHeaders })
5358
}
5459
}
5560

src/api/providers/openrouter.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { convertToR1Format } from "../transform/r1-format"
1313
import { DEEP_SEEK_DEFAULT_TEMPERATURE } from "./constants"
1414
import { getModelParams, SingleCompletionHandler } from ".."
1515
import { BaseProvider } from "./base-provider"
16+
import { defaultHeaders } from "./openai"
1617

1718
// Add custom interface for OpenRouter params.
1819
type OpenRouterChatCompletionParams = OpenAI.Chat.ChatCompletionCreateParams & {
@@ -37,11 +38,6 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
3738
const baseURL = this.options.openRouterBaseUrl || "https://openrouter.ai/api/v1"
3839
const apiKey = this.options.openRouterApiKey ?? "not-provided"
3940

40-
const defaultHeaders = {
41-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
42-
"X-Title": "Roo Code",
43-
}
44-
4541
this.client = new OpenAI({ baseURL, apiKey, defaultHeaders })
4642
}
4743

src/api/providers/requesty.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ export class RequestyHandler extends OpenAiHandler {
1616
openAiModelId: options.requestyModelId ?? requestyDefaultModelId,
1717
openAiBaseUrl: "https://router.requesty.ai/v1",
1818
openAiCustomModelInfo: options.requestyModelInfo ?? requestyModelInfoSaneDefaults,
19-
defaultHeaders: {
20-
"HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline",
21-
"X-Title": "Roo Code",
22-
},
2319
})
2420
}
2521

0 commit comments

Comments
 (0)