ChatGpt sdk для Golang
вы должны сначала войти на веб-сайт ChatGPT, найти файлы cookie с именем cf_clearance, __Secure-next-auth.session-token и установить их значения куки не более 2 часов.
ChatGpt как зарегистрироваться.
https://t.me/+z9TZPdZVMH8yZWE6 – нейросети в телеграм.
Быстрый старт
установим chatgpt-go sdk
go get -u github.com/chatgp/chatgpt-go
Работа с SDK
package main
import (
"log"
"net/http"
"time"
chatgpt "github.com/chatgp/chatgpt-go"
)
func main() {
// new chatgpt client
token := `copy-from-cookies`
cfValue := "copy-from-cookies"
cookies := []*http.Cookie{
{
Name: "__Secure-next-auth.session-token",
Value: token,
},
{
Name: "cf_clearance",
Value: cfValue,
},
}
cli := chatgpt.NewClient(
chatgpt.WithDebug(true),
chatgpt.WithTimeout(60*time.Second),
chatgpt.WithCookies(cookies),
)
// chat in independent conversation
message := "say hello to me"
text, err := cli.GetChatText(message)
if err != nil {
log.Fatalf("get chat text failed: %v", err)
}
log.Printf("q: %s, a: %s\n", message, text.Content)
}
3. общаемся в непрерывном разговоре
package main
import (
"log"
"net/http"
"time"
chatgpt "github.com/chatgp/chatgpt-go"
)
func main() {
// new chatgpt client
token := `copy-from-cookies`
cfValue := "copy-from-cookies"
cookies := []*http.Cookie{
{
Name: "__Secure-next-auth.session-token",
Value: token,
},
{
Name: "cf_clearance",
Value: cfValue,
},
}
cli := chatgpt.NewClient(
chatgpt.WithDebug(true),
chatgpt.WithTimeout(60*time.Second),
chatgpt.WithCookies(cookies),
)
// chat in continuous conversation
// first message
message := "say hello to me"
text, err := cli.GetChatText(message)
if err != nil {
log.Fatalf("get chat text failed: %v", err)
}
log.Printf("q: %s, a: %s\n", message, text.Content)
// continue conversation with new message
conversationID := text.ConversationID
parentMessage := text.MessageID
newMessage := "again"
newText, err := cli.GetChatText(newMessage, conversationID, parentMessage)
if err != nil {
log.Fatalf("get chat text failed: %v", err)
}
log.Printf("q: %s, a: %s\n", newMessage, newText.Content)
}
4. получаем содержимое чата с потоком
package main
import (
"log"
"net/http"
"time"
chatgpt "github.com/chatgp/chatgpt-go"
)
func main() {
// new chatgpt client
token := `copy-from-cookies`
cfValue := "copy-from-cookies"
cookies := []*http.Cookie{
{
Name: "__Secure-next-auth.session-token",
Value: token,
},
{
Name: "cf_clearance",
Value: cfValue,
},
}
cli := chatgpt.NewClient(
chatgpt.WithDebug(true),
chatgpt.WithTimeout(60*time.Second),
chatgpt.WithCookies(cookies),
)
message := "say hello to me"
stream, err := cli.GetChatStream(message)
if err != nil {
log.Fatalf("get chat stream failed: %v\n", err)
}
var answer string
for text := range stream.Stream {
log.Printf("stream text: %s\n", text.Content)
answer = text.Content
}
if stream.Err != nil {
log.Fatalf("stream closed with error: %v\n", stream.Err)
}
log.Printf("q: %s, a: %s\n", message, answer)
}
Тесты
в папке примеров есть несколько тестов, выполните команду go test и получите результаты, как показано ниже:
получить текст чата
получить текст чата в непрерывном диалоге
получить текст чата из потока
+1
2
+1
+1
+1
+1
2