Skip to content

Commit 8e7d7f7

Browse files
author
Andrew
committed
Revert "Remove opengpts"
This reverts commit 6234b66.
1 parent ac8336b commit 8e7d7f7

File tree

3 files changed

+116
-6
lines changed

3 files changed

+116
-6
lines changed

main.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,14 @@ func showHelpMessage() {
461461

462462
boldBlue.Println("\nProviders:")
463463
fmt.Println("The default provider is phind which uses Phind model.")
464-
fmt.Println("Available providers to use: openai, koboldai, phind, llama2, blackboxai, ollama, groq")
464+
fmt.Println("Available providers to use: openai, opengpts, koboldai, phind, llama2, blackboxai, ollama")
465465

466466
bold.Println("\nProvider: openai")
467467
fmt.Println("Needs API key to work and supports various models")
468468

469+
bold.Println("\nProvider: opengpts")
470+
fmt.Println("Uses gpt-3.5-turbo only. Do not use with sensitive data")
471+
469472
bold.Println("\nProvider: koboldai")
470473
fmt.Println("Uses koboldcpp/HF_SPACE_Tiefighter-13B only, answers from novels")
471474

@@ -481,9 +484,6 @@ func showHelpMessage() {
481484
bold.Println("\nProvider: ollama")
482485
fmt.Println("Needs to be run locally. Supports many models")
483486

484-
bold.Println("\nProvider: groq")
485-
fmt.Println("Requires a free API Key. Supports LLaMA2-70b & Mixtral-8x7b")
486-
487487
boldBlue.Println("\nExamples:")
488488
fmt.Println(`tgpt "What is internet?"`)
489489
fmt.Println(`tgpt -m`)

providers/opengpts/opengpts.go

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package opengpts
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"math/rand"
7+
"os"
8+
"strings"
9+
10+
http "github.com/bogdanfinn/fhttp"
11+
12+
"github.com/aandrew-me/tgpt/v2/client"
13+
"github.com/aandrew-me/tgpt/v2/structs"
14+
"github.com/aandrew-me/tgpt/v2/utils"
15+
)
16+
17+
type Message struct {
18+
Content string `json:"content"`
19+
}
20+
21+
func RandomString(length int) string {
22+
characters := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"
23+
result := make([]byte, length)
24+
25+
for i := 0; i < length; i++ {
26+
result[i] = characters[rand.Intn(len(characters))]
27+
}
28+
return string(result)
29+
}
30+
31+
func NewRequest(input string, params structs.Params, extraOptions structs.ExtraOptions) (*http.Response, error) {
32+
client, err := client.NewClient()
33+
if err != nil {
34+
fmt.Println(err)
35+
os.Exit(0)
36+
}
37+
safeInput, _ := json.Marshal(input)
38+
39+
randID := utils.RandomString(36)
40+
41+
if len(extraOptions.ThreadID) > 1 {
42+
randID = extraOptions.ThreadID;
43+
}
44+
45+
var data = strings.NewReader(fmt.Sprintf(`{
46+
"input": [
47+
{
48+
"content": %v,
49+
"additional_kwargs": {},
50+
"type": "human",
51+
"example": false
52+
}
53+
],
54+
"assistant_id": "daede84b-79b7-4166-a277-7ac162c74c11",
55+
"thread_id": ""
56+
}
57+
`, string(safeInput)))
58+
59+
req, err := http.NewRequest("POST", "https://opengpts-example-vz4y4ooboq-uc.a.run.app/runs/stream", data)
60+
if err != nil {
61+
fmt.Println("\nSome error has occurred.")
62+
fmt.Println("Error:", err)
63+
os.Exit(0)
64+
}
65+
// Setting all the required headers
66+
req.Header.Add("authority", "opengpts-example-vz4y4ooboq-uc.a.run.app")
67+
req.Header.Add("accept", "text/event-stream")
68+
req.Header.Add("accept-language", "en-US,en;q=0.7")
69+
req.Header.Add("cache-control", "no-cache")
70+
req.Header.Add("content-type", "application/json")
71+
req.Header.Add("cookie", "opengpts_user_id="+randID)
72+
req.Header.Add("origin", "https://opengpts-example-vz4y4ooboq-uc.a.run.app")
73+
req.Header.Add("pragma", "no-cache")
74+
req.Header.Add("referer", "https://opengpts-example-vz4y4ooboq-uc.a.run.app/")
75+
req.Header.Add("sec-fetch-site", "same-origin")
76+
req.Header.Add("sec-gpc", "1")
77+
req.Header.Add("user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
78+
79+
// Return response
80+
return (client.Do(req))
81+
}
82+
83+
func GetMainText(line string, input string) string {
84+
var Messages []Message
85+
var obj = "{}"
86+
if len(line) > 1 && strings.Contains(line, "data:") {
87+
obj = strings.Split(line, "data: ")[1]
88+
}
89+
90+
// var d Response
91+
if err := json.Unmarshal([]byte(obj), &Messages); err != nil {
92+
return ""
93+
}
94+
95+
if len(Messages) > 1 {
96+
mainText := Messages[len(Messages)-1].Content
97+
98+
if mainText == input {
99+
return ""
100+
}
101+
102+
return mainText
103+
}
104+
return ""
105+
}

providers/providers.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/aandrew-me/tgpt/v2/providers/llama2"
1111
"github.com/aandrew-me/tgpt/v2/providers/ollama"
1212
"github.com/aandrew-me/tgpt/v2/providers/openai"
13+
"github.com/aandrew-me/tgpt/v2/providers/opengpts"
1314
"github.com/aandrew-me/tgpt/v2/providers/phind"
1415
"github.com/aandrew-me/tgpt/v2/structs"
1516
http "github.com/bogdanfinn/fhttp"
@@ -20,7 +21,9 @@ var availableProviders = []string{
2021
}
2122

2223
func GetMainText(line string, provider string, input string) string {
23-
if provider == "openai" {
24+
if provider == "opengpts" {
25+
return opengpts.GetMainText(line, input)
26+
} else if provider == "openai" {
2427
return ollama.GetMainText(line)
2528
} else if provider == "ollama" {
2629
return openai.GetMainText(line)
@@ -52,7 +55,9 @@ func NewRequest(input string, params structs.Params, extraOptions structs.ExtraO
5255
os.Exit(1)
5356
}
5457

55-
if params.Provider == "openai" {
58+
if params.Provider == "opengpts" {
59+
return opengpts.NewRequest(input, params, extraOptions)
60+
} else if params.Provider == "openai" {
5661
return openai.NewRequest(input, params, extraOptions.PrevMessages)
5762
} else if params.Provider == "ollama" {
5863
return ollama.NewRequest(input, params, extraOptions.PrevMessages)

0 commit comments

Comments
 (0)