diff --git a/Makefile b/Makefile index 7073cef..a5ee112 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,3 @@ -all: build - build: lint CGO_ENABLED=0 go build -v -trimpath -ldflags='-s -w' @@ -15,4 +13,4 @@ send: pack clean: rm -f tgbot_misaka_5882f7 tgbot_misaka_5882f7.* -.PHONY: all build pack send clean test +.PHONY: build pack send clean diff --git a/README.md b/README.md index e93a96d..55a39da 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ -# `MISAKA 5882F7` +`MISAKA 5882F7` Just another random telegram bot. - -Code is messy. Expect a lot of hiccups. - -## Known problems - -- Message caching needs improvement diff --git a/assistant.go b/assistant.go index 4b4ef18..6fd09c3 100644 --- a/assistant.go +++ b/assistant.go @@ -1,8 +1,6 @@ package main import ( - "crypto/md5" - "encoding/base64" "strconv" "strings" "time" @@ -136,10 +134,7 @@ func assistantStreamedResponse(request openai.ChatRequest, cb assistantStreamedR if minWaitSatisfied { break Drain } - select { - case <-minWait: - case <-resp.Done: - } + <-minWait minWaitSatisfied = true } } @@ -160,7 +155,7 @@ func assistantStreamedResponse(request openai.ChatRequest, cb assistantStreamedR minWaitDurSecs := lo.Min([]int{nUpdates, 4}) + nErrs*3 minWait = time.After(time.Duration(minWaitDurSecs) * time.Second) - // Send the partial message + // send the partial message respText := respBuilder.String() + assistantWritingSign if err := cb(respText, false); err != nil { logger.Warnw("failed to send partial update", "error", err) @@ -236,7 +231,6 @@ func handleAssistantConversation(c tele.Context, thread []*tele.Message) error { Messages: chatReqMsgs, Temperature: lo.ToPtr(0.42), MaxTokens: 2048, - User: assistantHashUserId(lastMsg.Sender.ID), } typingNotifyCh := setTyping(c) @@ -275,9 +269,3 @@ func assistantRemoveMention(msg, name string) string { } return orig } - -func assistantHashUserId(uid int64) string { - seasoned := []byte("RdnuRPqp66vtbc28QRO0ecKSLKXifz7G9UbXLoyCMpw" + strconv.FormatInt(uid, 10)) - hashed := md5.Sum(seasoned) // Don't judge me - return base64.URLEncoding.EncodeToString(hashed[:])[:22] -} diff --git a/openai/chat.go b/openai/chat.go index 3564ed6..fc213a8 100644 --- a/openai/chat.go +++ b/openai/chat.go @@ -18,16 +18,16 @@ type ChatMessage struct { type ChatRequest struct { Model string `json:"model"` Messages []ChatMessage `json:"messages"` - Temperature *float64 `json:"temperature,omitempty"` // What sampling temperature to use, between 0 and 2. - TopP *float64 `json:"top_p,omitempty"` // Nucleus sampling. Specify this or temperature but not both. - N int `json:"n,omitempty"` // How many chat completion choices to generate for each input message. - Stream bool `json:"stream,omitempty"` // If set, partial message deltas will be sent as data-only server-sent events as they become available. - Stop []string `json:"stop,omitempty"` // Up to 4 sequences where the API will stop generating further tokens. + Temperature *float64 `json:"temperature,omitempty"` + TopP *float64 `json:"top_p,omitempty"` + N int `json:"n,omitempty"` + Stream bool `json:"stream,omitempty"` + Stop []string `json:"stop,omitempty"` MaxTokens int `json:"max_tokens,omitempty"` - PresencePenalty *float64 `json:"presence_penalty,omitempty"` // Number between -2.0 and 2.0. - FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` // Number between -2.0 and 2.0. - LogitBias map[string]float64 `json:"logit_bias,omitempty"` // Modify the likelihood of specified tokens appearing in the completion. - User string `json:"user,omitempty"` // A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. + PresencePenalty *float64 `json:"presence_penalty,omitempty"` + FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` + LogitBias map[string]float64 `json:"logit_bias,omitempty"` + User string `json:"user,omitempty"` } type ChatResponseChoice struct { @@ -51,7 +51,6 @@ type ChatResponseStream struct { Created int Model string Stream chan string - Done chan struct{} Err error } diff --git a/openai/client.go b/openai/client.go index 1800cf9..e7abc7f 100644 --- a/openai/client.go +++ b/openai/client.go @@ -77,15 +77,11 @@ func (c *Client) ChatCompletionStream(request ChatRequest) (*ChatResponseStream, return nil, errors.Errorf("status code: %d, body: %q", resp.StatusCode(), respBodyStr) } - ret := &ChatResponseStream{ - Stream: make(chan string, 1024), - Done: make(chan struct{}), - } + ret := &ChatResponseStream{Stream: make(chan string, 1024)} go func() { defer func() { rbody.Close() close(ret.Stream) - close(ret.Done) }() var contentBegan bool