update to latest gpt model
This commit is contained in:
2
.idea/dataSources.xml
generated
2
.idea/dataSources.xml
generated
@ -2,7 +2,7 @@
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="context" uuid="0ca49717-2151-402a-b9b6-d8177360de1a">
|
||||
<driver-ref>sqlite.xerial</driver-ref>
|
||||
<driver-ref>deb3aec9-bcff-4dad-9d3a-a86d8508caa5</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
||||
<jdbc-url>jdbc:sqlite:C:\Users\gomas\src\ctxGPT\context.db</jdbc-url>
|
||||
|
@ -12,11 +12,17 @@ import (
|
||||
)
|
||||
|
||||
const encodingName = "gpt-4"
|
||||
const model = openai.GPT4TurboPreview
|
||||
const maxTokens = 4096
|
||||
|
||||
// const model = openai.GPT4Turbo
|
||||
const model = "o3-mini"
|
||||
|
||||
// const model = openai.GPT4TurboPreview
|
||||
const maxTokens = 100000
|
||||
|
||||
//const maxTokens = 4096
|
||||
|
||||
// const maxTokens = 128000
|
||||
const temperature = 0.3
|
||||
const temperature = 0.7
|
||||
|
||||
func GetTokenCount(input string) (int, error) {
|
||||
tke, err := tiktoken.EncodingForModel(encodingName) // cached in "TIKTOKEN_CACHE_DIR"
|
||||
@ -59,10 +65,10 @@ func singlePromptInteraction(systemPrompt, prompt string, retries int) (openai.C
|
||||
resp, err := client.CreateChatCompletion(
|
||||
context.Background(),
|
||||
openai.ChatCompletionRequest{
|
||||
Model: model, // switch to the configured Model
|
||||
Messages: messages,
|
||||
MaxTokens: messageTokenSize, // might want to think about how to reduce this
|
||||
Temperature: temperature,
|
||||
Model: model, // switch to the configured Model
|
||||
Messages: messages,
|
||||
MaxCompletionTokens: messageTokenSize, // might want to think about how to reduce this
|
||||
//Temperature: temperature,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
@ -100,7 +106,12 @@ func SendPrompt(messages []openai.ChatCompletionMessage) (openai.ChatCompletionR
|
||||
}
|
||||
|
||||
func sendPrompt(messages []openai.ChatCompletionMessage, retries int) (openai.ChatCompletionResponse, error) {
|
||||
client := openai.NewClient(os.Getenv("OPENAI_API_KEY"))
|
||||
config := openai.DefaultConfig(os.Getenv("OPENAI_API_KEY"))
|
||||
if os.Getenv("OPENAI_BASE_URL") != "" {
|
||||
config.BaseURL = os.Getenv("OPENAI_BASE_URL")
|
||||
}
|
||||
|
||||
client := openai.NewClientWithConfig(config)
|
||||
|
||||
previousTokenCount, err := GetPreviousTokenUsage(messages)
|
||||
if err != nil {
|
||||
@ -113,10 +124,10 @@ func sendPrompt(messages []openai.ChatCompletionMessage, retries int) (openai.Ch
|
||||
resp, err := client.CreateChatCompletion(
|
||||
context.Background(),
|
||||
openai.ChatCompletionRequest{
|
||||
Model: model, // switch to the configured Model
|
||||
Messages: messages,
|
||||
MaxTokens: messageTokenSize,
|
||||
Temperature: temperature,
|
||||
Model: model, // switch to the configured Model
|
||||
Messages: messages,
|
||||
MaxCompletionTokens: messageTokenSize,
|
||||
//Temperature: temperature,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
|
@ -17,6 +17,7 @@ func main() {
|
||||
fmt.Println("---------------------")
|
||||
|
||||
systemPrompt := ""
|
||||
//systemPrompt := "You are Mixtral, a locally hosted AI assistant."
|
||||
|
||||
messages := []openai.ChatCompletionMessage{
|
||||
{
|
||||
@ -52,13 +53,12 @@ func main() {
|
||||
}
|
||||
|
||||
fmt.Println("AI: ", resp.Choices[0].Message.Content)
|
||||
//fmt.Println("Finish Reason: ", resp.Choices[0].FinishReason)
|
||||
messages = append(messages, resp.Choices[0].Message)
|
||||
|
||||
currLength := estimateTokenCount(messages)
|
||||
|
||||
if currLength > 3000 {
|
||||
fmt.Println("Token count exceeded 3000, summarizing context")
|
||||
if currLength > 2000 {
|
||||
fmt.Println("Token count exceeded 2000, summarizing context")
|
||||
summarized, err := summarizeChatSoFar(messages)
|
||||
if err != nil {
|
||||
fmt.Printf("error summarizing chat so far | %v\n", err)
|
||||
|
31
cmd/rateTest/rate.go
Normal file
31
cmd/rateTest/rate.go
Normal file
@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Rate struct {
|
||||
RPM int
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func main() {
|
||||
r := Rate{RPM: 10}
|
||||
for i := 0; i < 10; i++ {
|
||||
go func(j int) {
|
||||
r.RateLimit()
|
||||
fmt.Println("Rate limiting")
|
||||
}(i)
|
||||
}
|
||||
time.Sleep(time.Minute)
|
||||
}
|
||||
|
||||
func (r *Rate) RateLimit() {
|
||||
// Lock for the fraction of a minute based on RPM
|
||||
r.mu.Lock()
|
||||
// Unlock after the fraction of a minute
|
||||
time.Sleep(time.Minute / time.Duration(r.RPM))
|
||||
r.mu.Unlock()
|
||||
}
|
8
go.mod
8
go.mod
@ -3,15 +3,15 @@ module ctxGPT
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/pkoukk/tiktoken-go v0.1.6
|
||||
github.com/sashabaranov/go-openai v1.17.9
|
||||
github.com/pkoukk/tiktoken-go v0.1.7
|
||||
github.com/sashabaranov/go-openai v1.36.1
|
||||
zombiezen.com/go/sqlite v0.13.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/dlclark/regexp2 v1.10.0 // indirect
|
||||
github.com/dlclark/regexp2 v1.11.4 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/google/uuid v1.3.0 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/mattn/go-isatty v0.0.16 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||
github.com/stretchr/testify v1.8.3 // indirect
|
||||
|
10
go.sum
10
go.sum
@ -1,21 +1,31 @@
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
|
||||
github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
|
||||
github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
|
||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/pkoukk/tiktoken-go v0.1.6 h1:JF0TlJzhTbrI30wCvFuiw6FzP2+/bR+FIxUdgEAcUsw=
|
||||
github.com/pkoukk/tiktoken-go v0.1.6/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg=
|
||||
github.com/pkoukk/tiktoken-go v0.1.7 h1:qOBHXX4PHtvIvmOtyg1EeKlwFRiMKAcoMp4Q+bLQDmw=
|
||||
github.com/pkoukk/tiktoken-go v0.1.7/go.mod h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/sashabaranov/go-openai v1.17.9 h1:QEoBiGKWW68W79YIfXWEFZ7l5cEgZBV4/Ow3uy+5hNY=
|
||||
github.com/sashabaranov/go-openai v1.17.9/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
|
||||
github.com/sashabaranov/go-openai v1.23.0 h1:KYW97r5yc35PI2MxeLZ3OofecB/6H+yxvSNqiT9u8is=
|
||||
github.com/sashabaranov/go-openai v1.23.0/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
|
||||
github.com/sashabaranov/go-openai v1.36.1 h1:EVfRXwIlW2rUzpx6vR+aeIKCK/xylSrVYAx1TMTSX3g=
|
||||
github.com/sashabaranov/go-openai v1.36.1/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
|
||||
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
|
||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
Reference in New Issue
Block a user