Documentation ¶
Index ¶
Constants ¶
const ( // DefaultChatMaxResponseTokens default max token count for chat session response DefaultChatMaxResponseTokens = 2048 // DefaultChatRequestTemperature default chat request temperature DefaultChatRequestTemperature = float32(0.5) // DefaultChatRequestTopP default chat request TopP DefaultChatRequestTopP = float32(0) // ChatSessionStateOpen ENUM for chat session state "OPEN" ChatSessionStateOpen ChatSessionState = "session-open" // ChatSessionStateClose ENUM for chat session state "CLOSE" ChatSessionStateClose ChatSessionState = "session-close" )
Variables ¶
This section is empty.
Functions ¶
func GetSqliteDialector ¶
GetSqliteDialector define Sqlite GORM dialector
@param dbFile string - Sqlite DB file @return GORM sqlite dialector
Types ¶
type ChatExchange ¶
type ChatExchange struct { RequestTimestamp time.Time `yaml:"request_ts" json:"request_ts" validate:"required"` Request string `yaml:"request" json:"request" validate:"required"` ResponseTimestamp time.Time `yaml:"response_ts" json:"response_ts" validate:"required"` Response string `yaml:"response" json:"response" validate:"required"` }
ChatExchange defines one exchange during a chat session.
An exchange is defined as a request and its associated response
func (ChatExchange) String ¶ added in v0.1.1
func (c ChatExchange) String() string
String toString function for ChatExchange
@return string representation of one chat exchange
type ChatSession ¶
type ChatSession interface { /* SessionID this chat session ID @param ctxt context.Context - query context @return session ID */ SessionID(ctxt context.Context) (string, error) /* SessionState session's current state @param ctxt context.Context - query context @return current session state */ SessionState(ctxt context.Context) (ChatSessionState, error) /* CloseSession close this chat session @param ctxt context.Context - query context */ CloseSession(ctxt context.Context) error /* User query the associated user for this chat session @param ctxt context.Context - query context @return the associated User */ User(ctxt context.Context) (User, error) /* Settings returns the current session wide API request parameters @param ctxt context.Context - query context @return session wide parameters */ Settings(ctxt context.Context) (ChatSessionParameters, error) /* ChangeSettings update the session wide API request parameters @param ctxt context.Context - query context @param newSettings ChatSessionParameters - new session wide API request parameters */ ChangeSettings(ctxt context.Context, newSettings ChatSessionParameters) error /* RecordOneExchange record a single exchange. An exchange is defined as a request and its associated response @param ctxt context.Context - query context @param exchange ChatExchange - the exchange */ RecordOneExchange(ctxt context.Context, exchange ChatExchange) error /* FirstExchange get the first session exchange @param ctxt context.Context - query context @return chat exchange */ FirstExchange(ctxt context.Context) (ChatExchange, error) /* Exchanges fetch the list of exchanges recorded in this session. The exchanges are sorted by chronological order. @param ctxt context.Context - query context @return list of exchanges in chronological order */ Exchanges(ctxt context.Context) ([]ChatExchange, error) /* Refresh helper function to sync the handler with what is stored in persistence @param ctxt context.Context - query context */ Refresh(ctxt context.Context) error /* DeleteLatestExchange delete the latest exchange in the session @param ctxt context.Context - query context */ DeleteLatestExchange(ctxt context.Context) error }
ChatSession define a chat session with a text completion model.
This records the requests and responses between the user and the model.
type ChatSessionManager ¶
type ChatSessionManager interface { /* NewSession define a new chat session @param ctxt context.Context - query context @param model stirng - OpenAI model name @return new chat session */ NewSession(ctxt context.Context, model string) (ChatSession, error) /* ListSessions list all sessions @param ctxt context.Context - query context @return all known sessions */ ListSessions(ctxt context.Context) ([]ChatSession, error) /* GetSession fetch a session @param ctxt context.Context - query context @param sessionID string - session ID @return session entry */ GetSession(ctxt context.Context, sessionID string) (ChatSession, error) /* CurrentActiveSession get the current active chat session for the associated user @param ctxt context.Context - query context @return session entry */ CurrentActiveSession(ctxt context.Context) (ChatSession, error) /* SetActiveSession set the current active chat session for the associated user @param ctxt context.Context - query context @param session ChatSession - the chat session */ SetActiveSession(ctxt context.Context, session ChatSession) error /* DeleteSession delete a session @param ctxt context.Context - query context @param sessionID string - session ID */ DeleteSession(ctxt context.Context, sessionID string) error /* DeleteMultipleSessions delete multiple sessions @param ctxt context.Context - query context @param sessionIDs []string - session IDs */ DeleteMultipleSessions(ctxt context.Context, sessionIDs []string) error /* DeleteMultipleSessions delete all sessions @param ctxt context.Context - query context */ DeleteAllSessions(ctxt context.Context) error }
ChatSessionManager chat session management client
type ChatSessionParameters ¶
type ChatSessionParameters struct { Model string `yaml:"model" json:"model" validate:"required,oneof=turbo davinci curie babbage ada"` Suffix *string `yaml:"suffix,omitempty" json:"suffix,omitempty"` MaxTokens int `yaml:"max_tokens" json:"max_tokens" validate:"required,gte=10,lte=4096"` Temperature *float32 `yaml:"temperature,omitempty" json:"temperature,omitempty" validate:"omitempty,gte=0,lte=2"` TopP *float32 `yaml:"top_p,omitempty" json:"top_p,omitempty" validate:"omitempty,gte=0,lte=1"` Stop []string `yaml:"stop,omitempty" json:"stop,omitempty" validate:"omitempty,lte=4"` PresencePenalty *float32 `yaml:"presence_penalty,omitempty" json:"presence_penalty,omitempty" validate:"omitempty,gte=-2,lte=2"` FrequencyPenalty *float32 `yaml:"frequency_penalty,omitempty" json:"frequency_penalty,omitempty" validate:"omitempty,gte=-2,lte=2"` }
ChatSessionParameters common API request parameters used for one chat session
See https://platform.openai.com/docs/api-reference/completions/create for explanations
func GetDefaultChatSessionParams ¶
func GetDefaultChatSessionParams(model string) ChatSessionParameters
GetDefaultChatSessionParams generate default chat session request params
@param model string - chat session model @return default chat session parameters
func (*ChatSessionParameters) MergeWithNewSettings ¶
func (s *ChatSessionParameters) MergeWithNewSettings(newSetting ChatSessionParameters)
MergeWithNewSettings merge the contents of the new setting into current setting
Only fields in the new setting which are not nil will be merged in
@param newSetting ChatSessionParameters - new setting
type User ¶
type User interface { /* GetID query for user GetID @param ctxt context.Context - query context @return the user ID */ GetID(ctxt context.Context) (string, error) /* GetName query for user name @param ctxt context.Context - query context @return the user name */ GetName(ctxt context.Context) (string, error) /* SetName set user name @param ctxt context.Context - query context @param newName string - new user name */ SetName(ctxt context.Context, newName string) error /* GetActiveSessionID fetch user's active session ID @param ctxt context.Context - query context @return active session ID */ GetActiveSessionID(ctxt context.Context) (*string, error) /* SetActiveSessionID change user's active session ID @param ctxt context.Context - query context @param sessionID string - new session ID */ SetActiveSessionID(ctxt context.Context, sessionID string) error /* ClearActiveSessionID clear user's active session ID @param ctxt context.Context - query context */ ClearActiveSessionID(ctxt context.Context) error /* GetAPIToken get user API token @param ctxt context.Context - query context @return the user API token */ GetAPIToken(ctxt context.Context) (string, error) /* SetAPIToken set user API token @param ctxt context.Context - query context @param newToken string - new API token */ SetAPIToken(ctxt context.Context, newToken string) error /* Refresh helper function to sync the handler with what is stored in persistence @param ctxt context.Context - query context */ Refresh(ctxt context.Context) error /* ChatSessionManager fetch chat session manager for a user @param ctxt context.Context - query context @return associated chat session manager */ ChatSessionManager(ctxt context.Context) (ChatSessionManager, error) }
User holds information regarding one user of the system. This includes
- User ID
- User Name
- User API token
type UserManager ¶
type UserManager interface { /* RecordNewUser record a new system user @param ctxt context.Context - query context @param userName string - user name @return new user entry */ RecordNewUser(ctxt context.Context, userName string) (User, error) /* ListUsers list all known users @param ctxt context.Context - query context @return list of known users */ ListUsers(ctxt context.Context) ([]User, error) /* GetUser fetch a user @param ctxt context.Context - query context @param userID string - user ID @return user entry */ GetUser(ctxt context.Context, userID string) (User, error) /* GetUser fetch a user by name @param ctxt context.Context - query context @param userName string - user name @return user entry */ GetUserByName(ctxt context.Context, userName string) (User, error) /* DeleteUser delete a user @param ctxt context.Context - query context @param userID string - user ID */ DeleteUser(ctxt context.Context, userID string) error }
UserManager user management client
func GetSQLUserManager ¶
GetSQLUserManager define a new SQL based user manager
@param dbDialector gorm.Dialector - GORM SQL dialector @param logLevel logger.LogLevel - SQL log level