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