dalle admin api. Added configurable worker (#410)

This commit is contained in:
gohumble 2022-08-31 20:09:55 +02:00 committed by GitHub
parent d3c2fe7117
commit 94ed7d4692
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 3 deletions

View file

@ -27,4 +27,5 @@ database:
groupsdb_path: "data/groups.db" groupsdb_path: "data/groups.db"
generate: generate:
dalle_key: "asd" dalle_key: "asd"
dalle_price: 1000 dalle_price: 1000
worker: 2

View file

@ -0,0 +1,14 @@
package admin
import (
"github.com/LightningTipBot/LightningTipBot/internal/dalle"
"net/http"
)
func (s Service) DisableDalle(w http.ResponseWriter, r *http.Request) {
dalle.Enabled = false
}
func (s Service) EnableDalle(w http.ResponseWriter, r *http.Request) {
dalle.Enabled = true
}

View file

@ -20,6 +20,7 @@ var Configuration = struct {
type GenerateConfiguration struct { type GenerateConfiguration struct {
DalleKey string `yaml:"dalle_key"` DalleKey string `yaml:"dalle_key"`
DallePrice int64 `yaml:"dalle_price"` DallePrice int64 `yaml:"dalle_price"`
Worker int `yaml:"worker"`
} }
type SocksConfiguration struct { type SocksConfiguration struct {

View file

@ -2,9 +2,18 @@ package dalle
import ( import (
"context" "context"
"github.com/LightningTipBot/LightningTipBot/internal"
"io" "io"
) )
var Enabled bool
func init() {
if internal.Configuration.Generate.DalleKey != "" {
Enabled = true
}
}
type Client interface { type Client interface {
Generate(ctx context.Context, prompt string) (*Task, error) Generate(ctx context.Context, prompt string) (*Task, error)
ListTasks(ctx context.Context, req *ListTasksRequest) (*ListTasksResponse, error) ListTasks(ctx context.Context, req *ListTasksRequest) (*ListTasksResponse, error)

View file

@ -22,7 +22,7 @@ import (
// generateImages is called when the user enters /generate or /generate <prompt> // generateImages is called when the user enters /generate or /generate <prompt>
// asks the user for a prompt if not given // asks the user for a prompt if not given
func (bot *TipBot) generateImages(ctx intercept.Context) (intercept.Context, error) { func (bot *TipBot) generateImages(ctx intercept.Context) (intercept.Context, error) {
if internal.Configuration.Generate.DalleKey == "" { if !dalle.Enabled {
bot.trySendMessage(ctx.Message().Sender, "🤖💤 Dalle image generation is currently not available. Please try again later.") bot.trySendMessage(ctx.Message().Sender, "🤖💤 Dalle image generation is currently not available. Please try again later.")
return ctx, nil return ctx, nil
} }
@ -102,9 +102,14 @@ func (bot *TipBot) confirmGenerateImages(ctx intercept.Context) (intercept.Conte
} }
var jobChan chan func(workerId int) var jobChan chan func(workerId int)
var workers = 2 var workers = internal.Configuration.Generate.Worker
func init() { func init() {
if workers == 0 {
log.Printf("Dalle is disabled. No worker started.")
return
}
log.Printf("Starting Dalle image generation. Worker: %d, Price: %d sat", workers, internal.Configuration.Generate.DallePrice)
jobChan = make(chan func(workerId int), workers) jobChan = make(chan func(workerId int), workers)
for i := 0; i < workers; i++ { for i := 0; i < workers; i++ {
go worker(jobChan, i) go worker(jobChan, i)

View file

@ -81,6 +81,8 @@ func startApiServer(bot *telegram.TipBot) {
internalAdminServer.AppendRoute("/mutex/unlock/{id}", mutex.UnlockHTTP) internalAdminServer.AppendRoute("/mutex/unlock/{id}", mutex.UnlockHTTP)
internalAdminServer.AppendRoute("/admin/ban/{id}", adminService.BanUser) internalAdminServer.AppendRoute("/admin/ban/{id}", adminService.BanUser)
internalAdminServer.AppendRoute("/admin/unban/{id}", adminService.UnbanUser) internalAdminServer.AppendRoute("/admin/unban/{id}", adminService.UnbanUser)
internalAdminServer.AppendRoute("/admin/dalle/enable", adminService.EnableDalle)
internalAdminServer.AppendRoute("/admin/dalle/disable", adminService.DisableDalle)
internalAdminServer.PathPrefix("/debug/pprof/", http.DefaultServeMux) internalAdminServer.PathPrefix("/debug/pprof/", http.DefaultServeMux)
} }