stores

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2026 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WecomUID  = "wecomUID"
	WecomHead = "wecom:"
)
View Source
const (
	KeywordTpl = "" /* 160-byte string literal not displayed */

	TitleTpl = "" /* 186-byte string literal not displayed */
)
View Source
const (
	Separator = "\n* "
)
View Source
const StateExpiration = time.Minute * 15

Variables

View Source
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

View Source
var (
	ErrEmptyParam = errors.New("empty param")
)

Functions

func ContextWithConvoID added in v0.2.3

func ContextWithConvoID(ctx context.Context, csid string) context.Context

ContextWithConvoID 将 csid 添加到 context

func ContextWithWecomUID added in v0.3.0

func ContextWithWecomUID(ctx context.Context, uid string) context.Context

func ConvoIDFromContext added in v0.2.3

func ConvoIDFromContext(ctx context.Context) string

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 DeleteUserToken(ctx context.Context, token string) error

func GetEmbedding

func GetEmbedding(ctx context.Context, text string) (vec corpus.Vector, err error)

GetEmbedding gets the vector representation of text

func GetHistorySummary

func GetHistorySummary(ctx context.Context, history aigc.HistoryItems) (summary string, err error)

func GetLLMClient

func GetLLMClient() llm.Client

GetLLMClient 获取 LLM Client (默认 Interact)

func GetLLMEmbeddingClient

func GetLLMEmbeddingClient() llm.Client

GetLLMEmbeddingClient 获取 Embedding 用 LLM Client

func GetLLMSummarizeClient

func GetLLMSummarizeClient() llm.Client

GetLLMSummarizeClient 获取 Summarize/Completion 用 LLM Client

func GetSummary

func GetSummary(ctx context.Context, text, tpl string) (summary string, err error)

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 GetUser added in v0.2.3

func GetUser(ctx context.Context, db ormDB, id string, cols ...string) (obj *convo.User, err error)

func InitDB

func InitDB(ctx context.Context) error

InitDB initializes database schema and runs migrations

func IsKeeper

func IsKeeper(ctx context.Context) bool

IsKeeper checks if the user in the current context has keeper role or UID

func LoadPreset

func LoadPreset() (doc aigc.Preset, err error)

LoadPreset loads preset configuration from file

func LoadTokenWithUser added in v0.3.0

func LoadTokenWithUser(ctx context.Context, id string) (string, error)

func OAuthContextWithToken added in v0.2.4

func OAuthContextWithToken(ctx context.Context, token string) context.Context

OAuthContextWithToken 将 token 添加到 context

func OAuthTokenFromContext added in v0.2.4

func OAuthTokenFromContext(ctx context.Context) string

OAuthTokenFromContext 从 context 获取 token

func OpModelCreator

func OpModelCreator(ctx context.Context, obj comm.ModelCreator) (id oid.OID, name string)

OpModelCreator gets model creator information from context

func PatchMCPServer added in v0.2.4

func PatchMCPServer(obj *mcps.Server)

func ResetSessionBySessionKey added in v0.3.0

func ResetSessionBySessionKey(ctx context.Context, sessionKey string) error

ResetSessionBySessionKey 删除 sessionKey -> csid 的映射,强制重建会话

func SaveTokenWithUser added in v0.3.0

func SaveTokenWithUser(ctx context.Context, id, token string) error

func SaveUserWithToken added in v0.2.4

func SaveUserWithToken(ctx context.Context, user Encoder, token string) error

SaveUserWithToken saves user.Encode() into redis

func SgtDB

func SgtDB(args ...string) *pgx.DB

SgtDB start and return a singleton instance of DB **Attention**: args only used with fist call

func WecomUIDFromContext added in v0.3.0

func WecomUIDFromContext(ctx context.Context) string

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 ConvoUser

type ConvoUser = convo.User

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 Encoder added in v0.3.0

type Encoder = auth.Encoder

type ExportArg

type ExportArg struct {
	Spec   *CobDocumentSpec
	Out    io.Writer
	Format string // csv,jsonl
}

ExportArg is the arguments for document export

type IUser added in v0.3.0

type IUser interface {
	auth.IUser

	GetEmail() string
	GetPhone() string
}

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 MatchSpec

type MatchSpec struct {
	Query        string
	Threshold    float32
	Limit        int
	SkipKeywords bool
}

MatchSpec defines the document matching specification

type Model

type Model = pgx.Model

type ModelMeta

type ModelMeta = comm.ModelMeta

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 ModelSpec

type ModelSpec = pgx.ModelSpec

type PageSpec

type PageSpec = comm.PageSpec

type RedisClient

type RedisClient = redis.UniversalClient

RedisClient is the Redis client type

func SgtRC

func SgtRC() RedisClient

SgtRC start return a singleton instance of redis client

type StateStore added in v0.2.4

type StateStore interface {
	Save(w http.ResponseWriter, state string) error
	Verify(r *http.Request, state string) bool
	Wipe(w http.ResponseWriter, state string)
}

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

type User = auth.User

func LoadUserFromToken added in v0.2.4

func LoadUserFromToken(ctx context.Context, token string) (*User, error)

LoadUserFromToken loads saved user from redis by token

func UserFromContext

func UserFromContext(ctx context.Context) (user *User, ok bool)

UserFromContext gets user information from context

type Wrap

type Wrap struct {
	// contains filtered or unexported fields
}

Wrap implements Storages

func NewWithDB

func NewWithDB(db *pgx.DB) *Wrap

NewWithDB return new instance of Wrap

func Sgt

func Sgt() *Wrap

Sgt start and return a singleton instance of Storage

func (*Wrap) Close

func (w *Wrap) Close()

Close closes the database connection

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) MCP

func (w *Wrap) MCP() MCPStore

func (*Wrap) Preset added in v0.3.0

func (w *Wrap) Preset() aigc.Preset

func (*Wrap) State added in v0.2.4

func (w *Wrap) State() StateStore

Jump to

Keyboard shortcuts

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