discogpt

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2024 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrOAIHTTP = errors.New("error code from oai server")
)

Functions

func GetAllowedChannels

func GetAllowedChannels(c Config) []string

func NewDebugLogger

func NewDebugLogger() (*zap.SugaredLogger, error)

func NewDiscordMessager

func NewDiscordMessager(ctx context.Context, tok string, trigger string, allowedChannels []string, g MessageGenerator, log Logger) (*discordMessager, error)

func NewIOMessager

func NewIOMessager(r io.Reader, w io.Writer, trigger string, g MessageGenerator, user string, log Logger) *ioMessager

func NewOpenAIGenerator

func NewOpenAIGenerator(baseURL string, model string, promptPrefix string, log Logger,
	reqMods []HTTPRequestModifier, genMods []GenerationRequestModifier) (*oaiGenerator, error)

func NewProdLogger

func NewProdLogger() (*zap.SugaredLogger, error)

Types

type Config

type Config struct {
	OAIHost         string `yaml:"OAIHost" conf:"env:DISCOGPT_OAI_HOST"`
	OAIToken        string `yaml:"OAIToken" conf:"env:DISCOGPT_OAI_TOKEN,mask"`
	OAIModel        string `yaml:"OAIModel" conf:"env:DISCOGPT_OAI_MODEL"`
	OAISystemPrompt string `yaml:"OAISystemPrompt" conf:"env:DISCOGPT_OAI_SYSTEM_PROMPT"`

	BotToken        string `yaml:"BotToken" conf:"env:DISCOGPT_BOT_TOKEN,mask"`
	AllowedChannels string `yaml:"AllowedChannels" conf:"env:DISCOGPT_ALLOWED_CHANNELS"` //comma separated list of channel IDs for bot to operate in
	Trigger         string `yaml:"Trigger" conf:"env:DISCOGPT_TRIGGER"`

	Mode string `yaml:"Mode" conf:"DISCOGPT_MODE"` // This is used to select between the discord messager and the ioMessager for local testing

	ChromaURL            string `yaml:"ChromaURL" conf:"env:DISCOGPT_CHROMA_URL"`        //URL for your chroma server
	ChromaTEIURL         string `yaml:"ChromaTEIURL" conf:"env:DISCOGPT_CHROMA_TEI_URL"` //URL for your hugging face TEI server
	ChromaCollectionName string `yaml:"ChromaCollectionName" conf:"env:DISCOGPT_CHROMA_COLLECTION_NAME"`

	IOUser string `yaml:"IOUser" conf:"env:DISCOGPT_IO_USER"`
	Debug  bool   `yaml:"Debug" conf:"env:DISCOGPT_DEBUG"` //turns on the debug logger
}

func GenerateConfig

func GenerateConfig(configFile string, log Logger) (Config, error)

type GenerationRequestModifier

type GenerationRequestModifier func(*oaiCompletionsReq) error

func NewChromaMod

func NewChromaMod(baseURL string, teiURL string, collectionName string, log Logger) (GenerationRequestModifier, error)

type GeneratorMessager

type GeneratorMessager interface {
	// Calls g.Generate inresponse to the trigger phrase
	Run(ctx context.Context, errch chan error)
}

type HTTPRequestModifier

type HTTPRequestModifier func(*http.Request) error

type Logger

type Logger interface {
	Infof(template string, args ...any)
	Debugf(template string, args ...any)
	Errorf(template string, arg ...any)
	Sync() error
}

wrap zap in an interface for mocking

type MessageGenerator

type MessageGenerator interface {
	Generate(ctx context.Context, prompt string, user string) (string, error)
}

type MessagerMode

type MessagerMode string
const (
	DiscordMode MessagerMode = "Discord"
	IOMode      MessagerMode = "IO"
)

Directories

Path Synopsis
Package mock_discogpt is a generated GoMock package.
Package mock_discogpt is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL