Skip to content

Commit 451aa4d

Browse files
committed
Add bearer token to ollama
1 parent 199e141 commit 451aa4d

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

go.mod

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ toolchain go1.22.2
66

77
require (
88
github.com/gin-gonic/gin v1.10.0
9+
github.com/hashicorp/go-retryablehttp v0.7.7
910
github.com/tmc/langchaingo v0.1.12
1011
)
1112

@@ -22,6 +23,7 @@ require (
2223
github.com/go-playground/validator/v10 v10.20.0 // indirect
2324
github.com/goccy/go-json v0.10.2 // indirect
2425
github.com/google/uuid v1.6.0 // indirect
26+
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
2527
github.com/json-iterator/go v1.1.12 // indirect
2628
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
2729
github.com/leodido/go-urn v1.4.0 // indirect

go.sum

+10
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
1111
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1212
github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
1313
github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
14+
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
15+
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
1416
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
1517
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
1618
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
@@ -32,6 +34,12 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
3234
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
3335
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
3436
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
37+
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
38+
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
39+
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
40+
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
41+
github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
42+
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
3543
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
3644
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
3745
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
@@ -40,6 +48,8 @@ github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZY
4048
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
4149
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
4250
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
51+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
52+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
4353
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
4454
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
4555
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

main.go

+14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"time"
1515

1616
"github.com/gin-gonic/gin"
17+
retryablehttp "github.com/hashicorp/go-retryablehttp"
1718
"github.com/tmc/langchaingo/llms"
1819
"github.com/tmc/langchaingo/llms/ollama"
1920
"github.com/tmc/langchaingo/llms/openai"
@@ -140,9 +141,22 @@ func createLLM() (llms.Model, error) {
140141
if host == "" {
141142
host = "http://127.0.0.1:11434"
142143
}
144+
// custom http client (retryable http client) if bearer token is wanted
145+
retryClient := retryablehttp.NewClient()
146+
retryClient.RetryMax = 10
147+
bearerToken := os.Getenv("OLLAMA_BEARER_TOKEN")
148+
if bearerToken != "" {
149+
retryClient.RequestLogHook = func(l retryablehttp.Logger, r *http.Request, i int) {
150+
r.Header.Set("Authorization", fmt.Sprintf("Bearer %s", bearerToken))
151+
shortenedBearerToken := fmt.Sprintf("%s...", r.Header.Get("Authorization")[:5])
152+
log.Printf("Request with bearer %s token to %s %s", shortenedBearerToken, r.Method, r.URL)
153+
}
154+
}
155+
143156
return ollama.New(
144157
ollama.WithModel(llmModel),
145158
ollama.WithServerURL(host),
159+
ollama.WithHTTPClient(retryClient.StandardClient()),
146160
)
147161
default:
148162
return nil, fmt.Errorf("unsupported LLM provider: %s", llmProvider)

0 commit comments

Comments
 (0)