Documentation
¶
Index ¶
- Constants
- Variables
- func ContextWithConvoID(ctx context.Context, csid string) context.Context
- func ContextWithWecomUID(ctx context.Context, uid string) context.Context
- func ConvoIDFromContext(ctx context.Context) string
- func DbOpModelMetaCreator(ctx context.Context, db ormDB, obj ModelMetaCreator) (err error)
- func DbOpModelMetaOwner(ctx context.Context, db ormDB, obj ModelMetaOwner) (err error)
- func DeleteUserToken(ctx context.Context, token string) error
- func GetEmbedding(ctx context.Context, text string) (vec corpus.Vector, err error)
- func GetHistorySummary(ctx context.Context, history aigc.HistoryItems) (summary string, err error)
- func GetLLMClient() llm.Client
- func GetLLMEmbeddingClient() llm.Client
- func GetLLMSummarizeClient() llm.Client
- func GetSummary(ctx context.Context, text, tpl string) (summary string, err error)
- func GetTemplateForKeyword() string
- func GetTemplateForTitle() string
- func GetUser(ctx context.Context, db ormDB, id string, cols ...string) (obj *convo.User, err error)
- func InitDB(ctx context.Context) error
- func IsKeeper(ctx context.Context) bool
- func LoadPreset() (doc aigc.Preset, err error)
- func LoadTokenWithUser(ctx context.Context, id string) (string, error)
- func OAuthContextWithToken(ctx context.Context, token string) context.Context
- func OAuthTokenFromContext(ctx context.Context) string
- func OpModelCreator(ctx context.Context, obj comm.ModelCreator) (id oid.OID, name string)
- func PatchMCPServer(obj *mcps.Server)
- func ResetSessionBySessionKey(ctx context.Context, sessionKey string) error
- func SaveTokenWithUser(ctx context.Context, id, token string) error
- func SaveUserWithToken(ctx context.Context, user Encoder, token string) error
- func SgtDB(args ...string) *pgx.DB
- func WecomUIDFromContext(ctx context.Context) string
- type ChatLogSpec
- type CobDocumentSpec
- type Conversation
- type ConvoMemorySpec
- type ConvoMessageSpec
- type ConvoSessionSpec
- type ConvoStore
- type ConvoStoreX
- type ConvoThirdUserSpec
- type ConvoUsageRecordSpec
- type ConvoUser
- type ConvoUserSpec
- type CorpuStore
- type CorpuStoreX
- type Encoder
- type ExportArg
- type IUser
- type MCPServerSpec
- type MCPStore
- type MatchSpec
- type Model
- type ModelMeta
- type ModelMetaCreator
- type ModelMetaOwner
- type ModelSpec
- type PageSpec
- type RedisClient
- type StateStore
- type Storage
- type StringsDiff
- type TextSearchSpec
- type User
- type Wrap
Constants ¶
const ( WecomUID = "wecomUID" WecomHead = "wecom:" )
const ( KeywordTpl = "" /* 160-byte string literal not displayed */ TitleTpl = "" /* 186-byte string literal not displayed */ )
const (
Separator = "\n* "
)
const StateExpiration = time.Minute * 15
Variables ¶
var ( ErrNoRows = pgx.ErrNoRows ErrNotFound = pgx.ErrNotFound ErrEmptyKey = pgx.ErrEmptyKey ContextWithColumns = pgx.ContextWithColumns ColumnsFromContext = pgx.ColumnsFromContext ContextWithRelation = pgx.ContextWithRelation RelationFromContext = pgx.RelationFromContext RegisterModel = pgx.RegisterModel )
vars nolint
var (
ErrEmptyParam = errors.New("empty param")
)
Functions ¶
func ContextWithConvoID ¶ added in v0.2.3
ContextWithConvoID 将 csid 添加到 context
func ContextWithWecomUID ¶ added in v0.3.0
func ConvoIDFromContext ¶ added in v0.2.3
ConvoIDFromContext 从 context 获取 csid
func DbOpModelMetaCreator ¶
func DbOpModelMetaCreator(ctx context.Context, db ormDB, obj ModelMetaCreator) (err error)
DbOpModelMetaCreator sets model creator information in database operations
func DbOpModelMetaOwner ¶ added in v0.2.3
func DbOpModelMetaOwner(ctx context.Context, db ormDB, obj ModelMetaOwner) (err error)
func DeleteUserToken ¶ added in v0.2.4
func GetEmbedding ¶
GetEmbedding gets the vector representation of text
func GetHistorySummary ¶
func GetLLMEmbeddingClient ¶
GetLLMEmbeddingClient 获取 Embedding 用 LLM Client
func GetLLMSummarizeClient ¶
GetLLMSummarizeClient 获取 Summarize/Completion 用 LLM Client
func GetSummary ¶
GetSummary 让LLM根据模版要求生成摘要 text tpl 参数为自定义提示内容模版
func GetTemplateForKeyword ¶ added in v0.2.3
func GetTemplateForKeyword() string
func GetTemplateForTitle ¶ added in v0.2.3
func GetTemplateForTitle() string
func LoadPreset ¶
LoadPreset loads preset configuration from file
func LoadTokenWithUser ¶ added in v0.3.0
func OAuthContextWithToken ¶ added in v0.2.4
OAuthContextWithToken 将 token 添加到 context
func OAuthTokenFromContext ¶ added in v0.2.4
OAuthTokenFromContext 从 context 获取 token
func OpModelCreator ¶
OpModelCreator gets model creator information from context
func PatchMCPServer ¶ added in v0.2.4
func ResetSessionBySessionKey ¶ added in v0.3.0
ResetSessionBySessionKey 删除 sessionKey -> csid 的映射,强制重建会话
func SaveTokenWithUser ¶ added in v0.3.0
func SaveUserWithToken ¶ added in v0.2.4
SaveUserWithToken saves user.Encode() into redis
func SgtDB ¶
SgtDB start and return a singleton instance of DB **Attention**: args only used with fist call
func WecomUIDFromContext ¶ added in v0.3.0
Types ¶
type ChatLogSpec ¶
type ChatLogSpec struct {
PageSpec
ModelSpec
// 会话ID
ChatID string `extensions:"x-order=A" form:"csid" json:"csid"`
}
func (*ChatLogSpec) Sift ¶
func (spec *ChatLogSpec) Sift(q *ormQuery) *ormQuery
type CobDocumentSpec ¶
type CobDocumentSpec struct {
PageSpec
ModelSpec
// 主标题 名称
Title string `extensions:"x-order=A" form:"title" json:"title"`
// 小节标题 属性 类别
Heading string `extensions:"x-order=B" form:"heading" json:"heading"`
// 内容 值
Content string `extensions:"x-order=C" form:"content" json:"content"`
}
func (*CobDocumentSpec) CanSort ¶
func (spec *CobDocumentSpec) CanSort(k string) bool
func (*CobDocumentSpec) Sift ¶
func (spec *CobDocumentSpec) Sift(q *ormQuery) *ormQuery
type Conversation ¶
type Conversation interface {
GetID() string
GetOID() oid.OID
GetChannel() string
SetTools(names ...string)
Save(ctx context.Context) error
CountHistory(ctx context.Context) int
AddHistory(ctx context.Context, item *aigc.HistoryItem) error
ListHistory(ctx context.Context) (aigc.HistoryItems, error)
ClearHistory(ctx context.Context) error
}
func GetOrCreateConversationBySessionKey ¶ added in v0.3.0
func GetOrCreateConversationBySessionKey(ctx context.Context, sessionKey string) Conversation
GetOrCreateConversationBySessionKey 根据渠道 sessionKey 查找或创建 Conversation sessionKey 格式: "{channel}:{chatID}:{userID}" 或 "{channel}:{userID}" 查找 Redis 映射获取已绑定的 Conversation OID,若无则创建新 Conversation 并写入映射
func NewConversation ¶
func NewConversation(ctx context.Context, id any) Conversation
NewConversation 创建会话,使用默认 Redis 客户端
type ConvoMemorySpec ¶ added in v0.2.3
type ConvoMemorySpec struct {
PageSpec
ModelSpec
// 所有人编号
OwnerID string `extensions:"x-order=A" form:"ownerID" json:"ownerID"`
// 关键点
Key string `extensions:"x-order=B" form:"key" json:"key"`
// 分类
Cate string `extensions:"x-order=C" form:"cate" json:"cate"`
// 查全部(含内容)
IsFull bool `extensions:"x-order=D" form:"full" json:"full"`
// 只查询自己的
IsOwner bool `extensions:"x-order=E" form:"own" json:"own"`
}
func (*ConvoMemorySpec) Sift ¶ added in v0.2.3
func (spec *ConvoMemorySpec) Sift(q *ormQuery) *ormQuery
func (*ConvoMemorySpec) SiftX ¶ added in v0.2.4
func (spec *ConvoMemorySpec) SiftX(ctx context.Context, q *ormQuery) *ormQuery
type ConvoMessageSpec ¶
type ConvoMessageSpec struct {
PageSpec
ModelSpec
// 会话编号
SessionID string `extensions:"x-order=A" form:"session" json:"session"`
// 角色
Role string `extensions:"x-order=B" form:"role" json:"role"`
}
func (*ConvoMessageSpec) Sift ¶
func (spec *ConvoMessageSpec) Sift(q *ormQuery) *ormQuery
type ConvoSessionSpec ¶
type ConvoSessionSpec struct {
PageSpec
ModelSpec
// 标题
Title string `extensions:"x-order=A" form:"title" json:"title"`
// 状态
// * `open` - 开启
// * `closed` - 关闭
Status convo.SessionStatus `extensions:"x-order=B" form:"status" json:"status" swaggertype:"string"`
// 频道
Channel string `extensions:"x-order=C" form:"channel" json:"channel"`
// 所有者编号 (多值使用逗号分隔)
OwnerID string `extensions:"x-order=D" form:"owner" json:"owner,omitempty"`
}
func (*ConvoSessionSpec) Sift ¶
func (spec *ConvoSessionSpec) Sift(q *ormQuery) *ormQuery
type ConvoStore ¶
type ConvoStore interface {
ConvoStoreX
ListSession(ctx context.Context, spec *ConvoSessionSpec) (data convo.Sessions, total int, err error)
GetSession(ctx context.Context, id string) (obj *convo.Session, err error)
UpdateSession(ctx context.Context, id string, in convo.SessionSet) error
DeleteSession(ctx context.Context, id string) error
ListMessage(ctx context.Context, spec *ConvoMessageSpec) (data convo.Messages, total int, err error)
GetMessage(ctx context.Context, id string) (obj *convo.Message, err error)
DeleteMessage(ctx context.Context, id string) error
ListUser(ctx context.Context, spec *ConvoUserSpec) (data convo.Users, total int, err error)
GetUser(ctx context.Context, id string) (obj *convo.User, err error)
CreateUser(ctx context.Context, in convo.UserBasic) (obj *convo.User, err error)
UpdateUser(ctx context.Context, id string, in convo.UserSet) error
DeleteUser(ctx context.Context, id string) error
ListThirdUser(ctx context.Context, spec *ConvoThirdUserSpec) (data convo.ThirdUsers, total int, err error)
GetThirdUser(ctx context.Context, id string) (obj *convo.ThirdUser, err error)
DeleteThirdUser(ctx context.Context, id string) error
ListMemory(ctx context.Context, spec *ConvoMemorySpec) (data convo.Memories, total int, err error)
GetMemory(ctx context.Context, id string) (obj *convo.Memory, err error)
CreateMemory(ctx context.Context, in convo.MemoryBasic) (obj *convo.Memory, err error)
UpdateMemory(ctx context.Context, id string, in convo.MemorySet) error
DeleteMemory(ctx context.Context, id string) error
ListUsageRecord(ctx context.Context, spec *ConvoUsageRecordSpec) (data convo.UsageRecords, total int, err error)
GetUsageRecord(ctx context.Context, id string) (obj *convo.UsageRecord, err error)
CreateUsageRecord(ctx context.Context, in convo.UsageRecordBasic) (obj *convo.UsageRecord, err error)
DeleteUsageRecord(ctx context.Context, id string) error
}
type ConvoStoreX ¶
type ConvoStoreX interface {
SaveSession(ctx context.Context, sess *convo.Session) error
SaveUser(ctx context.Context, ub convo.UserBasic, id string) error
SyncUserFromOAuth(ctx context.Context, user IUser) error
GetUserWith(ctx context.Context, uid string) (*ConvoUser, error)
GetMyMemoryWithKey(ctx context.Context, key string) (*convo.Memory, error)
ListMyMomory(ctx context.Context, spec *ConvoMemorySpec) (convo.Memories, error)
MatchMemories(ctx context.Context, ms MatchSpec) (data convo.Memories, err error)
SyncEmbeddingMemories(ctx context.Context, spec *ConvoMemorySpec) error
InvokerForMemoryList() mcps.Invoker
InvokerForMemoryRecall() mcps.Invoker
InvokerForMemoryStore() mcps.Invoker
InvokerForMemoryForget() mcps.Invoker
}
ConvoStoreX is the conversation storage extension interface
type ConvoThirdUserSpec ¶ added in v0.3.0
type ConvoThirdUserSpec struct {
PageSpec
ModelSpec
// 所有人编号
OwnerID string `extensions:"x-order=A" form:"ownerID" json:"ownerID"`
}
func (*ConvoThirdUserSpec) Sift ¶ added in v0.3.0
func (spec *ConvoThirdUserSpec) Sift(q *ormQuery) *ormQuery
type ConvoUsageRecordSpec ¶ added in v0.2.4
type ConvoUsageRecordSpec struct {
PageSpec
ModelSpec
// 会话编号
SessionID string `extensions:"x-order=A" form:"session" json:"session"`
}
func (*ConvoUsageRecordSpec) Sift ¶ added in v0.2.4
func (spec *ConvoUsageRecordSpec) Sift(q *ormQuery) *ormQuery
type ConvoUserSpec ¶
type ConvoUserSpec struct {
PageSpec
ModelSpec
// 登录名 唯一
Username string `extensions:"x-order=A" form:"username" json:"username"`
// 昵称
Nickname string `extensions:"x-order=B" form:"nickname" json:"nickname"`
// 邮箱
Email string `extensions:"x-order=C" form:"email" json:"email,omitempty"`
// 电话
Phone string `extensions:"x-order=D" form:"phone" json:"phone,omitempty"`
}
func (*ConvoUserSpec) CanSort ¶ added in v0.3.0
func (spec *ConvoUserSpec) CanSort(k string) bool
func (*ConvoUserSpec) Sift ¶
func (spec *ConvoUserSpec) Sift(q *ormQuery) *ormQuery
type CorpuStore ¶ added in v0.2.3
type CorpuStore interface {
CorpuStoreX
ListDocument(ctx context.Context, spec *CobDocumentSpec) (data corpus.Documents, total int, err error)
GetDocument(ctx context.Context, id string) (obj *corpus.Document, err error)
CreateDocument(ctx context.Context, in corpus.DocumentBasic) (obj *corpus.Document, err error)
UpdateDocument(ctx context.Context, id string, in corpus.DocumentSet) error
DeleteDocument(ctx context.Context, id string) error
GetDocVector(ctx context.Context, id string) (obj *corpus.DocVector, err error)
CreateDocVector(ctx context.Context, in corpus.DocVectorBasic) (obj *corpus.DocVector, err error)
DeleteDocVector(ctx context.Context, id string) error
CreateChatLog(ctx context.Context, in corpus.ChatLogBasic) (obj *corpus.ChatLog, err error)
GetChatLog(ctx context.Context, id string) (obj *corpus.ChatLog, err error)
ListChatLog(ctx context.Context, spec *ChatLogSpec) (data corpus.ChatLogs, total int, err error)
DeleteChatLog(ctx context.Context, id string) error
}
type CorpuStoreX ¶ added in v0.2.3
type CorpuStoreX interface {
ImportDocs(ctx context.Context, r io.Reader, lw io.Writer) error
ExportDocs(ctx context.Context, ea ExportArg) error
SyncEmbeddingDocments(ctx context.Context, spec *CobDocumentSpec) error
MatchDocments(ctx context.Context, ms MatchSpec) (data corpus.Documents, err error)
MatchVectorWith(ctx context.Context, vec corpus.Vector, threshold float32, limit int) (data corpus.DocMatches, err error)
InvokerForSearch() mcps.Invoker
InvokerForCreate() mcps.Invoker
}
CorpuStoreX is the knowledge base storage extension interface
type ExportArg ¶
type ExportArg struct {
Spec *CobDocumentSpec
Out io.Writer
Format string // csv,jsonl
}
ExportArg is the arguments for document export
type MCPServerSpec ¶
type MCPServerSpec struct {
PageSpec
ModelSpec
// 名称
Name string `extensions:"x-order=A" form:"name" json:"name"`
// 传输类型 (支持混合解码)
// * `stdIO` - 标准IO
// * `sse`
// * `streamable`
// * `inMemory` - 内部运行
TransType string `extensions:"x-order=B" form:"transType" json:"transType" swaggertype:"string"`
// 是否激活
IsActive string `extensions:"x-order=C" form:"isActive" json:"isActive"`
// 连接状态
// * `disconnected` - 断开
// * `connecting` - 连接中
// * `connected` - 已连接
Status mcps.Status `extensions:"x-order=D" form:"status" json:"status" swaggertype:"string"`
}
func (*MCPServerSpec) Sift ¶
func (spec *MCPServerSpec) Sift(q *ormQuery) *ormQuery
type MCPStore ¶
type MCPStore interface {
ListServer(ctx context.Context, spec *MCPServerSpec) (data mcps.Servers, total int, err error)
GetServer(ctx context.Context, id string) (obj *mcps.Server, err error)
CreateServer(ctx context.Context, in mcps.ServerBasic) (obj *mcps.Server, err error)
UpdateServer(ctx context.Context, id string, in mcps.ServerSet) error
DeleteServer(ctx context.Context, id string) error
}
type ModelMetaCreator ¶
type ModelMetaCreator interface {
ModelMeta
comm.ModelCreator
}
ModelMetaCreator is the model metadata creator interface
type ModelMetaOwner ¶ added in v0.2.3
type ModelMetaOwner interface {
ModelMeta
comm.ModelCreator
comm.ModelOwner
}
type StateStore ¶ added in v0.2.4
type Storage ¶
type Storage interface {
Preset() aigc.Preset
Corpus() CorpuStore // gened
KB() CorpuStore // alias
MCP() MCPStore // gened
Convo() ConvoStore // gened
State() StateStore
}
Storage is the storage interface defining access methods for various data stores
type StringsDiff ¶
type StringsDiff = pgx.StringsDiff
type TextSearchSpec ¶
type TextSearchSpec = pgx.TextSearchSpec
type User ¶
func LoadUserFromToken ¶ added in v0.2.4
LoadUserFromToken loads saved user from redis by token
type Wrap ¶
type Wrap struct {
// contains filtered or unexported fields
}
Wrap implements Storages
func (*Wrap) Convo ¶
func (w *Wrap) Convo() ConvoStore
func (*Wrap) Corpus ¶ added in v0.2.3
func (w *Wrap) Corpus() CorpuStore
func (*Wrap) KB ¶
func (w *Wrap) KB() CorpuStore
func (*Wrap) State ¶ added in v0.2.4
func (w *Wrap) State() StateStore