Skip to content

Commit 2b3086c

Browse files
authored
Merge pull request #44 from PaperDebugger/feat-custom-backend
feat: add support for custom openai base url
2 parents d0faa28 + ac306b1 commit 2b3086c

File tree

8 files changed

+21
-0
lines changed

8 files changed

+21
-0
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ jobs:
9292
git clone https://${{ secrets.GH_PAT }}@github.com/paperdebugger/deploy.git ../deploy
9393
- name: Generate kubernetes manifests
9494
env:
95+
OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL_PRD }}
9596
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY_PRD }}
9697
MCP_BASIC_KEY: ${{ secrets.MCP_BASIC_KEY_PRD }}
9798
MCP_PAPERSCORE_KEY: ${{ secrets.MCP_PAPERSCORE_KEY_PRD }}

hack/prd.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -euxo pipefail
55
ROOT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." &>/dev/null && pwd)
66
cd $ROOT_DIR
77

8+
OPENAI_BASE_URL=${OPENAI_BASE_URL:-https://api.openai.com/v1}
89
OPENAI_API_KEY=${OPENAI_API_KEY:-sk-dummy-OPENAI_API_KEY}
910
MCP_BASIC_KEY=${MCP_BASIC_KEY:-sk-dummy-MCP_BASIC_KEY}
1011
MCP_PAPERSCORE_KEY=${MCP_PAPERSCORE_KEY:-sk-dummy-MCP_PAPERSCORE_KEY}
@@ -21,6 +22,7 @@ helm template $ROOT_DIR/helm-chart \
2122
--create-namespace \
2223
--values $ROOT_DIR/helm-chart/values.yaml \
2324
--values $ROOT_DIR/hack/values-prd.yaml \
25+
--set-string openai_base_url=$OPENAI_BASE_URL \
2426
--set-string openai_api_key=$OPENAI_API_KEY \
2527
--set-string mcp_basic_key=$MCP_BASIC_KEY \
2628
--set-string mcp_paperscore_key=$MCP_PAPERSCORE_KEY \

hack/stg.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -euxo pipefail
55
ROOT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." &>/dev/null && pwd)
66
cd $ROOT_DIR
77

8+
OPENAI_BASE_URL=${OPENAI_BASE_URL:-https://api.openai.com/v1}
89
OPENAI_API_KEY=${OPENAI_API_KEY:-sk-dummy-OPENAI_API_KEY}
910
MCP_BASIC_KEY=${MCP_BASIC_KEY:-sk-dummy-MCP_BASIC_KEY}
1011
MCP_PAPERSCORE_KEY=${MCP_PAPERSCORE_KEY:-sk-dummy-MCP_PAPERSCORE_KEY}
@@ -21,6 +22,7 @@ helm template $ROOT_DIR/helm-chart \
2122
--create-namespace \
2223
--values $ROOT_DIR/helm-chart/values.yaml \
2324
--values $ROOT_DIR/hack/values-stg.yaml \
25+
--set-string openai_base_url=$OPENAI_BASE_URL \
2426
--set-string openai_api_key=$OPENAI_API_KEY \
2527
--set-string mcp_basic_key=$MCP_BASIC_KEY \
2628
--set-string mcp_paperscore_key=$MCP_PAPERSCORE_KEY \

helm-chart/templates/paperdebugger.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ metadata:
5757
name: paperdebugger
5858
namespace: {{ .Values.namespace }}
5959
data:
60+
OPENAI_BASE_URL: "{{ .Values.openai_base_url }}"
6061
OPENAI_API_KEY: "{{ .Values.openai_api_key }}"
6162
JWT_SIGNING_KEY: "{{ .Values.jwt_signing_key }}"
6263
{{ if not .Values.mongo.in_cluster }}

helm-chart/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
namespace: paperdebugger-dev
2+
openai_base_url: https://api.openai.com/v1
23
openai_api_key: sk-dummy-OPENAI_API_KEY
34
jwt_signing_key: paperdebugger
45
ghcr_docker_config: dummy-ghcr-docker-config

internal/libs/cfg/cfg.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
)
88

99
type Cfg struct {
10+
OpenAIBaseURL string
1011
OpenAIAPIKey string
1112
JwtSigningKey string
1213

@@ -19,6 +20,7 @@ var cfg *Cfg
1920
func GetCfg() *Cfg {
2021
_ = godotenv.Load()
2122
cfg = &Cfg{
23+
OpenAIBaseURL: openAIBaseURL(),
2224
OpenAIAPIKey: os.Getenv("OPENAI_API_KEY"),
2325
JwtSigningKey: os.Getenv("JWT_SIGNING_KEY"),
2426
MongoURI: mongoURI(),
@@ -28,6 +30,14 @@ func GetCfg() *Cfg {
2830
return cfg
2931
}
3032

33+
func openAIBaseURL() string {
34+
val := os.Getenv("OPENAI_BASE_URL")
35+
if val != "" {
36+
return val
37+
}
38+
return "https://api.openai.com/v1"
39+
}
40+
3141
func xtraMCPURI() string {
3242
val := os.Getenv("XTRAMCP_URI")
3343
if val != "" {

internal/libs/cfg/cfg_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
func init() {
1212
os.Setenv("PD_MONGO_URI", "mongodb://localhost:27017")
13+
os.Setenv("OPENAI_BASE_URL", "https://dummy.openai.com/v1")
1314
os.Setenv("OPENAI_API_KEY", "dummy OPENAI_API_KEY for testing")
1415
os.Setenv("JWT_SIGNING_KEY", "dummy JWT_SIGNING_KEY for testing")
1516
}
@@ -22,9 +23,11 @@ func TestCfg(t *testing.T) {
2223

2324
assert.NotNil(t, cfg.MongoURI)
2425
assert.NotNil(t, cfg.JwtSigningKey)
26+
assert.NotNil(t, cfg.OpenAIBaseURL)
2527
assert.NotNil(t, cfg.OpenAIAPIKey)
2628

2729
assert.NotEmpty(t, cfg.JwtSigningKey)
30+
assert.NotEmpty(t, cfg.OpenAIBaseURL)
2831
assert.NotEmpty(t, cfg.OpenAIAPIKey)
2932
assert.NotEmpty(t, cfg.MongoURI)
3033
}

internal/services/toolkit/client/client.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func NewAIClient(
3939
) *AIClient {
4040
database := db.Database("paperdebugger")
4141
oaiClient := openai.NewClient(
42+
option.WithBaseURL(cfg.OpenAIBaseURL),
4243
option.WithAPIKey(cfg.OpenAIAPIKey),
4344
)
4445
CheckOpenAIWorks(oaiClient, logger)

0 commit comments

Comments
 (0)